Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ell for openSUSE:Factory checked in at 2022-12-25 15:14:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ell (Old) and /work/SRC/openSUSE:Factory/.ell.new.1563 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ell" Sun Dec 25 15:14:29 2022 rev:33 rq:1045122 version:0.55 Changes: -------- --- /work/SRC/openSUSE:Factory/ell/ell.changes 2022-12-04 14:58:28.748313397 +0100 +++ /work/SRC/openSUSE:Factory/.ell.new.1563/ell.changes 2022-12-25 15:14:38.661302246 +0100 @@ -1,0 +2,6 @@ +Fri Dec 23 20:02:06 UTC 2022 - Dirk Müller <dmuel...@suse.com> + +- update to 0.55: + * Fix issue with DHCP and blocked unicast requests. + +------------------------------------------------------------------- Old: ---- ell-0.54.tar.sign ell-0.54.tar.xz New: ---- ell-0.55.tar.sign ell-0.55.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ell.spec ++++++ --- /var/tmp/diff_new_pack.ZfxAR4/_old 2022-12-25 15:14:39.201305302 +0100 +++ /var/tmp/diff_new_pack.ZfxAR4/_new 2022-12-25 15:14:39.205305324 +0100 @@ -18,7 +18,7 @@ %define lname libell0 Name: ell -Version: 0.54 +Version: 0.55 Release: 0 Summary: Wireless setup and cryptography library License: LGPL-2.1-or-later ++++++ ell-0.54.tar.xz -> ell-0.55.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.54/ChangeLog new/ell-0.55/ChangeLog --- old/ell-0.54/ChangeLog 2022-11-18 10:08:38.000000000 +0100 +++ new/ell-0.55/ChangeLog 2022-12-18 20:40:29.000000000 +0100 @@ -1,3 +1,6 @@ +ver 0.55: + Fix issue with DHCP and blocked unicast requests. + ver 0.54: Add support for DHCPv6 SLAAC address creation. Add support for control of optimistic DAD feature. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.54/configure new/ell-0.55/configure --- old/ell-0.54/configure 2022-11-18 10:10:16.000000000 +0100 +++ new/ell-0.55/configure 2022-12-18 20:42:13.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for ell 0.54. +# Generated by GNU Autoconf 2.71 for ell 0.55. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, @@ -618,8 +618,8 @@ # Identity of this package. PACKAGE_NAME='ell' PACKAGE_TARNAME='ell' -PACKAGE_VERSION='0.54' -PACKAGE_STRING='ell 0.54' +PACKAGE_VERSION='0.55' +PACKAGE_STRING='ell 0.55' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1380,7 +1380,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ell 0.54 to adapt to many kinds of systems. +\`configure' configures ell 0.55 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1451,7 +1451,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ell 0.54:";; + short | recursive ) echo "Configuration of ell 0.55:";; esac cat <<\_ACEOF @@ -1578,7 +1578,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ell configure 0.54 +ell configure 0.55 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1839,7 +1839,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ell $as_me 0.54, which was +It was created by ell $as_me 0.55, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3114,7 +3114,7 @@ # Define the identity of the package. PACKAGE='ell' - VERSION='0.54' + VERSION='0.55' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -14344,7 +14344,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ell $as_me 0.54, which was +This file was extended by ell $as_me 0.55, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14412,7 +14412,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -ell config.status 0.54 +ell config.status 0.55 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.54/configure.ac new/ell-0.55/configure.ac --- old/ell-0.54/configure.ac 2022-11-18 10:08:38.000000000 +0100 +++ new/ell-0.55/configure.ac 2022-12-18 20:40:29.000000000 +0100 @@ -1,5 +1,5 @@ AC_PREREQ([2.69]) -AC_INIT([ell],[0.54]) +AC_INIT([ell],[0.55]) AC_CONFIG_HEADERS(config.h) AC_CONFIG_AUX_DIR(build-aux) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.54/ell/checksum.c new/ell-0.55/ell/checksum.c --- old/ell-0.54/ell/checksum.c 2021-03-29 14:19:13.000000000 +0200 +++ new/ell-0.55/ell/checksum.c 2022-12-18 20:40:29.000000000 +0100 @@ -146,55 +146,22 @@ return sk; } -/** - * l_checksum_new: - * @type: checksum type - * - * Creates new #l_checksum, using the checksum algorithm @type. - * - * Returns: a newly allocated #l_checksum object. - **/ -LIB_EXPORT struct l_checksum *l_checksum_new(enum l_checksum_type type) -{ - struct l_checksum *checksum; - int fd; - - if (!is_valid_index(checksum_algs, type) || !checksum_algs[type].name) - return NULL; - - checksum = l_new(struct l_checksum, 1); - checksum->alg_info = &checksum_algs[type]; - - fd = create_alg(checksum->alg_info->name); - if (fd < 0) - goto error; - - checksum->sk = accept4(fd, NULL, 0, SOCK_CLOEXEC); - close(fd); - - if (checksum->sk < 0) - goto error; - - return checksum; - -error: - l_free(checksum); - return NULL; -} - -LIB_EXPORT struct l_checksum *l_checksum_new_cmac_aes(const void *key, - size_t key_len) +static struct l_checksum *checksum_new_common(const char *alg, int sockopt, + const void *data, size_t len, + struct checksum_info *info) { struct l_checksum *checksum; int fd; - fd = create_alg("cmac(aes)"); + fd = create_alg(alg); if (fd < 0) return NULL; - if (setsockopt(fd, SOL_ALG, ALG_SET_KEY, key, key_len) < 0) { - close(fd); - return NULL; + if (data) { + if (setsockopt(fd, SOL_ALG, sockopt, data, len) < 0) { + close(fd); + return NULL; + } } checksum = l_new(struct l_checksum, 1); @@ -206,40 +173,44 @@ return NULL; } - checksum->alg_info = &checksum_cmac_aes_alg; + checksum->alg_info = info; return checksum; } -LIB_EXPORT struct l_checksum *l_checksum_new_hmac(enum l_checksum_type type, - const void *key, size_t key_len) +/** + * l_checksum_new: + * @type: checksum type + * + * Creates new #l_checksum, using the checksum algorithm @type. + * + * Returns: a newly allocated #l_checksum object. + **/ +LIB_EXPORT struct l_checksum *l_checksum_new(enum l_checksum_type type) { - struct l_checksum *checksum; - int fd; - - if (!is_valid_index(checksum_hmac_algs, type) || - !checksum_hmac_algs[type].name) - return NULL; - - fd = create_alg(checksum_hmac_algs[type].name); - if (fd < 0) + if (!is_valid_index(checksum_algs, type) || !checksum_algs[type].name) return NULL; - if (setsockopt(fd, SOL_ALG, ALG_SET_KEY, key, key_len) < 0) { - close(fd); - return NULL; - } + return checksum_new_common(checksum_algs[type].name, 0, NULL, 0, + &checksum_algs[type]); +} - checksum = l_new(struct l_checksum, 1); - checksum->sk = accept4(fd, NULL, 0, SOCK_CLOEXEC); - close(fd); +LIB_EXPORT struct l_checksum *l_checksum_new_cmac_aes(const void *key, + size_t key_len) +{ + return checksum_new_common("cmac(aes)", ALG_SET_KEY, key, key_len, + &checksum_cmac_aes_alg); +} - if (checksum->sk < 0) { - l_free(checksum); +LIB_EXPORT struct l_checksum *l_checksum_new_hmac(enum l_checksum_type type, + const void *key, size_t key_len) +{ + if (!is_valid_index(checksum_hmac_algs, type) || + !checksum_hmac_algs[type].name) return NULL; - } - checksum->alg_info = &checksum_hmac_algs[type]; - return checksum; + return checksum_new_common(checksum_hmac_algs[type].name, + ALG_SET_KEY, key, key_len, + &checksum_hmac_algs[type]); } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ell-0.54/ell/dhcp.c new/ell-0.55/ell/dhcp.c --- old/ell-0.54/ell/dhcp.c 2022-11-18 10:08:38.000000000 +0100 +++ new/ell-0.55/ell/dhcp.c 2022-12-18 20:40:29.000000000 +0100 @@ -365,12 +365,27 @@ unsigned int len) { struct sockaddr_in si; + int r; memset(&si, 0, sizeof(si)); si.sin_family = AF_INET; si.sin_port = L_CPU_TO_BE16(DHCP_PORT_SERVER); si.sin_addr.s_addr = client->lease->server_address; - return client->transport->send(client->transport, &si, request, len); + + /* + * sendto() might fail with an EPERM error, which most likely means + * that the unicast was prevented by netfilter. Ignore this case + * and assume that once the REBINDING timeout is hit, a broadcast + * will go through which will have a chance of renewing the lease + */ + r = client->transport->send(client->transport, &si, request, len); + if (r == -EPERM) { + CLIENT_DEBUG("transport->send() failed with EPERM -> ignore"); + CLIENT_DEBUG("Is a firewall denying unicast DHCP packets?"); + return 0; + } + + return r; } static int dhcp_client_send_request(struct l_dhcp_client *client)