X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fnetwork%2Fnetworkd-address.c;h=255ff7702247ee81d5b1c8646c57e286d1f2e8e0;hb=2eec67acbb00593e414549a7e5b35eb7dd776b1b;hp=b4eb91ebb60d4c066e4cf653dbd14059ebcbf06b;hpb=5a8bcb674f71a20e95df55319b34c556638378ce;p=elogind.git diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index b4eb91ebb..255ff7702 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -25,7 +25,6 @@ #include "util.h" #include "conf-parser.h" #include "fw-util.h" -#include "network-internal.h" #include "networkd.h" #include "networkd-link.h" @@ -116,7 +115,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 +123,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 +136,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 +144,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 +591,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;