Skip to content

Commit

Permalink
Merge pull request #611 from mtomaschewski/brd-cleanup
Browse files Browse the repository at this point in the history
address: removed broadcast calculations (bsc#944710)
  • Loading branch information
mtomaschewski committed Dec 4, 2015
2 parents f19ee68 + 6ca14be commit 4dd2fc0
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 39 deletions.
4 changes: 2 additions & 2 deletions client/compat.c
Expand Up @@ -1482,9 +1482,9 @@ __ni_compat_generate_static_address_list(xml_node_t *afnode, ni_address_t *addr_
anode = xml_node_new("address", afnode);
xml_node_new_element("local", anode, ni_sockaddr_prefix_print(&ap->local_addr, ap->prefixlen));

if (ap->peer_addr.ss_family != AF_UNSPEC)
if (ap->peer_addr.ss_family == af)
xml_node_new_element("peer", anode, ni_sockaddr_print(&ap->peer_addr));
if (ap->bcast_addr.ss_family != AF_UNSPEC)
if (ap->bcast_addr.ss_family == af && af == AF_INET)
xml_node_new_element("broadcast", anode, ni_sockaddr_print(&ap->bcast_addr));
if (af == AF_INET && ap->label)
xml_node_new_element("label", anode, ap->label);
Expand Down
19 changes: 8 additions & 11 deletions client/suse/compat-suse.c
Expand Up @@ -3566,14 +3566,12 @@ __get_ipaddr(const ni_sysconfig_t *sc, const char *ifname, const char *suffix, n
ap = ni_address_new(local_addr.ss_family, prefixlen, &local_addr, list);
if (ap && ap->family == AF_INET) {
var = __find_indexed_variable(sc, "BROADCAST", suffix);
if (var) {
ni_sockaddr_parse(&ap->bcast_addr, var->value, AF_INET);
if (ap->bcast_addr.ss_family != ap->family) {
ni_warn("ifcfg-%s: ignoring BROADCAST%s=%s (wrong address family)",
ifname, suffix, var->value);
ap->bcast_addr.ss_family = AF_UNSPEC;
}
} else {
if (var && ni_sockaddr_parse(&ap->bcast_addr, var->value, AF_INET) < 0) {
ni_warn("ifcfg-%s: ignoring BROADCAST%s=%s (unable to parse)",
ifname, suffix, var->value);
ap->bcast_addr.ss_family = AF_UNSPEC;
} else
if (ni_sockaddr_equal(&ap->bcast_addr, &ap->local_addr)) {
/* Clear the default, it's useless */
memset(&ap->bcast_addr, 0, sizeof(ap->bcast_addr));
}
Expand All @@ -3582,9 +3580,8 @@ __get_ipaddr(const ni_sysconfig_t *sc, const char *ifname, const char *suffix, n
if (prefixlen == ni_af_address_prefixlen(local_addr.ss_family)) {
var = __find_indexed_variable(sc, "REMOTE_IPADDR", suffix);
if (var) {
ni_sockaddr_parse(&ap->peer_addr, var->value, AF_UNSPEC);
if (ap->peer_addr.ss_family != ap->family) {
ni_warn("ifcfg-%s: ignoring REMOTE_IPADDR%s=%s (wrong address family)",
if (ni_sockaddr_parse(&ap->peer_addr, var->value, AF_UNSPEC) < 0) {
ni_warn("ifcfg-%s: ignoring REMOTE_IPADDR%s=%s (unable to parse)",
ifname, suffix, var->value);
ap->peer_addr.ss_family = AF_UNSPEC;
} else
Expand Down
1 change: 0 additions & 1 deletion client/suse/config/ifcfg-lo
Expand Up @@ -2,7 +2,6 @@
IPADDR=127.0.0.1/8
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
STARTMODE=nfsroot
BOOTPROTO=static
USERCONTROL=no
Expand Down
6 changes: 0 additions & 6 deletions src/address.c
Expand Up @@ -57,12 +57,6 @@ ni_address_new(int af, unsigned int prefix_len, const ni_sockaddr_t *local_addr,
if (local_addr)
ap->local_addr = *local_addr;

/* FIXME: is this the right place to do this? */
if (af == AF_INET && local_addr && prefix_len < 32) {
ap->bcast_addr = *local_addr;
ap->bcast_addr.sin.sin_addr.s_addr |= htonl(0xFFFFFFFFUL >> prefix_len);
}

if (list_head) {
ni_address_list_append(list_head, ap);
}
Expand Down
11 changes: 2 additions & 9 deletions src/dhcp4/protocol.c
Expand Up @@ -1931,10 +1931,6 @@ ni_dhcp4_parse_response(const ni_dhcp4_message_t *message, ni_buffer_t *options,
"guessed netmask: %s, cidr: %u",
inet_ntoa(lease->dhcp4.netmask), pfxlen);
}
if (!lease->dhcp4.broadcast.s_addr) {
lease->dhcp4.broadcast.s_addr = lease->dhcp4.address.s_addr |
~lease->dhcp4.netmask.s_addr;
}
if (lease->dhcp4.address.s_addr) {
ni_sockaddr_t local_addr;
ni_address_t *ap;
Expand All @@ -1943,11 +1939,8 @@ ni_dhcp4_parse_response(const ni_dhcp4_message_t *message, ni_buffer_t *options,
local_addr.sin.sin_family = AF_INET;
local_addr.sin.sin_addr = lease->dhcp4.address;
ap = ni_address_new(AF_INET, pfxlen, &local_addr, &lease->addrs);
if (ap) {
memset(&ap->bcast_addr, 0, sizeof(ap->bcast_addr));
ap->bcast_addr.sin.sin_family = AF_INET;
ap->bcast_addr.sin.sin_addr = lease->dhcp4.broadcast;
}
if (ap && lease->dhcp4.broadcast.s_addr)
ni_sockaddr_set_ipv4(&ap->bcast_addr, lease->dhcp4.broadcast, 0);
}

if (classless_routes.count) {
Expand Down
6 changes: 1 addition & 5 deletions src/iflist.c
Expand Up @@ -1962,12 +1962,8 @@ __ni_rtnl_parse_newaddr(unsigned ifflags, struct nlmsghdr *h, struct ifaddrmsg *
*/
} else {
__ni_nla_get_addr(ifa->ifa_family, &ap->local_addr, tb[IFA_ADDRESS]);
if (tb[IFA_BROADCAST]) {
if (tb[IFA_BROADCAST])
__ni_nla_get_addr(ifa->ifa_family, &ap->bcast_addr, tb[IFA_BROADCAST]);
} else if(ifa->ifa_family == AF_INET && tb[IFA_ADDRESS] && ifa->ifa_prefixlen < 32) {
ap->bcast_addr = ap->local_addr;
ap->bcast_addr.sin.sin_addr.s_addr |= htonl(0xFFFFFFFFUL >> ifa->ifa_prefixlen);
}
}
__ni_nla_get_addr(ifa->ifa_family, &ap->anycast_addr, tb[IFA_ANYCAST]);

Expand Down
9 changes: 4 additions & 5 deletions src/leaseinfo.c
Expand Up @@ -149,7 +149,6 @@ __ni_leaseinfo_print_addrs(FILE *out, const char *prefix, ni_address_t *addrs,
ni_address_t *ap;
ni_sockaddr_t nm;
ni_sockaddr_t net;
ni_sockaddr_t brd;
unsigned int i;
char *buf = NULL;

Expand All @@ -175,10 +174,10 @@ __ni_leaseinfo_print_addrs(FILE *out, const char *prefix, ni_address_t *addrs,
__ni_leaseinfo_print_string(out, prefix, "NETWORK",
ni_sockaddr_print(&net), NULL, i);

ni_sockaddr_set_ipv4(&brd, net.sin.sin_addr, 0);
brd.sin.sin_addr.s_addr |= ~nm.sin.sin_addr.s_addr;
__ni_leaseinfo_print_string(out, prefix, "BROADCAST",
ni_sockaddr_print(&brd), NULL, i);
if (!ni_sockaddr_is_unspecified(&ap->bcast_addr)) {
__ni_leaseinfo_print_string(out, prefix, "BROADCAST",
ni_sockaddr_print(&ap->bcast_addr), NULL, i);
}

ni_string_printf(&buf, "%u", ap->prefixlen);
__ni_leaseinfo_print_string(out, prefix, "PREFIXLEN",
Expand Down

0 comments on commit 4dd2fc0

Please sign in to comment.