Projects
osmocom:master
osmo-uecups
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 21
View file
commit_e005d1c295b5a5e5ad0b694f71f87b2199700d0c.txt
Deleted
View file
commit_e6a81ba3512e3f579118497764623de0e9a2e546.txt
Added
View file
osmo-uecups_0.2.2.16.e005.dsc
Deleted
@@ -1,19 +0,0 @@ -Format: 3.0 (native) -Source: osmo-uecups -Binary: osmo-uecups -Architecture: any -Version: 0.2.2.16.e005 -Maintainer: Osmocom team <openbsc@lists.osmocom.org> -Homepage: https://osmocom.org/projects/osmo-uecups -Standards-Version: 3.9.8 -Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-uecups -Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-uecups -Build-Depends: debhelper (>= 10), dh-autoreconf, autotools-dev, autoconf, automake, libtool, pkg-config, libjansson-dev, libnl-route-3-dev, libosmocore-dev (>= 1.9.0), libosmo-netif-dev (>= 1.4.0), libsctp-dev, osmo-gsm-manuals-dev (>= 1.5.0) -Package-List: - osmo-uecups deb net extra arch=any -Checksums-Sha1: - 171c8e5d047d8b7750f4c2c17d248574e1c0ded3 30764 osmo-uecups_0.2.2.16.e005.tar.xz -Checksums-Sha256: - 95f982435ddc50b07c4761407260fdc5b4ec7d6a9896ad1dbdaffc54f64b90d9 30764 osmo-uecups_0.2.2.16.e005.tar.xz -Files: - d67f44f87436266ca548268475267927 30764 osmo-uecups_0.2.2.16.e005.tar.xz
View file
osmo-uecups_0.2.2.17.e6a8.dsc
Added
@@ -0,0 +1,19 @@ +Format: 3.0 (native) +Source: osmo-uecups +Binary: osmo-uecups +Architecture: any +Version: 0.2.2.17.e6a8 +Maintainer: Osmocom team <openbsc@lists.osmocom.org> +Homepage: https://osmocom.org/projects/osmo-uecups +Standards-Version: 3.9.8 +Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-uecups +Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-uecups +Build-Depends: debhelper (>= 10), dh-autoreconf, autotools-dev, autoconf, automake, libtool, pkg-config, libjansson-dev, libnl-route-3-dev, libosmocore-dev (>= 1.9.0), libosmo-netif-dev (>= 1.4.0), libsctp-dev, osmo-gsm-manuals-dev (>= 1.5.0) +Package-List: + osmo-uecups deb net extra arch=any +Checksums-Sha1: + 55194d67ad4a9d17d89072588a3645ac01f7895f 30896 osmo-uecups_0.2.2.17.e6a8.tar.xz +Checksums-Sha256: + 748f4d462d9b1d804b373df64ce5afabd56bc48c118f33f323d29712b9456e3b 30896 osmo-uecups_0.2.2.17.e6a8.tar.xz +Files: + 5ca2be29f3698f1202a6a0e089a1828c 30896 osmo-uecups_0.2.2.17.e6a8.tar.xz
View file
osmo-uecups_0.2.2.16.e005.tar.xz/.tarball-version -> osmo-uecups_0.2.2.17.e6a8.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -0.2.2.16-e005 +0.2.2.17-e6a8
View file
osmo-uecups_0.2.2.16.e005.tar.xz/daemon/gtp_endpoint.c -> osmo-uecups_0.2.2.17.e6a8.tar.xz/daemon/gtp_endpoint.c
Changed
@@ -27,6 +27,16 @@ #define LOGEP(ep, lvl, fmt, args ...) \ LOGP(DEP, lvl, "%s: " fmt, (ep)->name, ## args) +/* LOGEP "No Cancel": Use within the pthread which can be pthread_cancel()ed, in + * order to avoid exiting with the logging mutex held and causing a deadlock afterwards. */ +#define LOGEP_NC(ep, lvl, fmt, args ...) \ + do { \ + int _old_cancelst_unused; \ + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &_old_cancelst_unused); \ + LOGEP(ep, lvl, fmt, ## args); \ + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &_old_cancelst_unused); \ + } while (0) + /*********************************************************************** * GTP Endpoint (UDP socket) ***********************************************************************/ @@ -42,24 +52,24 @@ uint16_t gtp_len; if (nread < sizeof(*gtph)) { - LOGEP(ep, LOGL_NOTICE, "Short read: %u < %lu\n", nread, sizeof(*gtph)); + LOGEP_NC(ep, LOGL_NOTICE, "Short read: %u < %lu\n", nread, sizeof(*gtph)); return; } gtph = (struct gtp1_header *)buffer; /* check GTP header contents */ if ((gtph->flags & 0xf0) != 0x30) { - LOGEP(ep, LOGL_NOTICE, "Unexpected GTP Flags: 0x%02x\n", gtph->flags); + LOGEP_NC(ep, LOGL_NOTICE, "Unexpected GTP Flags: 0x%02x\n", gtph->flags); return; } if (gtph->type != GTP_TPDU) { - LOGEP(ep, LOGL_NOTICE, "Unexpected GTP Message Type: 0x%02x\n", gtph->type); + LOGEP_NC(ep, LOGL_NOTICE, "Unexpected GTP Message Type: 0x%02x\n", gtph->type); return; } gtp_len = ntohs(gtph->length); if (sizeof(*gtph)+gtp_len > nread) { - LOGEP(ep, LOGL_NOTICE, "Short GTP Message: %lu < len=%u\n", + LOGEP_NC(ep, LOGL_NOTICE, "Short GTP Message: %lu < len=%u\n", sizeof(*gtph)+gtp_len, nread); return; } @@ -69,7 +79,7 @@ if (gtph->flags & GTP1_F_MASK) { const struct gtp1_exthdr *exthdr = (const struct gtp1_exthdr *)payload; if (gtp_len < 4) { - LOGEP(ep, LOGL_NOTICE, "Short GTP Message according to flags 0x%02x: %lu < len=%u\n", + LOGEP_NC(ep, LOGL_NOTICE, "Short GTP Message according to flags 0x%02x: %lu < len=%u\n", gtph->flags, sizeof(*gtph) + gtp_len, nread); return; } @@ -79,13 +89,13 @@ while (*it != 0) { unsigned int ext_len; if (gtp_len < 1) { - LOGEP(ep, LOGL_NOTICE, "Short GTP Message according to flags 0x%02x: %lu < len=%u\n", + LOGEP_NC(ep, LOGL_NOTICE, "Short GTP Message according to flags 0x%02x: %lu < len=%u\n", gtph->flags, sizeof(*gtph) + gtp_len, nread); return; } ext_len = 1 + 1 + it1 + 1; if (gtp_len < ext_len) { - LOGEP(ep, LOGL_NOTICE, "Short GTP Message according to flags 0x%02x: %lu < len=%u\n", + LOGEP_NC(ep, LOGL_NOTICE, "Short GTP Message according to flags 0x%02x: %lu < len=%u\n", gtph->flags, sizeof(*gtph) + gtp_len, nread); return; } @@ -100,7 +110,7 @@ t = _gtp_tunnel_find_r(d, teid, ep); if (!t) { pthread_rwlock_unlock(&d->rwlock); - LOGEP(ep, LOGL_NOTICE, "Unable to find tunnel for TEID=0x%08x\n", teid); + LOGEP_NC(ep, LOGL_NOTICE, "Unable to find tunnel for TEID=0x%08x\n", teid); return; } outfd = t->tun_dev->fd; @@ -109,12 +119,16 @@ /* 3) write to TUN device */ rc = write(outfd, payload, gtp_len); if (rc < gtp_len) { - LOGEP(ep, LOGL_FATAL, "Error writing to tun device %s\n", strerror(errno)); + LOGEP_NC(ep, LOGL_FATAL, "Error writing to tun device %s\n", strerror(errno)); exit(1); } } -/* one thread for reading from each GTP/UDP socket (GTP decapsulation -> tun) */ +/* one thread for reading from each GTP/UDP socket (GTP decapsulation -> tun) + * IMPORTANT!: All logging functions in this function block must be called with + * PTHREAD_CANCEL_DISABLE set, otherwise the thread could be cancelled while + * holding the logging mutex, hence causing deadlock with main (or other) + * thread. */ static void *gtp_endpoint_thread(void *arg) { struct gtp_endpoint *ep = (struct gtp_endpoint *)arg; @@ -130,7 +144,7 @@ /* 1) read GTP packet from UDP socket */ rc = recvfrom(ep->fd, buffer, sizeof(buffer), 0, (struct sockaddr *)NULL, 0); if (rc < 0) { - LOGEP(ep, LOGL_FATAL, "Error reading from UDP socket: %s\n", strerror(errno)); + LOGEP_NC(ep, LOGL_FATAL, "Error reading from UDP socket: %s\n", strerror(errno)); exit(1); } handle_gtp1u(ep, buffer, rc);
View file
osmo-uecups_0.2.2.16.e005.tar.xz/debian/changelog -> osmo-uecups_0.2.2.17.e6a8.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -osmo-uecups (0.2.2.16.e005) unstable; urgency=medium +osmo-uecups (0.2.2.17.e6a8) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom master feed - -- Osmocom OBS scripts <info@osmocom.org> Fri, 01 Aug 2025 11:25:33 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Fri, 01 Aug 2025 11:55:32 +0000 osmo-uecups (0.2.2) unstable; urgency=medium
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.