X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-address.c;h=47033acde4e1fab18fcb32e764d13a53707fcf12;hb=484adfd914504cd7e95867cea20ca7af71b888f2;hp=b4eb91ebb60d4c066e4cf653dbd14059ebcbf06b;hpb=5a8bcb674f71a20e95df55319b34c556638378ce;p=elogind.git diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index b4eb91ebb..47033acde 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -116,7 +116,7 @@ int address_establish(Address *address, Link *link) { address->scope < RT_SCOPE_LINK; /* Add firewall entry if this is requested */ - if (address->ip_forward_done != masq) { + if (address->ip_masquerade_done != masq) { union in_addr_union masked = address->in_addr; in_addr_mask(address->family, &masked, address->prefixlen); @@ -124,7 +124,7 @@ int address_establish(Address *address, Link *link) { if (r < 0) log_link_warning_errno(link, r, "Could not enable IP masquerading: %m"); - address->ip_forward_done = masq; + address->ip_masquerade_done = masq; } return 0; @@ -137,7 +137,7 @@ int address_release(Address *address, Link *link) { assert(link); /* Remove masquerading firewall entry if it was added */ - if (address->ip_forward_done) { + if (address->ip_masquerade_done) { union in_addr_union masked = address->in_addr; in_addr_mask(address->family, &masked, address->prefixlen); @@ -145,7 +145,7 @@ int address_release(Address *address, Link *link) { if (r < 0) log_link_warning_errno(link, r, "Failed to disable IP masquerading: %m"); - address->ip_forward_done = false; + address->ip_masquerade_done = false; } return 0; @@ -592,6 +592,10 @@ bool address_equal(Address *a1, Address *a2) { case AF_INET: if (a1->prefixlen != a2->prefixlen) return false; + else if (a1->prefixlen == 0) + /* make sure we don't try to shift by 32. + * See ISO/IEC 9899:TC3 § 6.5.7.3. */ + return true; else { uint32_t b1, b2;