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);
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;
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);
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;
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;