From: Roy Marples Date: Sun, 30 Mar 2008 08:26:34 +0000 (+0000) Subject: Pointless looping in bpf.packet, as pointed out by D. Young. X-Git-Tag: v4.0.2~513 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a204e3b9886bd2a88084a5d5796a997ca610c84;p=thirdparty%2Fdhcpcd.git Pointless looping in bpf.packet, as pointed out by D. Young. --- diff --git a/bpf.c b/bpf.c index 293f023c..5e978ecd 100644 --- a/bpf.c +++ b/bpf.c @@ -172,7 +172,7 @@ get_packet(const struct interface *iface, unsigned char *data, } else bpf.buffer += *buffer_pos; - while (bpf.packet) { + do { len = 0; have_data = false; @@ -211,10 +211,7 @@ get_packet(const struct interface *iface, unsigned char *data, if (have_data) return len; - - if (*buffer_pos == 0) - break; - } + } while (*buffer_pos); /* No valid packets left, so return */ *buffer_pos = 0; diff --git a/configure.c b/configure.c index ad9f8b84..47273744 100644 --- a/configure.c +++ b/configure.c @@ -691,9 +691,9 @@ configure(const struct options *options, struct interface *iface, /* Only reset things if we had set them before */ if (iface->previous_address.s_addr != 0) { if (!(options->options & DHCPCD_KEEPADDRESS)) { - del_address(iface->name, - &iface->previous_address, - &iface->previous_netmask); + d_address(iface->name, + &iface->previous_address, + &iface->previous_netmask); memset(&iface->previous_address, 0, sizeof (iface->previous_address)); memset(&iface->previous_netmask, diff --git a/if-bsd.c b/if-bsd.c index 9c7cc6e4..c6c64681 100644 --- a/if-bsd.c +++ b/if-bsd.c @@ -81,18 +81,19 @@ if_address(const char *ifname, const struct in_addr *address, _s.sa = &_var; \ _s.sin->sin_family = AF_INET; \ _s.sin->sin_len = sizeof(*_s.sin); \ - memcpy(&_s.sin->sin_addr, &_addr, sizeof(_s.sin->sin_addr)); + memcpy(&_s.sin->sin_addr, _addr, sizeof(_s.sin->sin_addr)); - ADDADDR(ifa.ifra_addr, *address); - ADDADDR(ifa.ifra_mask, *netmask); - if (action >= 0) - ADDADDR(ifa.ifra_broadaddr, *broadcast); + ADDADDR(ifa.ifra_addr, address); + ADDADDR(ifa.ifra_mask, netmask); + if (action >= 0) { + ADDADDR(ifa.ifra_broadaddr, broadcast); + } #undef ADDADDR if (action < 0) retval = ioctl(s, SIOCDIFADDR, &ifa); else - retval = ioctl(s, SIOCDIFADDR, &ifa); + retval = ioctl(s, SIOCAIFADDR, &ifa); close(s); return retval; } @@ -145,12 +146,12 @@ if_route(const char *ifname, const struct in_addr *destination, memset (&su, 0, sizeof(su)); \ su.sin.sin_family = AF_INET; \ su.sin.sin_len = sizeof(su.sin); \ - memcpy (&su.sin.sin_addr, &_addr, sizeof(su.sin.sin_addr)); \ + memcpy (&su.sin.sin_addr, _addr, sizeof(su.sin.sin_addr)); \ l = SA_SIZE (&(su.sa)); \ memcpy (bp, &(su), l); \ bp += l; - ADDADDR(*destination); + ADDADDR(destination); if (netmask->s_addr == INADDR_BROADCAST || gateway->s_addr == INADDR_ANY) @@ -176,10 +177,10 @@ if_route(const char *ifname, const struct in_addr *destination, free(hwaddr); } else { rtm.hdr.rtm_flags |= RTF_GATEWAY; - ADDADDR(*gateway); + ADDADDR(gateway); } - ADDADDR(*netmask); + ADDADDR(netmask); #undef ADDADDR rtm.hdr.rtm_msglen = l = bp - (char *)&rtm;