From: Marc E. Fiuczynski Date: Mon, 13 Jun 2022 12:43:14 +0000 (-0400) Subject: fix for issue 4026: set broadcast to 0.0.0.0 for /31 and /32 X-Git-Tag: v6.0.0~116^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F4147%2Fhead;p=thirdparty%2Flxc.git fix for issue 4026: set broadcast to 0.0.0.0 for /31 and /32 Signed-off-by: Marc E. Fiuczynski --- diff --git a/src/lxc/confile.c b/src/lxc/confile.c index f5ff9f620..7966d32e8 100644 --- a/src/lxc/confile.c +++ b/src/lxc/confile.c @@ -899,13 +899,19 @@ static int set_config_net_ipv4_address(const char *key, const char *value, /* If no broadcast address, compute one from the prefix and address. */ if (!bcast) { - unsigned int shift = LAST_BIT_PER_TYPE(inetdev->prefix); + /* 0<=inetdev->prefix<=32 */ + switch (inetdev->prefix) { + case 32: /* single IPv4 network */ + ; /* fall thru */ + case 31: /* RFC 3021 point to point network */ + inetdev->bcast.s_addr = INADDR_ANY; + break; - inetdev->bcast.s_addr = inetdev->addr.s_addr; - if (inetdev->prefix < shift) - shift = inetdev->prefix; - inetdev->bcast.s_addr |= htonl(INADDR_BROADCAST >> shift); - } + default: + inetdev->bcast.s_addr |= htonl(INADDR_BROADCAST >> inetdev->prefix); + break; + } + } list_add_tail(&inetdev->head, &netdev->ipv4_addresses); move_ptr(inetdev);