Hello community, here is the log from the commit of package libosmo-abis for openSUSE:Factory checked in at 2020-01-08 17:55:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libosmo-abis (Old) and /work/SRC/openSUSE:Factory/.libosmo-abis.new.6675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libosmo-abis" Wed Jan 8 17:55:12 2020 rev:11 rq:761539 version:0.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/libosmo-abis/libosmo-abis.changes 2019-08-22 10:49:56.753719424 +0200 +++ /work/SRC/openSUSE:Factory/.libosmo-abis.new.6675/libosmo-abis.changes 2020-01-08 17:55:26.893669175 +0100 @@ -1,0 +2,9 @@ +Sun Jan 5 10:47:01 UTC 2020 - Martin Hauke <[email protected]> + +- Update to new upstream release 0.8.0 + * input/ipa_keepalive.c: make sure IPA keepalive FSM is registered + * input/ipaccess.c: propagate errors from ipa_parse_unitid() + * ipa: Allow setting local addr and port for struct ipa_client_conn + * ipa: ipa_server_link_close() add checks of link state + +------------------------------------------------------------------- Old: ---- libosmo-abis-0.7.0.tar.xz New: ---- libosmo-abis-0.8.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libosmo-abis.spec ++++++ --- /var/tmp/diff_new_pack.MP6iIz/_old 2020-01-08 17:55:27.325669402 +0100 +++ /var/tmp/diff_new_pack.MP6iIz/_new 2020-01-08 17:55:27.329669404 +0100 @@ -1,7 +1,7 @@ # # spec file for package libosmo-abis # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,10 +16,10 @@ # -%define version_unconverted 0.7.0 +%define version_unconverted 0.8.0 Name: libosmo-abis -Version: 0.7.0 +Version: 0.8.0 Release: 0 Summary: Osmocom library for A-bis interface between BTS and BSC License: AGPL-3.0-or-later AND GPL-2.0-or-later @@ -108,7 +108,11 @@ %build echo "%version" >.tarball-version autoreconf -fiv -%configure --enable-shared --disable-static --includedir="%_includedir/%name" +%configure \ + --enable-shared \ + --disable-static \ + --disable-dahdi \ + --includedir="%_includedir/%name" make %{?_smp_mflags} %install ++++++ _service ++++++ --- /var/tmp/diff_new_pack.MP6iIz/_old 2020-01-08 17:55:27.345669412 +0100 +++ /var/tmp/diff_new_pack.MP6iIz/_new 2020-01-08 17:55:27.345669412 +0100 @@ -2,8 +2,8 @@ <service name="tar_scm" mode="disabled"> <param name="scm">git</param> <param name="url">git://git.osmocom.org/libosmo-abis</param> - <param name="parent-tag">0.7.0</param> - <param name="versionformat">0.7.0</param> + <param name="parent-tag">0.8.0</param> + <param name="versionformat">0.8.0</param> </service> <service name="recompress" mode="disabled"> <param name="file">*.tar</param> ++++++ libosmo-abis-0.7.0.tar.xz -> libosmo-abis-0.8.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/configure.ac new/libosmo-abis-0.8.0/configure.ac --- old/libosmo-abis-0.7.0/configure.ac 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/configure.ac 2020-01-02 20:53:32.000000000 +0100 @@ -64,7 +64,16 @@ PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.0.0) PKG_CHECK_MODULES(ORTP, ortp >= 0.22.0) -AC_CHECK_HEADERS(dahdi/user.h,,AC_MSG_WARN(DAHDI input driver will not be built)) +AC_ARG_ENABLE([dahdi], + AC_HELP_STRING([--disable-dahdi], + [disable support for DAHID ISDN (E1/T1) cards [default=yes]]), + [enable_dahdi="$enableval"], [enable_dahdi="yes"]) +AM_CONDITIONAL(ENABLE_DAHDI, test "x$enable_dahdi" = "xyes") +if test "x$enable_dahdi" = "xyes"; then + AC_CHECK_HEADERS([dahdi/user.h],[],[AC_MSG_ERROR([DAHDI input driver enabled but DAHDI not found])]) +else + AC_MSG_WARN([DAHDI input driver will not be built]) +fi AC_ARG_ENABLE(sanitize, [AS_HELP_STRING( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/debian/changelog new/libosmo-abis-0.8.0/debian/changelog --- old/libosmo-abis-0.7.0/debian/changelog 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/debian/changelog 2020-01-02 20:53:32.000000000 +0100 @@ -1,3 +1,23 @@ +libosmo-abis (0.8.0) unstable; urgency=medium + + [ Alexander Couzens ] + * ipa: ipa_server_link_close() add checks of link state + + [ Pau Espin Pedrol ] + * ipa: Allow setting local addr and port for struct ipa_client_conn + + [ Harald Welte ] + * dahdi: Use ioctl(DAHDI_SPECIFY) instead of legacy /dev/dahdi/%u + * Enable DAHDI support by default; require --disable-dahdi otherwise + + [ Vadim Yanitskiy ] + * input/ipaccess.c: propagate errors from ipa_parse_unitid() + * input/ipaccess.c: fix debug message on receipt of IPAC_MSGT_ID_GET + * e1_input.c: make reference counting get() / put() more verbose + * input/ipa_keepalive.c: make sure IPA keepalive FSM is registered + + -- Pau Espin Pedrol <[email protected]> Thu, 02 Jan 2020 20:53:32 +0100 + libosmo-abis (0.7.0) unstable; urgency=medium [ Max ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/debian/control new/libosmo-abis-0.8.0/debian/control --- old/libosmo-abis-0.7.0/debian/control 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/debian/control 2020-01-02 20:53:32.000000000 +0100 @@ -6,6 +6,7 @@ autotools-dev, autoconf, automake, + dahdi-source, libtool, dh-autoreconf, libdpkg-perl, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/include/osmocom/abis/ipa.h new/libosmo-abis-0.8.0/include/osmocom/abis/ipa.h --- old/libosmo-abis-0.7.0/include/osmocom/abis/ipa.h 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/include/osmocom/abis/ipa.h 2020-01-02 20:53:32.000000000 +0100 @@ -78,6 +78,8 @@ int (*write_cb)(struct ipa_client_conn *link); void *data; struct msgb *pending_msg; + const char *local_addr; + uint16_t local_port; }; struct ipa_client_conn * @@ -86,7 +88,16 @@ void (*updown)(struct ipa_client_conn *link, int), int (*read_cb)(struct ipa_client_conn *link, struct msgb *msgb), int (*write_cb)(struct ipa_client_conn *link), - void *data); + void *data) OSMO_DEPRECATED("Use ipa_client_conn_create2() instead"); +struct ipa_client_conn * +ipa_client_conn_create2(void *ctx, struct e1inp_ts *ts, + int priv_nr, const char *loc_addr, uint16_t loc_port, + const char *rem_addr, uint16_t rem_port, + void (*updown_cb)(struct ipa_client_conn *link, int up), + int (*read_cb)(struct ipa_client_conn *link, + struct msgb *msgb), + int (*write_cb)(struct ipa_client_conn *link), + void *data); void ipa_client_conn_destroy(struct ipa_client_conn *link); int ipa_client_conn_open(struct ipa_client_conn *link); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/src/Makefile.am new/libosmo-abis-0.8.0/src/Makefile.am --- old/libosmo-abis-0.7.0/src/Makefile.am 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/src/Makefile.am 2020-01-02 20:53:32.000000000 +0100 @@ -1,7 +1,7 @@ # This is _NOT_ the library release version, it's an API version. # Please read chapter "Library interface versions" of the libtool documentation # before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html -ABIS_LIBVERSION=7:0:1 +ABIS_LIBVERSION=8:0:2 TRAU_LIBVERSION=4:0:2 AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) @@ -19,7 +19,6 @@ ipa_proxy.c \ subchan_demux.c \ trau_frame.c \ - input/dahdi.c \ input/ipa.c \ input/ipa_keepalive.c \ input/ipaccess.c \ @@ -28,6 +27,9 @@ input/misdn.c \ input/rs232.c \ input/unixsocket.c +if ENABLE_DAHDI +libosmoabis_la_SOURCES += input/dahdi.c +endif libosmotrau_la_CFLAGS = $(AM_CFLAGS) $(ORTP_CFLAGS) libosmotrau_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(TRAU_LIBVERSION) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/src/e1_input.c new/libosmo-abis-0.8.0/src/e1_input.c --- old/libosmo-abis-0.7.0/src/e1_input.c 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/src/e1_input.c 2020-01-02 20:53:32.000000000 +0100 @@ -419,12 +419,19 @@ void e1inp_line_get(struct e1inp_line *line) { - line->refcnt++; + int old_refcnt = line->refcnt++; + + LOGP(DLINP, LOGL_DEBUG, "Line '%s' (%p) reference count get: %d -> %d\n", + line->name, line, old_refcnt, line->refcnt); } void e1inp_line_put(struct e1inp_line *line) { - line->refcnt--; + int old_refcnt = line->refcnt--; + + LOGP(DLINP, LOGL_DEBUG, "Line '%s' (%p) reference count put: %d -> %d\n", + line->name, line, old_refcnt, line->refcnt); + if (line->refcnt == 0) { /* Remove our counter group from libosmocore's global counter * list if we are freeing the last remaining talloc context. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/src/input/dahdi.c new/libosmo-abis-0.8.0/src/input/dahdi.c --- old/libosmo-abis-0.7.0/src/input/dahdi.c 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/src/input/dahdi.c 2020-01-02 20:53:32.000000000 +0100 @@ -1,6 +1,6 @@ /* OpenBSC Abis input driver for DAHDI */ -/* (C) 2008-2011 by Harald Welte <[email protected]> +/* (C) 2008-2019 by Harald Welte <[email protected]> * (C) 2009 by Holger Hans Peter Freyther <[email protected]> * (C) 2010 by Digium and Matthew Fredrickson <[email protected]> * @@ -26,8 +26,6 @@ #include "config.h" -#ifdef HAVE_DAHDI_USER_H - #include <stdio.h> #include <unistd.h> #include <stdlib.h> @@ -603,6 +601,33 @@ return 0; } +static int dahdi_open_slot(int dahdi_chan_nr) +{ + int rc, fd; +#ifndef DAHDI_SPECIFY + char openstr[128]; + snprintf(openstr, sizeof(openstr), "/dev/dahdi/%d", dev_nr); +#else + const char *openstr = "/dev/dahdi/channel"; +#endif + rc = open(openstr, O_RDWR | O_NONBLOCK); + if (rc < 0) { + LOGP(DLINP, LOGL_ERROR, "DAHDI: could not open %s %s\n", openstr, strerror(errno)); + return -EIO; + } + fd = rc; +#ifdef DAHDI_SPECIFY + rc = ioctl(fd, DAHDI_SPECIFY, &dahdi_chan_nr); + if (rc < 0) { + close(fd); + LOGP(DLINP, LOGL_ERROR, "DAHDI: could not DAHDI_SPECIFY %d: %s\n", + dahdi_chan_nr, strerror(errno)); + return -EIO; + } +#endif + return fd; +} + static int dahdi_e1_setup(struct e1inp_line *line) { struct span_cfg *scfg; @@ -623,7 +648,6 @@ /* TS0 is CRC4, don't need any fd for it */ for (ts = 1; ts <= scfg->chan_num; ts++) { unsigned int idx = ts-1; - char openstr[128]; struct e1inp_ts *e1i_ts = &line->ts[idx]; struct osmo_fd *bfd = &e1i_ts->driver.dahdi.fd; int dev_nr; @@ -640,7 +664,6 @@ bfd->data = line; bfd->priv_nr = ts; bfd->cb = dahdi_fd_cb; - snprintf(openstr, sizeof(openstr), "/dev/dahdi/%d", dev_nr); switch (e1i_ts->type) { case E1INP_TS_TYPE_NONE: @@ -657,13 +680,9 @@ break; case E1INP_TS_TYPE_SIGN: if (!bfd->fd) - bfd->fd = open(openstr, O_RDWR | O_NONBLOCK); - if (bfd->fd == -1) { - LOGP(DLINP, LOGL_ERROR, - "%s could not open %s %s\n", - __func__, openstr, strerror(errno)); + bfd->fd = dahdi_open_slot(dev_nr); + if (bfd->fd < 0) return -EIO; - } bfd->when = BSC_FD_READ | BSC_FD_EXCEPT; ret = dahdi_set_bufinfo(bfd->fd, 1); if (ret < 0) @@ -676,13 +695,9 @@ break; case E1INP_TS_TYPE_HDLC: if (!bfd->fd) - bfd->fd = open(openstr, O_RDWR | O_NONBLOCK); - if (bfd->fd == -1) { - LOGP(DLINP, LOGL_ERROR, - "%s could not open %s %s\n", - __func__, openstr, strerror(errno)); + bfd->fd = dahdi_open_slot(dev_nr); + if (bfd->fd < 0) return -EIO; - } bfd->when = BSC_FD_READ | BSC_FD_EXCEPT; ret = dahdi_set_bufinfo(bfd->fd, 1); if (ret < 0) @@ -696,13 +711,9 @@ e1i_ts->lapd = NULL; } if (!bfd->fd) - bfd->fd = open(openstr, O_RDWR | O_NONBLOCK); - if (bfd->fd == -1) { - LOGP(DLINP, LOGL_ERROR, - "%s could not open %s %s\n", - __func__, openstr, strerror(errno)); + bfd->fd = dahdi_open_slot(dev_nr); + if (bfd->fd < 0) return -EIO; - } ret = dahdi_set_bufinfo(bfd->fd, 0); if (ret < 0) return -EIO; @@ -713,12 +724,8 @@ break; } - if (bfd->fd < 0) { - LOGP(DLINP, LOGL_ERROR, - "%s could not open %s %s\n", - __func__, openstr, strerror(errno)); + if (bfd->fd < 0) return bfd->fd; - } ret = osmo_fd_register(bfd); if (ret < 0) { @@ -747,5 +754,3 @@ /* register the driver with the core */ return e1inp_driver_register(&dahdi_driver); } - -#endif /* HAVE_DAHDI_USER_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/src/input/ipa.c new/libosmo-abis-0.8.0/src/input/ipa.c --- old/libosmo-abis-0.7.0/src/input/ipa.c 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/src/input/ipa.c 2020-01-02 20:53:32.000000000 +0100 @@ -155,6 +155,20 @@ int (*write_cb)(struct ipa_client_conn *link), void *data) { + return ipa_client_conn_create2(ctx, ts, priv_nr, NULL, 0, addr, port, + updown_cb, read_cb, write_cb, data); +} + +struct ipa_client_conn * +ipa_client_conn_create2(void *ctx, struct e1inp_ts *ts, + int priv_nr, const char *loc_addr, uint16_t loc_port, + const char *rem_addr, uint16_t rem_port, + void (*updown_cb)(struct ipa_client_conn *link, int up), + int (*read_cb)(struct ipa_client_conn *link, + struct msgb *msgb), + int (*write_cb)(struct ipa_client_conn *link), + void *data) +{ struct ipa_client_conn *ipa_link; ipa_link = talloc_zero(ctx, struct ipa_client_conn); @@ -181,8 +195,10 @@ ipa_link->ofd->data = ipa_link; ipa_link->ofd->fd = -1; ipa_link->state = IPA_CLIENT_LINK_STATE_CONNECTING; - ipa_link->addr = talloc_strdup(ipa_link, addr); - ipa_link->port = port; + ipa_link->local_addr = talloc_strdup(ipa_link, loc_addr); + ipa_link->local_port = loc_port; + ipa_link->addr = talloc_strdup(ipa_link, rem_addr); + ipa_link->port = rem_port; ipa_link->updown_cb = updown_cb; ipa_link->read_cb = read_cb; /* default to generic write callback if not set. */ @@ -209,9 +225,10 @@ int ret; link->state = IPA_CLIENT_LINK_STATE_CONNECTING; - ret = osmo_sock_init(AF_INET, SOCK_STREAM, IPPROTO_TCP, + ret = osmo_sock_init2(AF_INET, SOCK_STREAM, IPPROTO_TCP, + link->local_addr, link->local_port, link->addr, link->port, - OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_NONBLOCK); + OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_NONBLOCK); if (ret < 0) return ret; link->ofd->fd = ret; @@ -297,6 +314,7 @@ ipa_link->ofd.when |= BSC_FD_READ | BSC_FD_WRITE; ipa_link->ofd.cb = ipa_server_fd_cb; + ipa_link->ofd.fd = -1; ipa_link->ofd.data = ipa_link; if (addr) ipa_link->addr = talloc_strdup(ipa_link, addr); @@ -326,6 +344,7 @@ link->ofd.fd = ret; if (osmo_fd_register(&link->ofd) < 0) { close(ret); + link->ofd.fd = -1; return -EIO; } return 0; @@ -333,8 +352,12 @@ void ipa_server_link_close(struct ipa_server_link *link) { + if (link->ofd.fd == -1) + return; + osmo_fd_unregister(&link->ofd); close(link->ofd.fd); + link->ofd.fd = -1; } static int ipa_server_conn_read(struct ipa_server_conn *conn) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/src/input/ipa_keepalive.c new/libosmo-abis-0.8.0/src/input/ipa_keepalive.c --- old/libosmo-abis-0.7.0/src/input/ipa_keepalive.c 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/src/input/ipa_keepalive.c 2020-01-02 20:53:32.000000000 +0100 @@ -213,7 +213,7 @@ static __attribute__((constructor)) void on_dso_load(void) { - osmo_fsm_register(&ipa_keepalive_fsm); + OSMO_ASSERT(osmo_fsm_register(&ipa_keepalive_fsm) == 0); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/src/input/ipaccess.c new/libosmo-abis-0.8.0/src/input/ipaccess.c --- old/libosmo-abis-0.7.0/src/input/ipaccess.c 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/src/input/ipaccess.c 2020-01-02 20:53:32.000000000 +0100 @@ -143,7 +143,11 @@ } unitid = (char *) TLVP_VAL(&tlvp, IPAC_IDTAG_UNIT); unitid[len - 1] = '\0'; - ipa_parse_unitid(unitid, &unit_data); + ret = ipa_parse_unitid(unitid, &unit_data); + if (ret) { + LOGP(DLINP, LOGL_ERROR, "Failed to parse unit ID '%s'\n", unitid); + goto err; + } if (!line->ops->sign_link_up) { LOGP(DLINP, LOGL_ERROR, @@ -716,7 +720,7 @@ if (link->ofd->priv_nr >= E1INP_SIGN_RSL) trx_nr = link->ofd->priv_nr - E1INP_SIGN_RSL; - LOGP(DLINP, LOGL_NOTICE, "received ID get from %u/%u/%u\n", + LOGP(DLINP, LOGL_NOTICE, "received ID_GET for unit ID %u/%u/%u\n", dev->site_id, dev->bts_id, trx_nr); rmsg = ipa_bts_id_resp(dev, data + 1, len - 1, trx_nr); ret = ipa_send(link->ofd->fd, rmsg->data, rmsg->len); @@ -896,9 +900,10 @@ "OML connecting to %s:%u\n", line->ops->cfg.ipa.addr, IPA_TCP_PORT_OML); - link = ipa_client_conn_create(tall_ipa_ctx, + link = ipa_client_conn_create2(tall_ipa_ctx, e1inp_line_ipa_oml_ts(line), E1INP_SIGN_OML, + NULL, 0, line->ops->cfg.ipa.addr, IPA_TCP_PORT_OML, ipaccess_bts_updown_cb, @@ -946,9 +951,10 @@ return -EINVAL; } - rsl_link = ipa_client_conn_create(tall_ipa_ctx, + rsl_link = ipa_client_conn_create2(tall_ipa_ctx, e1inp_line_ipa_rsl_ts(line, trx_nr), E1INP_SIGN_RSL+trx_nr, + NULL, 0, rem_addr, rem_port, ipaccess_bts_updown_cb, ipaccess_bts_read_cb, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis-0.7.0/src/ipa_proxy.c new/libosmo-abis-0.8.0/src/ipa_proxy.c --- old/libosmo-abis-0.7.0/src/ipa_proxy.c 2019-07-21 21:32:08.000000000 +0200 +++ new/libosmo-abis-0.8.0/src/ipa_proxy.c 2020-01-02 20:53:32.000000000 +0100 @@ -184,7 +184,8 @@ LOGP(DLINP, LOGL_NOTICE, "now trying to connect to destination\n"); - conn->dst = ipa_client_conn_create(NULL, NULL, 0, + conn->dst = ipa_client_conn_create2(NULL, NULL, 0, + NULL, 0, route->shared->dst.inst->net.addr, route->shared->dst.inst->net.port, NULL,
