arp.c: Check for < 0 for invalid fds and function errors instead of == -1.
This commit is contained in:
parent
8af6bee46d
commit
8b4c7f05b2
36
ndhc/arp.c
36
ndhc/arp.c
@ -175,7 +175,7 @@ static int arp_open_fd(struct client_state_t *cs, arp_state_t state)
|
||||
case AS_GW_CHECK: cs->arpFd = get_arp_basic_socket(); break;
|
||||
case AS_DEFENSE: cs->arpFd = get_arp_defense_socket(cs); break;
|
||||
}
|
||||
if (cs->arpFd == -1) {
|
||||
if (cs->arpFd < 0) {
|
||||
log_error("arp: Failed to create socket: %s", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
@ -186,7 +186,7 @@ static int arp_open_fd(struct client_state_t *cs, arp_state_t state)
|
||||
|
||||
static void arp_min_close_fd(struct client_state_t *cs)
|
||||
{
|
||||
if (cs->arpFd == -1)
|
||||
if (cs->arpFd < 0)
|
||||
return;
|
||||
epoll_del(cs->epollFd, cs->arpFd);
|
||||
close(cs->arpFd);
|
||||
@ -236,7 +236,7 @@ static int arp_send(struct client_state_t *cs, struct arpMsg *arp)
|
||||
};
|
||||
memcpy(addr.sll_addr, client_config.arp, 6);
|
||||
|
||||
if (cs->arpFd == -1) {
|
||||
if (cs->arpFd < 0) {
|
||||
log_warning("arp: Send attempted when no ARP fd is open.");
|
||||
return -1;
|
||||
}
|
||||
@ -268,7 +268,7 @@ static int arp_ping(struct client_state_t *cs, uint32_t test_ip)
|
||||
BASE_ARPMSG();
|
||||
memcpy(arp.sip4, &cs->clientAddr, sizeof cs->clientAddr);
|
||||
memcpy(arp.dip4, &test_ip, sizeof test_ip);
|
||||
if (arp_send(cs, &arp) == -1)
|
||||
if (arp_send(cs, &arp) < 0)
|
||||
return -1;
|
||||
arp_send_stats[ASEND_GW_PING].count++;
|
||||
arp_send_stats[ASEND_GW_PING].ts = curms();
|
||||
@ -281,7 +281,7 @@ static int arp_ip_anon_ping(struct client_state_t *cs, uint32_t test_ip)
|
||||
BASE_ARPMSG();
|
||||
memcpy(arp.dip4, &test_ip, sizeof test_ip);
|
||||
log_line("arp: Probing for hosts that may conflict with our lease...");
|
||||
if (arp_send(cs, &arp) == -1)
|
||||
if (arp_send(cs, &arp) < 0)
|
||||
return -1;
|
||||
arp_send_stats[ASEND_COLLISION_CHECK].count++;
|
||||
arp_send_stats[ASEND_COLLISION_CHECK].ts = curms();
|
||||
@ -293,7 +293,7 @@ static int arp_announcement(struct client_state_t *cs)
|
||||
BASE_ARPMSG();
|
||||
memcpy(arp.sip4, &cs->clientAddr, 4);
|
||||
memcpy(arp.dip4, &cs->clientAddr, 4);
|
||||
if (arp_send(cs, &arp) == -1)
|
||||
if (arp_send(cs, &arp) < 0)
|
||||
return -1;
|
||||
arp_send_stats[ASEND_ANNOUNCE].count++;
|
||||
arp_send_stats[ASEND_ANNOUNCE].ts = curms();
|
||||
@ -306,7 +306,7 @@ int arp_check(struct client_state_t *cs, struct dhcpmsg *packet)
|
||||
{
|
||||
memcpy(&arp_dhcp_packet, packet, sizeof (struct dhcpmsg));
|
||||
arp_switch_state(cs, AS_COLLISION_CHECK);
|
||||
if (arp_ip_anon_ping(cs, arp_dhcp_packet.yiaddr) == -1)
|
||||
if (arp_ip_anon_ping(cs, arp_dhcp_packet.yiaddr) < 0)
|
||||
return -1;
|
||||
cs->arpPrevState = cs->dhcpState;
|
||||
cs->dhcpState = DS_COLLISION_CHECK;
|
||||
@ -323,11 +323,11 @@ int arp_gw_check(struct client_state_t *cs)
|
||||
return 0;
|
||||
gw_check_init_pingcount = arp_send_stats[ASEND_GW_PING].count;
|
||||
arp_server_has_replied = 0;
|
||||
if (arp_ping(cs, cs->serverAddr) == -1)
|
||||
if (arp_ping(cs, cs->serverAddr) < 0)
|
||||
return -1;
|
||||
if (cs->routerAddr) {
|
||||
arp_router_has_replied = 0;
|
||||
if (arp_ping(cs, cs->routerAddr) == -1)
|
||||
if (arp_ping(cs, cs->routerAddr) < 0)
|
||||
return -1;
|
||||
} else
|
||||
arp_router_has_replied = 1;
|
||||
@ -350,11 +350,11 @@ static int arp_get_gw_hwaddr(struct client_state_t *cs)
|
||||
else
|
||||
log_line("arp: Searching for dhcp server address...");
|
||||
cs->got_server_arp = 0;
|
||||
if (arp_ping(cs, cs->serverAddr) == -1)
|
||||
if (arp_ping(cs, cs->serverAddr) < 0)
|
||||
return -1;
|
||||
if (cs->routerAddr) {
|
||||
cs->got_router_arp = 0;
|
||||
if (arp_ping(cs, cs->routerAddr) == -1)
|
||||
if (arp_ping(cs, cs->routerAddr) < 0)
|
||||
return -1;
|
||||
} else
|
||||
cs->got_router_arp = 1;
|
||||
@ -516,12 +516,12 @@ static void arp_gw_check_timeout(struct client_state_t *cs, long long nowts)
|
||||
}
|
||||
if (!arp_router_has_replied) {
|
||||
log_line("arp: Still waiting for gateway to reply to arp ping...");
|
||||
if (arp_ping(cs, cs->routerAddr) == -1)
|
||||
if (arp_ping(cs, cs->routerAddr) < 0)
|
||||
log_warning("arp: Failed to send ARP ping in retransmission.");
|
||||
}
|
||||
if (!arp_server_has_replied) {
|
||||
log_line("arp: Still waiting for DHCP server to reply to arp ping...");
|
||||
if (arp_ping(cs, cs->serverAddr) == -1)
|
||||
if (arp_ping(cs, cs->serverAddr) < 0)
|
||||
log_warning("arp: Failed to send ARP ping in retransmission.");
|
||||
}
|
||||
arp_wake_ts[AS_GW_CHECK] =
|
||||
@ -539,12 +539,12 @@ static void arp_gw_query_timeout(struct client_state_t *cs, long long nowts)
|
||||
}
|
||||
if (!cs->got_router_arp) {
|
||||
log_line("arp: Still looking for gateway hardware address...");
|
||||
if (arp_ping(cs, cs->routerAddr) == -1)
|
||||
if (arp_ping(cs, cs->routerAddr) < 0)
|
||||
log_warning("arp: Failed to send ARP ping in retransmission.");
|
||||
}
|
||||
if (!cs->got_server_arp) {
|
||||
log_line("arp: Still looking for DHCP server hardware address...");
|
||||
if (arp_ping(cs, cs->serverAddr) == -1)
|
||||
if (arp_ping(cs, cs->serverAddr) < 0)
|
||||
log_warning("arp: Failed to send ARP ping in retransmission.");
|
||||
}
|
||||
arp_wake_ts[AS_GW_QUERY] =
|
||||
@ -566,7 +566,7 @@ static void arp_collision_timeout(struct client_state_t *cs, long long nowts)
|
||||
arp_wake_ts[AS_COLLISION_CHECK] = rtts;
|
||||
return;
|
||||
}
|
||||
if (arp_ip_anon_ping(cs, arp_dhcp_packet.yiaddr) == -1)
|
||||
if (arp_ip_anon_ping(cs, arp_dhcp_packet.yiaddr) < 0)
|
||||
log_warning("arp: Failed to send ARP ping in retransmission.");
|
||||
probe_wait_time = arp_gen_probe_wait(cs);
|
||||
arp_wake_ts[AS_COLLISION_CHECK] =
|
||||
@ -758,9 +758,9 @@ long long arp_get_wake_ts(void)
|
||||
{
|
||||
long long mt = -1;
|
||||
for (int i = 0; i < AS_MAX; ++i) {
|
||||
if (arp_wake_ts[i] == -1)
|
||||
if (arp_wake_ts[i] < 0)
|
||||
continue;
|
||||
if (mt == -1 || mt > arp_wake_ts[i])
|
||||
if (mt < 0 || mt > arp_wake_ts[i])
|
||||
mt = arp_wake_ts[i];
|
||||
}
|
||||
return mt;
|
||||
|
Loading…
Reference in New Issue
Block a user