X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=networking%2Fzcip.c;h=b5a904d469493da5056fa3fe6e7b7e4b364e041e;hb=5929edc1fac4340f99ed84e92bf3a2bedd4177c2;hp=294ffd0662e22332f3cc751ef5f49e97444e0620;hpb=86f5c9906beac527f3d7966f24811b571a589e08;p=oweals%2Fbusybox.git diff --git a/networking/zcip.c b/networking/zcip.c index 294ffd066..b5a904d46 100644 --- a/networking/zcip.c +++ b/networking/zcip.c @@ -38,7 +38,6 @@ #include #include #include -#include #include #include @@ -62,20 +61,22 @@ struct arp_packet { struct in_addr target_ip; } ATTRIBUTE_PACKED; +enum { /* 169.254.0.0 */ -static const uint32_t LINKLOCAL_ADDR = 0xa9fe0000; + LINKLOCAL_ADDR = 0xa9fe0000, /* protocol timeout parameters, specified in seconds */ -static const unsigned PROBE_WAIT = 1; -static const unsigned PROBE_MIN = 1; -static const unsigned PROBE_MAX = 2; -static const unsigned PROBE_NUM = 3; -static const unsigned MAX_CONFLICTS = 10; -static const unsigned RATE_LIMIT_INTERVAL = 60; -static const unsigned ANNOUNCE_WAIT = 2; -static const unsigned ANNOUNCE_NUM = 2; -static const unsigned ANNOUNCE_INTERVAL = 2; -static const time_t DEFEND_INTERVAL = 10; + PROBE_WAIT = 1, + PROBE_MIN = 1, + PROBE_MAX = 2, + PROBE_NUM = 3, + MAX_CONFLICTS = 10, + RATE_LIMIT_INTERVAL = 60, + ANNOUNCE_WAIT = 2, + ANNOUNCE_NUM = 2, + ANNOUNCE_INTERVAL = 2, + DEFEND_INTERVAL = 10 +}; static const unsigned char ZCIP_VERSION[] = "0.75 (18 April 2005)"; static char *prog; @@ -174,7 +175,7 @@ run(char *script, char *arg, char *intf, struct in_addr *ip) execl(script, script, arg, NULL); perror("execl"); _exit(EXIT_FAILURE); - } + } if (waitpid(pid, &status, 0) <= 0) { why = "waitpid"; @@ -314,7 +315,7 @@ fail: goto fail; } else { struct ifreq ifr; - short seed[3]; + unsigned short seed[3]; // get the interface's ethernet address memset(&ifr, 0, sizeof (ifr)); @@ -365,7 +366,7 @@ fail: fds[0].events = POLLIN; fds[0].revents = 0; - // poll, being ready to adjust current timeout + // poll, being ready to adjust current timeout if (timeout > 0) { gettimeofday(&tv1, NULL); tv1.tv_usec += (timeout % 1000) * 1000; @@ -435,7 +436,7 @@ fail: gettimeofday(&tv2, NULL); if (timercmp(&tv1, &tv2, <)) { - timeout = -1; + timeout = 0; } else { timersub(&tv1, &tv2, &tv1); timeout = 1000 * tv1.tv_sec @@ -477,7 +478,7 @@ fail: && p.arp.ar_op != htons(ARPOP_REPLY)) continue; - // some cases are always conflicts + // some cases are always conflicts if ((p.source_ip.s_addr == ip.s_addr) && (memcmp(&addr, &p.source_addr, ETH_ALEN) != 0)) { @@ -533,7 +534,7 @@ collision: bad: if (foreground) perror(why); - else + else syslog(LOG_ERR, "%s %s, %s error: %s", prog, intf, why, strerror(errno)); return EXIT_FAILURE;