From 28e1b34bacb4ebfcb54584e8d4425fa3b3917bb4 Mon Sep 17 00:00:00 2001 From: "Nicholas J. Kain" Date: Tue, 24 Nov 2020 21:02:51 -0500 Subject: [PATCH] Simplify logging and fix some format specifiers. --- CMakeLists.txt | 1 - src/arp.c | 88 +++++++++++++-------------- src/cfg.rl | 2 +- src/dhcp.c | 125 ++++++++++++++++++++------------------- src/duiaid.c | 12 ++-- src/ifchange.c | 26 ++++---- src/ifchd-parse.rl | 20 +++---- src/ifchd.c | 34 +++++------ src/ifset.c | 144 ++++++++++++++++++++++----------------------- src/leasefile.c | 22 +++---- src/lib/hwrng.c | 20 +++---- src/lib/log.c | 82 -------------------------- src/lib/privs.c | 8 +-- src/netlink.c | 2 +- src/nk/log.h | 29 +++++---- src/nl.c | 44 +++++++------- src/options.c | 14 ++--- src/rfkill.c | 4 +- src/sockd.c | 82 +++++++++++++------------- src/state.c | 44 +++++++------- 20 files changed, 363 insertions(+), 440 deletions(-) delete mode 100644 src/lib/log.c diff --git a/CMakeLists.txt b/CMakeLists.txt index a1bd0e8..eb5695e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -200,7 +200,6 @@ add_dependencies(ndhc ndhc_ragel) target_sources(ndhc PRIVATE "src/lib/io.c" - "src/lib/log.c" "src/lib/hwrng.c" "src/lib/random.c" "src/lib/privs.c" diff --git a/src/arp.c b/src/arp.c index d2496eb..aed60fd 100644 --- a/src/arp.c +++ b/src/arp.c @@ -156,8 +156,8 @@ static int arp_open_fd(struct client_state_t cs[static 1], bool defense) cs->arpFd = defense ? get_arp_defense_socket(cs) : get_arp_basic_socket(cs); if (cs->arpFd < 0) { - log_error("%s: (%s) Failed to create socket: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) Failed to create socket: %s", + client_config.interface, __func__, strerror(errno)); return -1; } return 0; @@ -175,26 +175,26 @@ static int arp_send(struct client_state_t cs[static 1], memcpy(addr.sll_addr, client_config.arp, 6); if (cs->arpFd < 0) { - log_warning("%s: arp: Send attempted when no ARP fd is open.", - client_config.interface); + log_line("%s: arp: Send attempted when no ARP fd is open.", + client_config.interface); return ret; } if (!carrier_isup()) { - log_error("%s: (%s) carrier down; sendto would fail", - client_config.interface, __func__); + log_line("%s: (%s) carrier down; sendto would fail", + client_config.interface, __func__); ret = -99; goto carrier_down; } ret = safe_sendto(cs->arpFd, (const char *)arp, sizeof *arp, 0, - (struct sockaddr *)&addr, sizeof addr); + (struct sockaddr *)&addr, sizeof addr); if (ret < 0 || (size_t)ret != sizeof *arp) { if (ret < 0) - log_error("%s: (%s) sendto failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) sendto failed: %s", + client_config.interface, __func__, strerror(errno)); else - log_error("%s: (%s) sendto short write: %d < %zu", - client_config.interface, __func__, ret, sizeof *arp); + log_line("%s: (%s) sendto short write: %d < %zu", + client_config.interface, __func__, ret, sizeof *arp); carrier_down: return ret; } @@ -343,28 +343,28 @@ static int arp_gw_success(struct client_state_t cs[static 1]) static int arp_validate_bpf(struct arpMsg *am) { if (am->h_proto != htons(ETH_P_ARP)) { - log_warning("%s: arp: IP header does not indicate ARP protocol", - client_config.interface); + log_line("%s: arp: IP header does not indicate ARP protocol", + client_config.interface); return 0; } if (am->htype != htons(ARPHRD_ETHER)) { - log_warning("%s: arp: ARP hardware type field invalid", - client_config.interface); + log_line("%s: arp: ARP hardware type field invalid", + client_config.interface); return 0; } if (am->ptype != htons(ETH_P_IP)) { - log_warning("%s: arp: ARP protocol type field invalid", - client_config.interface); + log_line("%s: arp: ARP protocol type field invalid", + client_config.interface); return 0; } if (am->hlen != 6) { - log_warning("%s: arp: ARP hardware address length invalid", - client_config.interface); + log_line("%s: arp: ARP hardware address length invalid", + client_config.interface); return 0; } if (am->plen != 4) { - log_warning("%s: arp: ARP protocol address length invalid", - client_config.interface); + log_line("%s: arp: ARP protocol address length invalid", + client_config.interface); return 0; } return 1; @@ -437,8 +437,8 @@ int arp_gw_check_timeout(struct client_state_t cs[static 1], long long nowts) log_line("%s: arp: Still waiting for gateway to reply to arp ping...", client_config.interface); if (arp_ping(cs, cs->routerAddr) < 0) { - log_warning("%s: arp: Failed to send ARP ping in retransmission.", - client_config.interface); + log_line("%s: arp: Failed to send ARP ping in retransmission.", + client_config.interface); return ARPR_FAIL; } } @@ -446,8 +446,8 @@ int arp_gw_check_timeout(struct client_state_t cs[static 1], long long nowts) log_line("%s: arp: Still waiting for DHCP agent to reply to arp ping...", client_config.interface); if (arp_ping(cs, cs->srcAddr) < 0) { - log_warning("%s: arp: Failed to send ARP ping in retransmission.", - client_config.interface); + log_line("%s: arp: Failed to send ARP ping in retransmission.", + client_config.interface); return ARPR_FAIL; } } @@ -474,8 +474,8 @@ int arp_gw_query_timeout(struct client_state_t cs[static 1], long long nowts) client_config.interface); ++cs->router_arp_sent; if (arp_ping(cs, cs->routerAddr) < 0) { - log_warning("%s: arp: Failed to send ARP ping in retransmission.", - client_config.interface); + log_line("%s: arp: Failed to send ARP ping in retransmission.", + client_config.interface); return ARPR_FAIL; } } @@ -490,8 +490,8 @@ int arp_gw_query_timeout(struct client_state_t cs[static 1], long long nowts) client_config.interface); ++cs->server_arp_sent; if (arp_ping(cs, cs->srcAddr) < 0) { - log_warning("%s: arp: Failed to send ARP ping in retransmission.", - client_config.interface); + log_line("%s: arp: Failed to send ARP ping in retransmission.", + client_config.interface); return ARPR_FAIL; } } @@ -508,7 +508,7 @@ int arp_collision_timeout(struct client_state_t cs[static 1], long long nowts) char clibuf[INET_ADDRSTRLEN]; struct in_addr temp_addr = {.s_addr = garp.dhcp_packet.yiaddr}; inet_ntop(AF_INET, &temp_addr, clibuf, sizeof clibuf); - log_line("%s: Lease of %s obtained. Lease time is %ld seconds.", + log_line("%s: Lease of %s obtained. Lease time is %u seconds.", client_config.interface, clibuf, cs->lease); cs->clientAddr = garp.dhcp_packet.yiaddr; cs->program_init = false; @@ -530,8 +530,8 @@ int arp_collision_timeout(struct client_state_t cs[static 1], long long nowts) return ARPR_OK; } if (arp_ip_anon_ping(cs, garp.dhcp_packet.yiaddr) < 0) { - log_warning("%s: arp: Failed to send ARP ping in retransmission.", - client_config.interface); + log_line("%s: arp: Failed to send ARP ping in retransmission.", + client_config.interface); return ARPR_FAIL; } garp.probe_wait_time = arp_gen_probe_wait(cs); @@ -547,8 +547,8 @@ int arp_query_gateway(struct client_state_t cs[static 1]) return ARPR_OK; } if (arp_get_gw_hwaddr(cs) < 0) { - log_warning("%s: (%s) Failed to send request to get gateway and agent hardware addresses: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) Failed to send request to get gateway and agent hardware addresses: %s", + client_config.interface, __func__, strerror(errno)); garp.wake_ts[AS_QUERY_GW_SEND] = curms() + ARP_RETRANS_DELAY; return ARPR_FAIL; } @@ -575,8 +575,8 @@ int arp_announce(struct client_state_t cs[static 1]) return ARPR_OK; } if (arp_announcement(cs) < 0) { - log_warning("%s: (%s) Failed to send ARP announcement: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) Failed to send ARP announcement: %s", + client_config.interface, __func__, strerror(errno)); garp.wake_ts[AS_ANNOUNCE] = curms() + ARP_RETRANS_DELAY ; return ARPR_FAIL; } @@ -608,17 +608,17 @@ int arp_do_defense(struct client_state_t cs[static 1]) if (!arp_validate_bpf_defense(cs, &garp.reply)) return ARPR_OK; - log_warning("%s: arp: Detected a peer attempting to use our IP!", client_config.interface); + log_line("%s: arp: Detected a peer attempting to use our IP!", client_config.interface); long long nowts = curms(); garp.wake_ts[AS_DEFENSE] = -1; if (!garp.last_conflict_ts || nowts - garp.last_conflict_ts < DEFEND_INTERVAL) { - log_warning("%s: arp: Defending our lease IP.", client_config.interface); + log_line("%s: arp: Defending our lease IP.", client_config.interface); if (arp_announcement(cs) < 0) return ARPR_FAIL; } else if (!garp.relentless_def) { - log_warning("%s: arp: Conflicting peer is persistent. Requesting new lease.", - client_config.interface); + log_line("%s: arp: Conflicting peer is persistent. Requesting new lease.", + client_config.interface); send_release(cs); return ARPR_CONFLICT; } else { @@ -686,8 +686,8 @@ int arp_do_collision_check(struct client_state_t cs[static 1]) client_config.interface); int r = send_decline(cs, garp.dhcp_packet.yiaddr); if (r < 0) { - log_warning("%s: Failed to send a decline notice packet.", - client_config.interface); + log_line("%s: Failed to send a decline notice packet.", + client_config.interface); return ARPR_FAIL; } return ARPR_CONFLICT; @@ -744,8 +744,8 @@ bool arp_packet_get(struct client_state_t cs[static 1]) if (r == 0) return false; if (r < 0) { - log_error("%s: (%s) ARP response read failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) ARP response read failed: %s", + client_config.interface, __func__, strerror(errno)); // Timeouts will trigger anyway without being forced. arp_min_close_fd(cs); if (arp_open_fd(cs, cs->arp_is_defense) < 0) diff --git a/src/cfg.rl b/src/cfg.rl index e365a3a..33cc30e 100644 --- a/src/cfg.rl +++ b/src/cfg.rl @@ -244,7 +244,7 @@ static void parse_cfgfile(const char fname[static 1]) if (reached_eof) break; if (!consumed && lend >= sizeof l - 1) - suicide("Line %u in config file '%s' is too long: %u > %u.", + suicide("Line %zu in config file '%s' is too long: %zu > %zu.", linenum, fname, lend, sizeof l - 1); if (consumed + 1 > lc) suicide("lc[%zu] - consumed[%zu] would underflow", lc, lend); diff --git a/src/dhcp.c b/src/dhcp.c index 5755ad6..d631d05 100644 --- a/src/dhcp.c +++ b/src/dhcp.c @@ -83,8 +83,8 @@ static ssize_t send_dhcp_unicast(struct client_state_t cs[static 1], ssize_t ret = -1; int fd = get_udp_unicast_socket(cs); if (fd < 0) { - log_error("%s: (%s) get_udp_unicast_socket failed", - client_config.interface, __func__); + log_line("%s: (%s) get_udp_unicast_socket failed", + client_config.interface, __func__); goto out; } @@ -94,36 +94,36 @@ static ssize_t send_dhcp_unicast(struct client_state_t cs[static 1], .sin_addr.s_addr = cs->serverAddr, }; if (connect(fd, (struct sockaddr *)&raddr, sizeof(struct sockaddr)) < 0) { - log_error("%s: (%s) connect failed: %s", client_config.interface, - __func__, strerror(errno)); + log_line("%s: (%s) connect failed: %s", client_config.interface, + __func__, strerror(errno)); goto out_fd; } // Send packets that are as short as possible. ssize_t endloc = get_end_option_idx(payload); if (endloc < 0) { - log_error("%s: (%s) No end marker. Not sending.", - client_config.interface, __func__); + log_line("%s: (%s) No end marker. Not sending.", + client_config.interface, __func__); goto out_fd; } const size_t el = (size_t)endloc + 1; if (el > sizeof payload->options) { - log_error("%s: (%s) Invalid value of endloc. Not sending.", - client_config.interface, __func__); + log_line("%s: (%s) Invalid value of endloc. Not sending.", + client_config.interface, __func__); goto out_fd; } size_t payload_len = sizeof *payload - (sizeof payload->options - el); if (!carrier_isup()) { - log_error("%s: (%s) carrier down; write would fail", - client_config.interface, __func__); + log_line("%s: (%s) carrier down; write would fail", + client_config.interface, __func__); ret = -99; goto out_fd; } ret = safe_write(fd, (const char *)payload, payload_len); if (ret < 0 || (size_t)ret != payload_len) - log_error("%s: (%s) write failed: %d", client_config.interface, - __func__, ret); + log_line("%s: (%s) write failed: %zd", client_config.interface, + __func__, ret); out_fd: close(fd); out: @@ -157,28 +157,28 @@ static int udp_checksum(struct ip_udp_dhcp_packet packet[static 1]) static int get_raw_packet_validate_bpf(struct ip_udp_dhcp_packet packet[static 1]) { if (packet->ip.version != IPVERSION) { - log_warning("%s: IP version is not IPv4.", client_config.interface); + log_line("%s: IP version is not IPv4.", client_config.interface); return 0; } if (packet->ip.ihl != sizeof packet->ip >> 2) { - log_warning("%s: IP header length incorrect.", - client_config.interface); + log_line("%s: IP header length incorrect.", + client_config.interface); return 0; } if (packet->ip.protocol != IPPROTO_UDP) { - log_warning("%s: IP header is not UDP: %d", - client_config.interface, packet->ip.protocol); + log_line("%s: IP header is not UDP: %d", + client_config.interface, packet->ip.protocol); return 0; } if (ntohs(packet->udp.dest) != DHCP_CLIENT_PORT) { - log_warning("%s: UDP destination port incorrect: %d", - client_config.interface, ntohs(packet->udp.dest)); + log_line("%s: UDP destination port incorrect: %d", + client_config.interface, ntohs(packet->udp.dest)); return 0; } if (ntohs(packet->udp.len) != ntohs(packet->ip.tot_len) - sizeof packet->ip) { - log_warning("%s: UDP header length incorrect.", - client_config.interface); + log_line("%s: UDP header length incorrect.", + client_config.interface); return 0; } return 1; @@ -197,8 +197,8 @@ static ssize_t get_raw_packet(struct client_state_t cs[static 1], if (inc < 0) { if (errno == EAGAIN || errno == EWOULDBLOCK) return -2; - log_warning("%s: (%s) read error %s", client_config.interface, - __func__, strerror(errno)); + log_line("%s: (%s) read error %s", client_config.interface, + __func__, strerror(errno)); return -1; } size_t iphdrlen = ntohs(packet.ip.tot_len); @@ -208,23 +208,24 @@ static ssize_t get_raw_packet(struct client_state_t cs[static 1], return -2; if (!ip_checksum(&packet)) { - log_error("%s: IP header checksum incorrect.", - client_config.interface); + log_line("%s: IP header checksum incorrect.", + client_config.interface); return -2; } if (iphdrlen <= sizeof packet.ip + sizeof packet.udp) { - log_error("%s: Packet received that is too small (%zu bytes).", - iphdrlen); + log_line("%s: Packet received that is too small (%zu bytes).", + client_config.interface, iphdrlen); return -2; } size_t l = iphdrlen - sizeof packet.ip - sizeof packet.udp; if (l > sizeof *payload) { - log_error("%s: Packet received that is too long (%zu bytes).", l); + log_line("%s: Packet received that is too long (%zu bytes).", + client_config.interface, l); return -2; } if (packet.udp.check && !udp_checksum(&packet)) { - log_error("%s: Packet with bad UDP checksum received. Ignoring.", - client_config.interface); + log_line("%s: Packet with bad UDP checksum received. Ignoring.", + client_config.interface); return -2; } if (srcaddr) @@ -239,23 +240,23 @@ static ssize_t send_dhcp_raw(struct dhcpmsg payload[static 1]) ssize_t ret = -1; int fd = get_raw_broadcast_socket(); if (fd < 0) { - log_error("%s: (%s) get_raw_broadcast_socket failed", - client_config.interface, __func__); + log_line("%s: (%s) get_raw_broadcast_socket failed", + client_config.interface, __func__); return ret; } // Send packets that are as short as possible. ssize_t endloc = get_end_option_idx(payload); if (endloc < 0) { - log_error("%s: (%s) No end marker. Not sending.", - client_config.interface, __func__); + log_line("%s: (%s) No end marker. Not sending.", + client_config.interface, __func__); close(fd); return ret; } const size_t el = (size_t)endloc + 1; if (el > sizeof payload->options) { - log_error("%s: (%s) Invalid value of endloc. Not sending.", - client_config.interface, __func__); + log_line("%s: (%s) Invalid value of endloc. Not sending.", + client_config.interface, __func__); close(fd); return ret; } @@ -299,8 +300,8 @@ static ssize_t send_dhcp_raw(struct dhcpmsg payload[static 1]) }; memcpy(da.sll_addr, "\xff\xff\xff\xff\xff\xff", 6); if (!carrier_isup()) { - log_error("%s: (%s) carrier down; sendto would fail", - client_config.interface, __func__); + log_line("%s: (%s) carrier down; sendto would fail", + client_config.interface, __func__); ret = -99; goto carrier_down; } @@ -308,11 +309,11 @@ static ssize_t send_dhcp_raw(struct dhcpmsg payload[static 1]) (struct sockaddr *)&da, sizeof da); if (ret < 0 || (size_t)ret != iud_len) { if (ret < 0) - log_error("%s: (%s) sendto failed: %s", client_config.interface, - __func__, strerror(errno)); + log_line("%s: (%s) sendto failed: %s", client_config.interface, + __func__, strerror(errno)); else - log_error("%s: (%s) sendto short write: %z < %zu", - client_config.interface, __func__, ret, iud_len); + log_line("%s: (%s) sendto short write: %zd < %zu", + client_config.interface, __func__, ret, iud_len); } carrier_down: close(fd); @@ -342,39 +343,39 @@ static int validate_dhcp_packet(struct client_state_t cs[static 1], uint8_t msgtype[static 1]) { if (len < offsetof(struct dhcpmsg, options)) { - log_warning("%s: Packet is too short to contain magic cookie. Ignoring.", - client_config.interface); + log_line("%s: Packet is too short to contain magic cookie. Ignoring.", + client_config.interface); return 0; } if (ntohl(packet->cookie) != DHCP_MAGIC) { - log_warning("%s: Packet with bad magic number. Ignoring.", - client_config.interface); + log_line("%s: Packet with bad magic number. Ignoring.", + client_config.interface); return 0; } if (packet->xid != cs->xid) { - log_warning("%s: Packet XID %lx does not equal our XID %lx. Ignoring.", - client_config.interface, packet->xid, cs->xid); + log_line("%s: Packet XID %x does not equal our XID %x. Ignoring.", + client_config.interface, packet->xid, cs->xid); return 0; } if (memcmp(packet->chaddr, client_config.arp, sizeof client_config.arp)) { - log_warning("%s: Packet client MAC %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x does not equal our MAC %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x. Ignoring it.", - client_config.interface, - packet->chaddr[0], packet->chaddr[1], packet->chaddr[2], - packet->chaddr[3], packet->chaddr[4], packet->chaddr[5], - client_config.arp[0], client_config.arp[1], - client_config.arp[2], client_config.arp[3], - client_config.arp[4], client_config.arp[5]); + log_line("%s: Packet client MAC %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x does not equal our MAC %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x. Ignoring it.", + client_config.interface, + packet->chaddr[0], packet->chaddr[1], packet->chaddr[2], + packet->chaddr[3], packet->chaddr[4], packet->chaddr[5], + client_config.arp[0], client_config.arp[1], + client_config.arp[2], client_config.arp[3], + client_config.arp[4], client_config.arp[5]); return 0; } ssize_t endloc = get_end_option_idx(packet); if (endloc < 0) { - log_warning("%s: Packet does not have an end option. Ignoring."); + log_line("%s: Packet does not have an end option. Ignoring.", client_config.interface); return 0; } *msgtype = get_option_msgtype(packet); if (!*msgtype) { - log_warning("%s: Packet does not specify a DHCP message type. Ignoring.", - client_config.interface); + log_line("%s: Packet does not specify a DHCP message type. Ignoring.", + client_config.interface); return 0; } char clientid[MAX_DOPT_SIZE]; @@ -383,8 +384,8 @@ static int validate_dhcp_packet(struct client_state_t cs[static 1], return 1; if (memcmp(client_config.clientid, clientid, min_size_t(cidlen, client_config.clientid_len))) { - log_warning("%s: Packet clientid does not match our clientid. Ignoring.", - client_config.interface); + log_line("%s: Packet clientid does not match our clientid. Ignoring.", + client_config.interface); return 0; } return 1; @@ -401,8 +402,8 @@ bool dhcp_packet_get(struct client_state_t cs[static 1], if (r < 0) { // Not a transient issue handled by packet collection functions. if (r != -2) { - log_error("%s: Error reading from listening socket: %s. Reopening.", - client_config.interface, strerror(errno)); + log_line("%s: Error reading from listening socket: %s. Reopening.", + client_config.interface, strerror(errno)); stop_dhcp_listen(cs); start_dhcp_listen(cs); } diff --git a/src/duiaid.c b/src/duiaid.c index 66ae61a..41ab76f 100644 --- a/src/duiaid.c +++ b/src/duiaid.c @@ -47,7 +47,7 @@ static void get_duid_path(char duidfile[static 1], size_t dlen) if (splen < 0) suicide("%s: snprintf failed; return=%d", __func__, splen); if ((size_t)splen >= dlen) - suicide("%s: snprintf dest buffer too small %d >= %u", + suicide("%s: snprintf dest buffer too small %d >= %zu", __func__, splen, sizeof dlen); } @@ -55,7 +55,7 @@ static void get_iaid_path(char iaidfile[static 1], size_t ilen, const uint8_t hwaddr[static 6], size_t hwaddrlen) { if (hwaddrlen != 6) - suicide("%s: Hardware address length=%u != 6 bytes", + suicide("%s: Hardware address length=%zu != 6 bytes", __func__, hwaddrlen); int splen = snprintf (iaidfile, ilen, @@ -65,7 +65,7 @@ static void get_iaid_path(char iaidfile[static 1], size_t ilen, if (splen < 0) suicide("%s: snprintf failed; return=%d", __func__, splen); if ((size_t)splen >= ilen) - suicide("%s: snprintf dest buffer too small %d >= %u", + suicide("%s: snprintf dest buffer too small %d >= %zu", __func__, splen, sizeof ilen); } @@ -126,7 +126,7 @@ static size_t generate_duid(struct nk_random_state s[static 1], { const size_t tlen = sizeof(uint16_t) + 4 * sizeof(uint32_t); if (dlen < tlen) - suicide("%s: dlen < %u", __func__, tlen); + suicide("%s: dlen < %zu", __func__, tlen); size_t off = 0; uint16_t typefield = htons(4); @@ -147,7 +147,7 @@ static size_t generate_iaid(struct nk_random_state s[static 1], char dest[static 1], size_t dlen) { if (dlen < sizeof(uint32_t)) - suicide("%s: dlen < %u", __func__, sizeof(uint32_t)); + suicide("%s: dlen < %zu", __func__, sizeof(uint32_t)); size_t off = 0; uint32_t r32 = nk_random_u32(s); @@ -204,7 +204,7 @@ void get_clientid(struct client_state_t cs[static 1], const uint8_t cid_type = 255; size_t cdl = sizeof cid_type + iaid_len + duid_len; if (cdl > sizeof cc->clientid) - suicide("%s: (%s) clientid length %u > %u", + suicide("%s: (%s) clientid length %zu > %zu", cc->interface, __func__, cdl, sizeof cc->clientid); uint8_t cid_len = 0; diff --git a/src/ifchange.c b/src/ifchange.c index cf84f09..900c2dd 100644 --- a/src/ifchange.c +++ b/src/ifchange.c @@ -52,26 +52,26 @@ static int ifcmd_raw(char buf[static 1], size_t buflen, char *optdata, size_t optlen) { if (!optdata) { - log_warning("%s: (%s) '%s' option has no data", - client_config.interface, __func__, optname); + log_line("%s: (%s) '%s' option has no data", + client_config.interface, __func__, optname); return -1; } if (optlen > INT_MAX) { - log_warning("%s: (%s) '%s' option optlen out of bounds", - client_config.interface, __func__, optname); + log_line("%s: (%s) '%s' option optlen out of bounds", + client_config.interface, __func__, optname); return -1; } if (buflen < strlen(optname) + optlen + 3) { - log_warning("%s: (%s) '%s' option buf too short", - client_config.interface, __func__, optname); + log_line("%s: (%s) '%s' option buf too short", + client_config.interface, __func__, optname); return -1; } int ioptlen = (int)optlen; ssize_t olen = snprintf(buf, buflen, "%s:%.*s;", optname, ioptlen, optdata); if (olen < 0 || (size_t)olen >= buflen) { - log_warning("%s: (%s) '%s' option would truncate, so it was dropped.", - client_config.interface, __func__, optname); + log_line("%s: (%s) '%s' option would truncate, so it was dropped.", + client_config.interface, __func__, optname); memset(buf, 0, buflen); return -1; } @@ -187,8 +187,8 @@ static int ifchd_cmd(char b[static 1], size_t bl, uint8_t *od, case DCODE_IPTTL: return ifcmd_u8(b, bl, "ipttl", od, ol); default: break; } - log_warning("%s: Invalid option code (%c) for ifchd cmd.", - client_config.interface, code); + log_line("%s: Invalid option code (%c) for ifchd cmd.", + client_config.interface, code); return -1; } @@ -196,7 +196,7 @@ static int ifchwrite(const char buf[static 1], size_t count) { ssize_t r = safe_write(ifchSock[0], buf, count); if (r < 0 || (size_t)r != count) { - log_error("%s: (%s) write failed: %d", client_config.interface, __func__, r); + log_line("%s: (%s) write failed: %zd", client_config.interface, __func__, r); return -1; } char data[256], control[256]; @@ -304,8 +304,8 @@ static size_t send_client_ip(char out[static 1], size_t olen, snlen = snprintf(out, olen, "ip4:%s,%s;", ip, sn); } if (snlen < 0 || (size_t)snlen >= olen) { - log_warning("%s: (%s) ip4 command would truncate so it was dropped.", - client_config.interface, __func__); + log_line("%s: (%s) ip4 command would truncate so it was dropped.", + client_config.interface, __func__); memset(out, 0, olen); return 0; } diff --git a/src/ifchd-parse.rl b/src/ifchd-parse.rl index d36a58b..5f9f3bd 100644 --- a/src/ifchd-parse.rl +++ b/src/ifchd-parse.rl @@ -198,13 +198,13 @@ int execute_buffer(const char newbuf[static 1]) ssize_t buflen = snprintf(buf, sizeof buf, "%s%s", cl.ibuf, newbuf); if (buflen < 0) { - log_error("%s: (%s) snprintf1 failed; your system is broken?", - client_config.interface, __func__); + log_line("%s: (%s) snprintf1 failed; your system is broken?", + client_config.interface, __func__); return -99; } if ((size_t)buflen >= sizeof buf) { - log_error("%s: (%s) input is too long for buffer", - client_config.interface, __func__); + log_line("%s: (%s) input is too long for buffer", + client_config.interface, __func__); return -99; } @@ -224,20 +224,20 @@ int execute_buffer(const char newbuf[static 1]) size_t taken = init_siz - bytes_left; ssize_t ilen = snprintf(cl.ibuf, sizeof cl.ibuf, "%s", buf + taken); if (ilen < 0) { - log_error("%s: (%s) snprintf2 failed; your system is broken?", - client_config.interface, __func__); + log_line("%s: (%s) snprintf2 failed; your system is broken?", + client_config.interface, __func__); return -99; } if ((size_t)ilen >= sizeof buf) { - log_error("%s: (%s) unconsumed input too long for buffer", - client_config.interface, __func__); + log_line("%s: (%s) unconsumed input too long for buffer", + client_config.interface, __func__); return -99; } } if (cs < ifchd_parser_first_final) { - log_error("%s: ifch received invalid commands", - client_config.interface); + log_line("%s: ifch received invalid commands", + client_config.interface); return -99; } return !cmdf ? 0 : -1; diff --git a/src/ifchd.c b/src/ifchd.c index ff96cab..641cb06 100644 --- a/src/ifchd.c +++ b/src/ifchd.c @@ -67,7 +67,7 @@ static void writeordie(int fd, const char buf[static 1], size_t len) { ssize_t r = safe_write(fd, buf, len); if (r < 0 || (size_t)r != len) - suicide("%s: (%s) write failed: %d", client_config.interface, + suicide("%s: (%s) write failed: %zd", client_config.interface, __func__, r); } @@ -78,13 +78,13 @@ static int write_append_fd(int to_fd, int from_fd, const char descr[static 1]) const off_t lse = lseek(from_fd, 0, SEEK_END); if (lse < 0) { - log_warning("%s: (%s) lseek(SEEK_END) failed %s", - client_config.interface, __func__, descr); + log_line("%s: (%s) lseek(SEEK_END) failed %s", + client_config.interface, __func__, descr); return -2; } if (lseek(from_fd, 0, SEEK_SET) < 0) { - log_warning("%s: (%s) lseek(SEEK_SET) failed %s", - client_config.interface, __func__, descr); + log_line("%s: (%s) lseek(SEEK_SET) failed %s", + client_config.interface, __func__, descr); return -2; } @@ -131,8 +131,8 @@ static int write_resolve_conf(void) *q++ = '\0'; ssize_t sl = snprintf(buf, sizeof buf, "%s", p); if (sl < 0 || (size_t)sl >= sizeof buf) { - log_warning("%s: (%s) snprintf failed appending nameservers", - client_config.interface, __func__); + log_line("%s: (%s) snprintf failed appending nameservers", + client_config.interface, __func__); } writeordie(resolv_conf_fd, ns_str, strlen(ns_str)); @@ -152,8 +152,8 @@ static int write_resolve_conf(void) *q++ = '\0'; ssize_t sl = snprintf(buf, sizeof buf, "%s", p); if (sl < 0 || (size_t)sl >= sizeof buf) { - log_warning("%s: (%s) snprintf failed appending domains", - client_config.interface, __func__); + log_line("%s: (%s) snprintf failed appending domains", + client_config.interface, __func__); } if (numdoms == 0) { @@ -213,13 +213,13 @@ int perform_dns(const char str[static 1], size_t len) return 0; int ret = -1; if (len > sizeof cl.namesvrs) { - log_line("DNS server list is too long: %zu > %zu", len, cl.namesvrs); + log_line("DNS server list is too long: %zu > %zu", len, sizeof cl.namesvrs); return ret; } ssize_t sl = snprintf(cl.namesvrs, sizeof cl.namesvrs, "%s", str); if (sl < 0 || (size_t)sl >= sizeof cl.namesvrs) { - log_warning("%s: (%s) snprintf failed", - client_config.interface, __func__); + log_line("%s: (%s) snprintf failed", + client_config.interface, __func__); } ret = write_resolve_conf(); if (ret >= 0) @@ -255,13 +255,13 @@ int perform_domain(const char str[static 1], size_t len) return 0; int ret = -1; if (len > sizeof cl.domains) { - log_line("DNS domain list is too long: %zu > %zu", len, cl.namesvrs); + log_line("DNS domain list is too long: %zu > %zu", len, sizeof cl.namesvrs); return ret; } ssize_t sl = snprintf(cl.domains, sizeof cl.domains, "%s", str); if (sl < 0 || (size_t)sl >= sizeof cl.domains) { - log_warning("%s: (%s) snprintf failed", - client_config.interface, __func__); + log_line("%s: (%s) snprintf failed", + client_config.interface, __func__); } ret = write_resolve_conf(); if (ret <= 0) @@ -378,13 +378,13 @@ static void setup_resolv_conf(void) ssize_t sl = snprintf(buf, sizeof buf, "%s.head", resolv_conf_d); if (sl < 0 || (size_t)sl >= sizeof buf) - log_warning("snprintf failed appending resolv_conf_head; path too long?"); + log_line("snprintf failed appending resolv_conf_head; path too long?"); else resolv_conf_head_fd = open(buf, O_RDONLY|O_CLOEXEC, 0); sl = snprintf(buf, sizeof buf, "%s.tail", resolv_conf_d); if (sl < 0 || (size_t)sl >= sizeof buf) - log_warning("snprintf failed appending resolv_conf_tail; path too long?"); + log_line("snprintf failed appending resolv_conf_tail; path too long?"); else resolv_conf_tail_fd = open(buf, O_RDONLY|O_CLOEXEC, 0); diff --git a/src/ifset.c b/src/ifset.c index 94012bf..6d86873 100644 --- a/src/ifset.c +++ b/src/ifset.c @@ -93,11 +93,11 @@ static ssize_t rtnl_do_send(int fd, const uint8_t *sbuf, size_t slen, (struct sockaddr *)&nl_addr, sizeof nl_addr); if (r < 0 || (size_t)r != slen) { if (r < 0) - log_error("%s: (%s) netlink sendto failed: %s", - client_config.interface, fnname, strerror(errno)); + log_line("%s: (%s) netlink sendto failed: %s", + client_config.interface, fnname, strerror(errno)); else - log_error("%s: (%s) netlink sendto short write: %z < %zu", - client_config.interface, fnname, r, slen); + log_line("%s: (%s) netlink sendto short write: %zd < %zu", + client_config.interface, fnname, r, slen); return -1; } struct iovec iov = { @@ -112,13 +112,13 @@ static ssize_t rtnl_do_send(int fd, const uint8_t *sbuf, size_t slen, }; r = safe_recvmsg(fd, &msg, 0); if (r < 0) { - log_error("%s: (%s) netlink recvmsg failed: %s", - client_config.interface, fnname, strerror(errno)); + log_line("%s: (%s) netlink recvmsg failed: %s", + client_config.interface, fnname, strerror(errno)); return -1; } if (msg.msg_flags & MSG_TRUNC) { - log_error("%s: (%s) Buffer not long enough for message.", - client_config.interface, fnname); + log_line("%s: (%s) Buffer not long enough for message.", + client_config.interface, fnname); return -1; } if ((size_t)r < sizeof(struct nlmsghdr)) { @@ -137,15 +137,15 @@ static ssize_t rtnl_do_send(int fd, const uint8_t *sbuf, size_t slen, client_config.interface, fnname, nlerr); return -3; } - log_error("%s: (%s) netlink sendto returned NLMSG_ERROR: %s", - client_config.interface, fnname, strerror(nlerr)); + log_line("%s: (%s) netlink sendto returned NLMSG_ERROR: %s", + client_config.interface, fnname, strerror(nlerr)); return -1; } } if (nlh->nlmsg_type == NLMSG_DONE) return -2; - log_error("%s: (%s) netlink sendto returned an error.", - client_config.interface, __func__); + log_line("%s: (%s) netlink sendto returned an error.", + client_config.interface, __func__); return -1; } @@ -182,8 +182,8 @@ static ssize_t rtnl_addr_broadcast_send(int fd, int type, int ifa_flags, struct ifaddrmsg *ifaddrmsg; if (!ipaddr && !bcast) { - log_warning("%s: (%s) no ipaddr or bcast!", - client_config.interface, __func__); + log_line("%s: (%s) no ipaddr or bcast!", + client_config.interface, __func__); return -1; } @@ -205,16 +205,16 @@ static ssize_t rtnl_addr_broadcast_send(int fd, int type, int ifa_flags, if (ipaddr) { if (nl_add_rtattr(header, sizeof request, IFA_LOCAL, ipaddr, sizeof *ipaddr) < 0) { - log_error("%s: (%s) couldn't add IFA_LOCAL to nlmsg", - client_config.interface, __func__); + log_line("%s: (%s) couldn't add IFA_LOCAL to nlmsg", + client_config.interface, __func__); return -1; } } if (bcast) { if (nl_add_rtattr(header, sizeof request, IFA_BROADCAST, bcast, sizeof *bcast) < 0) { - log_error("%s: (%s) couldn't add IFA_BROADCAST to nlmsg", - client_config.interface, __func__); + log_line("%s: (%s) couldn't add IFA_BROADCAST to nlmsg", + client_config.interface, __func__); return -1; } } @@ -248,28 +248,28 @@ static ssize_t rtnl_set_default_gw_v4(int fd, uint32_t gw4, int metric) uint32_t dstaddr4 = 0; if (nl_add_rtattr(header, sizeof request, RTA_DST, &dstaddr4, sizeof dstaddr4) < 0) { - log_error("%s: (%s) couldn't add RTA_DST to nlmsg", - client_config.interface, __func__); + log_line("%s: (%s) couldn't add RTA_DST to nlmsg", + client_config.interface, __func__); return -1; } if (nl_add_rtattr(header, sizeof request, RTA_OIF, &client_config.ifindex, sizeof client_config.ifindex) < 0) { - log_error("%s: (%s) couldn't add RTA_OIF to nlmsg", - client_config.interface, __func__); + log_line("%s: (%s) couldn't add RTA_OIF to nlmsg", + client_config.interface, __func__); return -1; } if (nl_add_rtattr(header, sizeof request, RTA_GATEWAY, &gw4, sizeof gw4) < 0) { - log_error("%s: (%s) couldn't add RTA_GATEWAY to nlmsg", - client_config.interface, __func__); + log_line("%s: (%s) couldn't add RTA_GATEWAY to nlmsg", + client_config.interface, __func__); return -1; } if (metric > 0) { if (nl_add_rtattr(header, sizeof request, RTA_PRIORITY, &metric, sizeof metric) < 0) { - log_error("%s: (%s) couldn't add RTA_PRIORITY to nlmsg", - client_config.interface, __func__); + log_line("%s: (%s) couldn't add RTA_PRIORITY to nlmsg", + client_config.interface, __func__); return -1; } } @@ -333,8 +333,8 @@ int perform_carrier(void) uint32_t flags; int fd = socket(AF_NETLINK, SOCK_DGRAM | SOCK_NONBLOCK, NETLINK_ROUTE); if (fd < 0) { - log_error("%s: (%s) netlink socket open failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) netlink socket open failed: %s", + client_config.interface, __func__, strerror(errno)); goto fail; } @@ -359,8 +359,8 @@ static int link_set_flags(int fd, uint32_t flags) int r = link_flags_get(fd, &oldflags); if (r < 0) { - log_error("%s: (%s) failed to get old link flags: %u", - client_config.interface, __func__, r); + log_line("%s: (%s) failed to get old link flags: %u", + client_config.interface, __func__, r); return -1; } if ((oldflags & flags) == flags) @@ -375,8 +375,8 @@ static int link_unset_flags(int fd, uint32_t flags) int r = link_flags_get(fd, &oldflags); if (r < 0) { - log_error("%s: (%s) failed to get old link flags: %u", - client_config.interface, __func__, r); + log_line("%s: (%s) failed to get old link flags: %u", + client_config.interface, __func__, r); return -1; } if ((oldflags & flags) == 0) @@ -430,8 +430,8 @@ static void ipbcpfx_clear_others_do(const struct nlmsghdr *nlh, void *data) tb[IFA_BROADCAST] ? RTA_DATA(tb[IFA_BROADCAST]) : (uint32_t *)0, ifm->ifa_prefixlen); if (r < 0 && r != -2) { - log_warning("%s: (%s) Failed to delete IP and broadcast addresses.", - client_config.interface, __func__); + log_line("%s: (%s) Failed to delete IP and broadcast addresses.", + client_config.interface, __func__); } return; } @@ -469,8 +469,8 @@ static ssize_t rtnl_if_mtu_set(int fd, unsigned int mtu) int r = link_flags_get(fd, &oldflags); if (r < 0) { - log_error("%s: (%s) failed to get old link flags: %u", - client_config.interface, __func__, r); + log_line("%s: (%s) failed to get old link flags: %u", + client_config.interface, __func__, r); return -1; } @@ -488,8 +488,8 @@ static ssize_t rtnl_if_mtu_set(int fd, unsigned int mtu) if (nl_add_rtattr(header, sizeof request, IFLA_MTU, &mtu, sizeof mtu) < 0) { - log_error("%s: (%s) couldn't add IFLA_MTU to nlmsg", - client_config.interface, __func__); + log_line("%s: (%s) couldn't add IFLA_MTU to nlmsg", + client_config.interface, __func__); return -1; } @@ -508,8 +508,8 @@ int perform_ifup(void) int r = link_set_flags(fd, IFF_UP); if (r < 0) { if (r != -3) - log_error("%s: (%s) Failed to set link to be up.", - client_config.interface, __func__); + log_line("%s: (%s) Failed to set link to be up.", + client_config.interface, __func__); else log_line("%s: (%s) rfkill is set; waiting until it is unset", client_config.interface, __func__); @@ -528,22 +528,22 @@ int perform_ip_subnet_bcast(const char str_ipaddr[static 1], uint8_t prefixlen; if (inet_pton(AF_INET, str_ipaddr, &ipaddr) <= 0) { - log_error("%s: (%s) bad interface ip address: '%s'", - client_config.interface, __func__, str_ipaddr); + log_line("%s: (%s) bad interface ip address: '%s'", + client_config.interface, __func__, str_ipaddr); goto fail; } if (inet_pton(AF_INET, str_subnet, &subnet) <= 0) { - log_error("%s: (%s) bad interface subnet address: '%s'", - client_config.interface, __func__, str_subnet); + log_line("%s: (%s) bad interface subnet address: '%s'", + client_config.interface, __func__, str_subnet); goto fail; } prefixlen = subnet4_to_prefixlen(subnet.s_addr); if (str_bcast) { if (inet_pton(AF_INET, str_bcast, &bcast) <= 0) { - log_error("%s: (%s) bad interface broadcast address: '%s'", - client_config.interface, __func__, str_bcast); + log_line("%s: (%s) bad interface broadcast address: '%s'", + client_config.interface, __func__, str_bcast); goto fail; } } else { @@ -553,19 +553,19 @@ int perform_ip_subnet_bcast(const char str_ipaddr[static 1], fd = socket(AF_NETLINK, SOCK_DGRAM | SOCK_NONBLOCK, NETLINK_ROUTE); if (fd < 0) { - log_error("%s: (%s) netlink socket open failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) netlink socket open failed: %s", + client_config.interface, __func__, strerror(errno)); goto fail; } r = ipbcpfx_clear_others(fd, ipaddr.s_addr, bcast.s_addr, prefixlen); if (r < 0 && r > -3) { if (r == -1) - log_error("%s: (%s) error requesting link ip address list", - client_config.interface, __func__); + log_line("%s: (%s) error requesting link ip address list", + client_config.interface, __func__); else if (r == -2) - log_error("%s: (%s) error receiving link ip address list", - client_config.interface, __func__); + log_line("%s: (%s) error receiving link ip address list", + client_config.interface, __func__); goto fail_fd; } @@ -589,8 +589,8 @@ int perform_ip_subnet_bcast(const char str_ipaddr[static 1], if (link_set_flags(fd, IFF_UP | IFF_RUNNING) < 0) { ret = -1; - log_error("%s: (%s) Failed to set link to be up and running.", - client_config.interface, __func__); + log_line("%s: (%s) Failed to set link to be up and running.", + client_config.interface, __func__); goto fail_fd; } ret = 0; @@ -608,21 +608,21 @@ int perform_router(const char str_router[static 1], size_t len) goto fail; struct in_addr router; if (inet_pton(AF_INET, str_router, &router) <= 0) { - log_error("%s: (%s) bad router ip address: '%s'", - client_config.interface, __func__, str_router); + log_line("%s: (%s) bad router ip address: '%s'", + client_config.interface, __func__, str_router); goto fail; } int fd = socket(AF_NETLINK, SOCK_DGRAM | SOCK_NONBLOCK, NETLINK_ROUTE); if (fd < 0) { - log_error("%s: (%s) netlink socket open failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) netlink socket open failed: %s", + client_config.interface, __func__, strerror(errno)); goto fail; } if (rtnl_set_default_gw_v4(fd, router.s_addr, client_config.metric) < 0) { - log_error("%s: (%s) failed to set route: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) failed to set route: %s", + client_config.interface, __func__, strerror(errno)); goto fail_fd; } log_line("%s: Gateway router set to: '%s'", client_config.interface, @@ -644,38 +644,38 @@ int perform_mtu(const char str[static 1], size_t len) char *estr; long tmtu = strtol(str, &estr, 10); if (estr == str) { - log_error("%s: (%s) provided mtu arg isn't a valid number", - client_config.interface, __func__); + log_line("%s: (%s) provided mtu arg isn't a valid number", + client_config.interface, __func__); goto fail; } if ((tmtu == LONG_MAX || tmtu == LONG_MIN) && errno == ERANGE) { - log_error("%s: (%s) provided mtu arg would overflow a long", - client_config.interface, __func__); + log_line("%s: (%s) provided mtu arg would overflow a long", + client_config.interface, __func__); goto fail; } if (tmtu > INT_MAX) { - log_error("%s: (%s) provided mtu arg would overflow int", - client_config.interface, __func__); + log_line("%s: (%s) provided mtu arg would overflow int", + client_config.interface, __func__); goto fail; } // 68 bytes for IPv4. 1280 bytes for IPv6. if (tmtu < 68) { - log_error("%s: (%s) provided mtu arg (%ul) less than minimum MTU (68)", - client_config.interface, __func__, tmtu); + log_line("%s: (%s) provided mtu arg (%ld) less than minimum MTU (68)", + client_config.interface, __func__, tmtu); goto fail; } mtu = (unsigned int)tmtu; fd = socket(AF_NETLINK, SOCK_DGRAM | SOCK_NONBLOCK, NETLINK_ROUTE); if (fd < 0) { - log_error("%s: (%s) netlink socket open failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) netlink socket open failed: %s", + client_config.interface, __func__, strerror(errno)); goto fail; } if (rtnl_if_mtu_set(fd, mtu) < 0) { - log_error("%s: (%s) failed to set MTU [%d]", - client_config.interface, __func__, mtu); + log_line("%s: (%s) failed to set MTU [%d]", + client_config.interface, __func__, mtu); goto fail_fd; } log_line("%s: MTU set to: '%s'", client_config.interface, str); diff --git a/src/leasefile.c b/src/leasefile.c index 17637bb..68a9c11 100644 --- a/src/leasefile.c +++ b/src/leasefile.c @@ -52,7 +52,7 @@ static void get_leasefile_path(char *leasefile, size_t dlen, char *ifname) suicide("%s: (%s) snprintf failed; return=%d", client_config.interface, __func__, splen); if ((size_t)splen >= dlen) - suicide("%s: (%s) snprintf dest buffer too small %d >= %u", + suicide("%s: (%s) snprintf dest buffer too small %d >= %zu", client_config.interface, __func__, splen, sizeof dlen); } @@ -71,32 +71,32 @@ void write_leasefile(struct in_addr ipnum) char ip[INET_ADDRSTRLEN]; char out[INET_ADDRSTRLEN*2]; if (leasefilefd < 0) { - log_error("%s: (%s) leasefile fd < 0; no leasefile will be written", - client_config.interface, __func__); + log_line("%s: (%s) leasefile fd < 0; no leasefile will be written", + client_config.interface, __func__); return; } inet_ntop(AF_INET, &ipnum, ip, sizeof ip); ssize_t olen = snprintf(out, sizeof out, "%s\n", ip); if (olen < 0 || (size_t)olen >= sizeof ip) { - log_error("%s: (%s) snprintf failed; return=%d", - client_config.interface, __func__, olen); + log_line("%s: (%s) snprintf failed; return=%zd", + client_config.interface, __func__, olen); return; } if (safe_ftruncate(leasefilefd, 0)) { - log_warning("%s: (%s) Failed to truncate lease file: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) Failed to truncate lease file: %s", + client_config.interface, __func__, strerror(errno)); return; } if (lseek(leasefilefd, 0, SEEK_SET) == (off_t)-1) { - log_warning("%s: (%s) Failed to seek to start of lease file: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) Failed to seek to start of lease file: %s", + client_config.interface, __func__, strerror(errno)); return; } size_t outlen = strlen(out); ssize_t ret = safe_write(leasefilefd, out, outlen); if (ret < 0 || (size_t)ret != outlen) - log_warning("%s: (%s) Failed to write ip to lease file.", - client_config.interface, __func__); + log_line("%s: (%s) Failed to write ip to lease file.", + client_config.interface, __func__); else fsync(leasefilefd); } diff --git a/src/lib/hwrng.c b/src/lib/hwrng.c index b758a1f..a81d708 100644 --- a/src/lib/hwrng.c +++ b/src/lib/hwrng.c @@ -50,12 +50,12 @@ static bool nk_getrandom(char *seed, size_t len) if (r <= 0) { if (r == 0) { // Failsafe to guard against infinite loops. - log_warning("%s: getrandom() returned no entropy", __func__); + log_line("%s: getrandom() returned no entropy", __func__); return false; } if (errno == EINTR) continue; - log_warning("%s: getrandom() failed: %s", __func__, strerror(errno)); + log_line("%s: getrandom() failed: %s", __func__, strerror(errno)); return false; } fetched += (size_t)r; @@ -76,8 +76,8 @@ static bool nk_get_rnd_clk(char *seed, size_t len) for (size_t i = 0; i < len; ++i) { int r = clock_gettime(CLOCK_REALTIME, &ts); if (r < 0) { - log_warning("%s: Could not call clock_gettime(CLOCK_REALTIME): %s", - __func__, strerror(errno)); + log_line("%s: Could not call clock_gettime(CLOCK_REALTIME): %s", + __func__, strerror(errno)); return false; } char *p = (char *)&ts.tv_sec; @@ -97,16 +97,16 @@ static bool nk_get_urandom(char *seed, size_t len) { int fd = open("/dev/urandom", O_RDONLY); if (fd < 0) { - log_warning("%s: Could not open /dev/urandom: %s", __func__, - strerror(errno)); + log_line("%s: Could not open /dev/urandom: %s", __func__, + strerror(errno)); return false; } bool ret = true; int r = safe_read(fd, seed, len); if (r < 0) { ret = false; - log_warning("%s: Could not read /dev/urandom: %s", - __func__, strerror(errno)); + log_line("%s: Could not read /dev/urandom: %s", + __func__, strerror(errno)); } close(fd); return ret; @@ -119,8 +119,8 @@ void nk_get_hwrng(void *seed, size_t len) return; if (nk_get_urandom(s, len)) return; - log_warning("%s: Seeding PRNG via system clock. May be predictable.", - __func__); + log_line("%s: Seeding PRNG via system clock. May be predictable.", + __func__); if (nk_get_rnd_clk(s, len)) return; suicide("%s: All methods to seed PRNG failed. Exiting.", __func__); diff --git a/src/lib/log.c b/src/lib/log.c deleted file mode 100644 index c5aebf9..0000000 --- a/src/lib/log.c +++ /dev/null @@ -1,82 +0,0 @@ -/* log.c - simple logging support - * - * Copyright 2003-2018 Nicholas J. Kain - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include "nk/log.h" - -/* global logging flags */ -int gflags_quiet = 0; -int gflags_detach = 0; -int gflags_debug = 0; -char *gflags_log_name = 0; - -#define log_syslog(level) do { \ - openlog(gflags_log_name, LOG_PID, LOG_DAEMON); \ - va_start(argp, format); \ - vsyslog(level | LOG_DAEMON, format, argp); \ - va_end(argp); \ - closelog(); } while(0) - -#define log_stdio() do { \ - va_start(argp, format); \ - vfprintf(stderr, format, argp); \ - fprintf(stderr, "\n"); \ - va_end(argp); } while(0) - -__attribute__ ((format (printf, 2, 3))) -void log_line_l(int level, const char format[static 1], ...) -{ - va_list argp; - - if (gflags_quiet) - return; - - if (gflags_detach) - log_syslog(level); - else - log_stdio(); -} - -__attribute__ ((format (printf, 1, 2))) -void __attribute__((noreturn)) suicide(const char format[static 1], ...) -{ - va_list argp; - - if (gflags_detach) - log_syslog(LOG_ERR); - else - log_stdio(); - exit(EXIT_FAILURE); -} - -#undef log_syslog -#undef log_stdio - diff --git a/src/lib/privs.c b/src/lib/privs.c index aa8c817..01d79bf 100644 --- a/src/lib/privs.c +++ b/src/lib/privs.c @@ -71,8 +71,8 @@ static size_t nk_get_capability_vinfo(uint32_t version[static 1]) case _LINUX_CAPABILITY_VERSION_2: *version = _LINUX_CAPABILITY_VERSION_2; return _LINUX_CAPABILITY_U32S_2; - default: log_warning("%s: unknown capability version %x, using %x", - __func__, *version, _LINUX_CAPABILITY_VERSION_3); + default: log_line("%s: unknown capability version %x, using %x", + __func__, *version, _LINUX_CAPABILITY_VERSION_3); case _LINUX_CAPABILITY_VERSION_3: *version = _LINUX_CAPABILITY_VERSION_3; return _LINUX_CAPABILITY_U32S_3; @@ -105,8 +105,8 @@ static void nk_set_capability_epilogue(const unsigned char *caps, for (size_t i = 0; i < caplen; ++i) { size_t j = caps[i] / 32; if (j >= csize) - suicide("%s: caps[%zu] == %u, which is >= %u and out of range", - __func__, caps[i], csize * 32); + suicide("%s: caps[%zu] == %d, which is >= %zu and out of range", + __func__, i, caps[i], csize * 32); mask[j] |= (uint32_t)CAP_TO_MASK(caps[i] - 32 * j); } for (size_t i = 0; i < csize; ++i) { diff --git a/src/netlink.c b/src/netlink.c index 2a4d962..1d84a8f 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -115,7 +115,7 @@ static int get_if_index_and_mac(const struct nlmsghdr *nlh, sizeof client_config.interface)) { client_config.ifindex = ifm->ifi_index; if (!tb[IFLA_ADDRESS]) - suicide("FATAL: Adapter %s lacks a hardware address."); + suicide("FATAL: Adapter %s lacks a hardware address.", client_config.interface); int maclen = tb[IFLA_ADDRESS]->rta_len - 4; if (maclen != 6) suicide("FATAL: Adapter hardware address length should be 6, but is %u.", diff --git a/src/nk/log.h b/src/nk/log.h index 4a3d28d..0dfb278 100644 --- a/src/nk/log.h +++ b/src/nk/log.h @@ -1,6 +1,6 @@ /* log.h - simple logging support * - * Copyright 2003-2015 Nicholas J. Kain + * Copyright 2003-2020 Nicholas J. Kain * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,20 +29,25 @@ #ifndef NCM_LOG_H_ #define NCM_LOG_H_ -#include +#include +#include -extern int gflags_quiet; -extern int gflags_detach; -extern int gflags_debug; -extern char *gflags_log_name; +#define log_line(...) do { \ + dprintf(2, __VA_ARGS__); \ + dprintf(2, "\n"); } while (0) -#define log_line(...) log_line_l(LOG_INFO, __VA_ARGS__) -#define log_debug(...) if (gflags_debug) log_line_l(LOG_DEBUG, __VA_ARGS__) -#define log_warning(...) log_line_l(LOG_WARNING, __VA_ARGS__) -#define log_error(...) log_line_l(LOG_ERR, __VA_ARGS__) +#ifndef NDEBUG +#define log_debug(...) do { \ + dprintf(2, __VA_ARGS__); \ + dprintf(2, "\n"); } while (0) +#else +#define log_debug(...) do {} while (0) +#endif -void log_line_l(int level, const char *format, ...); -void __attribute__((noreturn)) suicide(const char *format, ...); +#define suicide(...) do { \ + dprintf(2, __VA_ARGS__); \ + dprintf(2, "\n"); \ + exit(EXIT_FAILURE); } while (0) #endif diff --git a/src/nl.c b/src/nl.c index 31d72e3..3afd9cb 100644 --- a/src/nl.c +++ b/src/nl.c @@ -99,16 +99,16 @@ ssize_t nl_recv_buf(int fd, char buf[static 1], size_t blen) if (ret < 0) { if (errno == EAGAIN || errno == EWOULDBLOCK) return 0; - log_error("%s: recvmsg failed: %s", __func__, strerror(errno)); + log_line("%s: recvmsg failed: %s", __func__, strerror(errno)); return -1; } if (msg.msg_flags & MSG_TRUNC) { - log_error("%s: Buffer not long enough for message.", __func__); + log_line("%s: Buffer not long enough for message.", __func__); return -1; } if (msg.msg_namelen != sizeof addr) { - log_error("%s: Response was not of the same address family.", - __func__); + log_line("%s: Response was not of the same address family.", + __func__); return -1; } return ret; @@ -172,11 +172,11 @@ static int nl_sendgetlink_do(int fd, uint32_t seq, int ifindex, int by_ifindex) (struct sockaddr *)&addr, sizeof addr); if (r < 0 || (size_t)r != nlh->nlmsg_len) { if (r < 0) - log_error("%s: sendto socket failed: %s", __func__, - strerror(errno)); + log_line("%s: sendto socket failed: %s", __func__, + strerror(errno)); else - log_error("%s: sendto short write: %z < %zu", __func__, r, - nlh->nlmsg_len); + log_line("%s: sendto short write: %zd < %u", __func__, r, + nlh->nlmsg_len); return -1; } return 0; @@ -218,11 +218,11 @@ static int nl_sendgetaddr_do(int fd, uint32_t seq, uint32_t ifindex, int by_ifin (struct sockaddr *)&addr, sizeof addr); if (r < 0 || (size_t)r != nlh->nlmsg_len) { if (r < 0) - log_error("%s: sendto socket failed: %s", __func__, - strerror(errno)); + log_line("%s: sendto socket failed: %s", __func__, + strerror(errno)); else - log_error("%s: sendto short write: %z < %zu", __func__, r, - nlh->nlmsg_len); + log_line("%s: sendto short write: %zd < %u", __func__, r, + nlh->nlmsg_len); return -1; } return 0; @@ -263,7 +263,7 @@ int nl_open(int nltype, unsigned nlgroup, uint32_t *nlportid) int fd; fd = socket(AF_NETLINK, SOCK_RAW | SOCK_NONBLOCK | SOCK_CLOEXEC, nltype); if (fd < 0) { - log_error("%s: socket failed: %s", __func__, strerror(errno)); + log_line("%s: socket failed: %s", __func__, strerror(errno)); return -1; } socklen_t al; @@ -272,30 +272,30 @@ int nl_open(int nltype, unsigned nlgroup, uint32_t *nlportid) .nl_groups = nlgroup, }; if (bind(fd, (struct sockaddr *)&nlsock, sizeof nlsock) < 0) { - log_error("%s: bind to group failed: %s", - __func__, strerror(errno)); + log_line("%s: bind to group failed: %s", + __func__, strerror(errno)); goto err_close; } al = sizeof nlsock; if (getsockname(fd, (struct sockaddr *)&nlsock, &al) < 0) { - log_error("%s: getsockname failed: %s", - __func__, strerror(errno)); + log_line("%s: getsockname failed: %s", + __func__, strerror(errno)); goto err_close; } if (al != sizeof nlsock) { - log_error("%s: Bound socket doesn't have right family size.", - __func__); + log_line("%s: Bound socket doesn't have right family size.", + __func__); goto err_close; } if (nlsock.nl_family != AF_NETLINK) { - log_error("%s: Bound socket isn't AF_NETLINK.", - __func__); + log_line("%s: Bound socket isn't AF_NETLINK.", + __func__); goto err_close; } if (nlportid) *nlportid = nlsock.nl_pid; return fd; - err_close: +err_close: close(fd); return -1; } diff --git a/src/options.c b/src/options.c index c6d9706..edbf878 100644 --- a/src/options.c +++ b/src/options.c @@ -129,7 +129,7 @@ ssize_t get_end_option_idx(const struct dhcpmsg * const packet) break; i += (size_t)packet->options[i+1] + 1; } - log_warning("get_end_option_idx: Did not find DCODE_END marker."); + log_line("get_end_option_idx: Did not find DCODE_END marker."); return -1; } @@ -148,17 +148,17 @@ size_t add_option_string(struct dhcpmsg *packet, uint8_t code, { size_t len = sizeof_option_str(code, slen); if (slen > 255 || len != slen + 2) { - log_warning("add_option_string: Length checks failed."); + log_line("add_option_string: Length checks failed."); return 0; } ssize_t end = get_end_option_idx(packet); if (end < 0) { - log_warning("add_option_string: Buffer has no DCODE_END marker."); + log_line("add_option_string: Buffer has no DCODE_END marker."); return 0; } if ((size_t)end + len >= sizeof packet->options) { - log_warning("add_option_string: No space for option 0x%02x.", code); + log_line("add_option_string: No space for option 0x%02x.", code); return 0; } packet->options[end] = code; @@ -173,12 +173,12 @@ static ssize_t add_option_check(struct dhcpmsg *packet, uint8_t code, { ssize_t end = get_end_option_idx(packet); if (end < 0) { - log_warning("add_u%01u_option: Buffer has no DCODE_END marker.", rlen*8); + log_line("add_u%01u_option: Buffer has no DCODE_END marker.", rlen*8); return -1; } if ((size_t)end + 2 + rlen >= sizeof packet->options) { - log_warning("add_u%01u_option: No space for option 0x%02x.", - rlen*8, code); + log_line("add_u%01u_option: No space for option 0x%02x.", + rlen*8, code); return -1; } return end; diff --git a/src/rfkill.c b/src/rfkill.c index 4a927eb..49736b0 100644 --- a/src/rfkill.c +++ b/src/rfkill.c @@ -58,11 +58,11 @@ int rfkill_get(struct client_state_t cs[static 1], struct rfkill_event event; ssize_t len = safe_read(cs->rfkillFd, (char *)&event, sizeof event); if (len < 0) { - log_error("rfkill: safe_read failed: %s", strerror(errno)); + log_line("rfkill: safe_read failed: %s", strerror(errno)); return RFK_FAIL; } if (len != RFKILL_EVENT_SIZE_V1) { - log_error("rfkill: event has unexpected size: %d", len); + log_line("rfkill: event has unexpected size: %zd", len); return RFK_FAIL; } log_line("rfkill: idx[%u] type[%u] op[%u] soft[%u] hard[%u]", diff --git a/src/sockd.c b/src/sockd.c index 535ae7a..f4d325b 100644 --- a/src/sockd.c +++ b/src/sockd.c @@ -68,7 +68,7 @@ int request_sockd_fd(char buf[static 1], size_t buflen, char *response) return -1; ssize_t r = safe_write(sockdSock[0], buf, buflen); if (r < 0 || (size_t)r != buflen) - suicide("%s: (%s) write failed: %d", client_config.interface, + suicide("%s: (%s) write failed: %zd", client_config.interface, __func__, r); char data[MAX_BUF], control[MAX_BUF]; @@ -112,20 +112,20 @@ static int create_arp_socket(void) { int fd = socket(AF_PACKET, SOCK_RAW | SOCK_NONBLOCK, htons(ETH_P_ARP)); if (fd < 0) { - log_error("%s: (%s) socket failed: %s", client_config.interface, - __func__, strerror(errno)); + log_line("%s: (%s) socket failed: %s", client_config.interface, + __func__, strerror(errno)); goto out; } int opt = 1; if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &opt, sizeof opt) < 0) { - log_error("%s: (%s) setsockopt failed: %s", client_config.interface, - __func__, strerror(errno)); + log_line("%s: (%s) setsockopt failed: %s", client_config.interface, + __func__, strerror(errno)); goto out_fd; } if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK) < 0) { - log_error("%s: (%s) fcntl failed: %s", client_config.interface, - __func__, strerror(errno)); + log_line("%s: (%s) fcntl failed: %s", client_config.interface, + __func__, strerror(errno)); goto out_fd; } struct sockaddr_ll saddr = { @@ -134,8 +134,8 @@ static int create_arp_socket(void) .sll_ifindex = client_config.ifindex, }; if (bind(fd, (struct sockaddr *)&saddr, sizeof(struct sockaddr_ll)) < 0) { - log_error("%s: (%s) bind failed: %s", client_config.interface, - __func__, strerror(errno)); + log_line("%s: (%s) bind failed: %s", client_config.interface, + __func__, strerror(errno)); goto out_fd; } return fd; @@ -150,37 +150,37 @@ static int create_udp_socket(uint32_t ip, uint16_t port, char *iface) { int fd; if ((fd = socket(AF_INET, SOCK_DGRAM | SOCK_NONBLOCK, IPPROTO_UDP)) < 0) { - log_error("%s: (%s) socket failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) socket failed: %s", + client_config.interface, __func__, strerror(errno)); goto out; } int opt = 1; if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof opt) < 0) { - log_error("%s: (%s) Set reuse addr failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) Set reuse addr failed: %s", + client_config.interface, __func__, strerror(errno)); goto out_fd; } if (setsockopt(fd, SOL_SOCKET, SO_DONTROUTE, &opt, sizeof opt) < 0) { - log_error("%s: (%s) Set don't route failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) Set don't route failed: %s", + client_config.interface, __func__, strerror(errno)); goto out_fd; } struct ifreq ifr; memset(&ifr, 0, sizeof ifr); ssize_t sl = snprintf(ifr.ifr_name, sizeof ifr.ifr_name, "%s", iface); if (sl < 0 || (size_t)sl >= sizeof ifr.ifr_name) { - log_error("%s: (%s) Set interface name failed.", - client_config.interface, __func__); + log_line("%s: (%s) Set interface name failed.", + client_config.interface, __func__); goto out_fd; } if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof ifr) < 0) { - log_error("%s: (%s) Set bind to device failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) Set bind to device failed: %s", + client_config.interface, __func__, strerror(errno)); goto out_fd; } if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK) < 0) { - log_error("%s: (%s) Set non-blocking failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) Set non-blocking failed: %s", + client_config.interface, __func__, strerror(errno)); goto out_fd; } @@ -190,8 +190,8 @@ static int create_udp_socket(uint32_t ip, uint16_t port, char *iface) .sin_addr.s_addr = ip, }; if (bind(fd, (struct sockaddr *)&sa, sizeof sa) < 0) { - log_error("%s: (%s) bind failed: %s", - client_config.interface, __func__, strerror(errno)); + log_line("%s: (%s) bind failed: %s", + client_config.interface, __func__, strerror(errno)); goto out_fd; } @@ -208,7 +208,7 @@ static int create_raw_socket(struct sockaddr_ll *sa, bool *using_bpf, int fd; if ((fd = socket(AF_PACKET, SOCK_DGRAM | SOCK_NONBLOCK, htons(ETH_P_IP))) < 0) { - log_error("create_raw_socket: socket failed: %s", strerror(errno)); + log_line("create_raw_socket: socket failed: %s", strerror(errno)); goto out; } @@ -224,26 +224,26 @@ static int create_raw_socket(struct sockaddr_ll *sa, bool *using_bpf, if (using_bpf) *using_bpf = true; } else - log_warning("%s: Failed to lock BPF for raw socket: %s", - client_config.interface, strerror(errno)); + log_line("%s: Failed to lock BPF for raw socket: %s", + client_config.interface, strerror(errno)); } else - log_warning("%s: Failed to set BPF for raw socket: %s", - client_config.interface, strerror(errno)); + log_line("%s: Failed to set BPF for raw socket: %s", + client_config.interface, strerror(errno)); } int opt = 1; if (setsockopt(fd, SOL_SOCKET, SO_DONTROUTE, &opt, sizeof opt) < 0) { - log_error("create_raw_socket: Failed to set don't route: %s", - strerror(errno)); + log_line("create_raw_socket: Failed to set don't route: %s", + strerror(errno)); goto out_fd; } if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK) < 0) { - log_error("create_raw_socket: Set non-blocking failed: %s", - strerror(errno)); + log_line("create_raw_socket: Set non-blocking failed: %s", + strerror(errno)); goto out_fd; } if (bind(fd, (struct sockaddr *)sa, sizeof *sa) < 0) { - log_error("create_raw_socket: bind failed: %s", strerror(errno)); + log_line("create_raw_socket: bind failed: %s", strerror(errno)); goto out_fd; } return fd; @@ -350,12 +350,12 @@ static bool arp_set_bpf_basic(int fd) // checks to run just in case an attacker tries to DETACH the // filter. if (ret < 0) - log_warning("%s: Failed to lock BPF for basic ARP socket: %s", - client_config.interface, strerror(errno)); + log_line("%s: Failed to lock BPF for basic ARP socket: %s", + client_config.interface, strerror(errno)); return ret >= 0; } else - log_warning("%s: Failed to set BPF for basic ARP socket: %s", - client_config.interface, strerror(errno)); + log_line("%s: Failed to set BPF for basic ARP socket: %s", + client_config.interface, strerror(errno)); return false; } @@ -416,12 +416,12 @@ static bool arp_set_bpf_defense(int fd, uint32_t client_addr, // checks to run just in case an attacker tries to DETACH the // filter. if (ret < 0) - log_warning("%s: Failed to lock BPF for defense ARP socket: %s", - client_config.interface, strerror(errno)); + log_line("%s: Failed to lock BPF for defense ARP socket: %s", + client_config.interface, strerror(errno)); return ret >= 0; } else - log_warning("%s: Failed to set BPF for defense ARP socket: %s", - client_config.interface, strerror(errno)); + log_line("%s: Failed to set BPF for defense ARP socket: %s", + client_config.interface, strerror(errno)); return false; } diff --git a/src/state.c b/src/state.c index 4a8916a..946ee2a 100644 --- a/src/state.c +++ b/src/state.c @@ -115,8 +115,8 @@ static int requesting_timeout(struct client_state_t cs[static 1], return REQ_TIMEOUT; } if (send_selecting(cs) < 0) { - log_warning("%s: Failed to send a selecting request packet.", - client_config.interface); + log_line("%s: Failed to send a selecting request packet.", + client_config.interface); return REQ_FAIL; } cs->dhcp_wake_ts = nowts + delay_timeout(cs, cs->num_dhcp_requests); @@ -138,8 +138,8 @@ static int rebinding_timeout(struct client_state_t cs[static 1], } start_dhcp_listen(cs); if (send_rebind(cs) < 0) { - log_warning("%s: Failed to send a rebind request packet.", - client_config.interface); + log_line("%s: Failed to send a rebind request packet.", + client_config.interface); return BTO_HARDFAIL; } cs->sent_renew_or_rebind = true; @@ -157,8 +157,8 @@ static int renewing_timeout(struct client_state_t cs[static 1], return rebinding_timeout(cs, nowts); start_dhcp_listen(cs); if (send_renew(cs) < 0) { - log_warning("%s: Failed to send a renew request packet.", - client_config.interface); + log_line("%s: Failed to send a renew request packet.", + client_config.interface); return BTO_HARDFAIL; } cs->sent_renew_or_rebind = true; @@ -191,8 +191,8 @@ static void get_leasetime(struct client_state_t cs[static 1], cs->lease = 60 * 60; } else { if (cs->lease < 60) { - log_warning("Server sent lease of <1m. Forcing lease to 1m.", - client_config.interface); + log_line("%s: Server sent lease of <1m. Forcing lease to 1m.", + client_config.interface); cs->lease = 60; } } @@ -253,8 +253,8 @@ static int extend_packet(struct client_state_t cs[static 1], log_line("%s: Lease refreshed to %u seconds.", client_config.interface, cs->lease); if (arp_set_defense_mode(cs) < 0) - log_warning("%s: Failed to create ARP defense socket.", - client_config.interface); + log_line("%s: Failed to create ARP defense socket.", + client_config.interface); stop_dhcp_listen(cs); return ANP_SUCCESS; } @@ -331,8 +331,8 @@ static int selecting_timeout(struct client_state_t cs[static 1], suicide("%s: No lease; failing.", client_config.interface); } if (send_discover(cs) < 0) { - log_warning("%s: Failed to send a discover request packet.", - client_config.interface); + log_line("%s: Failed to send a discover request packet.", + client_config.interface); return SEL_FAIL; } cs->dhcp_wake_ts = nowts + delay_timeout(cs, cs->num_dhcp_requests); @@ -362,8 +362,8 @@ static int xmit_release(struct client_state_t cs[static 1]) log_line("%s: Unicasting a release of %s to %s.", client_config.interface, clibuf, svrbuf); if (send_release(cs) < 0) { - log_warning("%s: Failed to send a release request packet.", - client_config.interface); + log_line("%s: Failed to send a release request packet.", + client_config.interface); return -1; } print_release(cs); @@ -377,8 +377,8 @@ static int frenew(struct client_state_t cs[static 1], bool is_bound) log_line("%s: Forcing a DHCP renew...", client_config.interface); start_dhcp_listen(cs); if (send_renew(cs) < 0) { - log_warning("%s: Failed to send a renew request packet.", - client_config.interface); + log_line("%s: Failed to send a renew request packet.", + client_config.interface); return -1; } } else { // RELEASED @@ -405,8 +405,8 @@ static int ifup_action(struct client_state_t cs[static 1]) client_config.interface); return IFUP_REVALIDATE; } else { - log_warning("%s: arp_gw_check could not make arp socket.", - client_config.interface); + log_line("%s: arp_gw_check could not make arp socket.", + client_config.interface); return IFUP_FAIL; } } @@ -519,8 +519,8 @@ skip_to_requesting: if (r == ANP_IGNORE) { } else if (r == ANP_CHECK_IP) { if (arp_check(cs, dhcp_packet) < 0) { - log_warning("%s: Failed to make arp socket. Searching for new lease...", - client_config.interface); + log_line("%s: Failed to make arp socket. Searching for new lease...", + client_config.interface); reinit_selecting(cs, 3000); sev_dhcp = false; goto reinit; @@ -610,8 +610,8 @@ skip_to_requesting: goto reinit; } else if (r == ANP_CHECK_IP) { if (arp_check(cs, dhcp_packet) < 0) { - log_warning("%s: Failed to make arp socket. Searching for new lease...", - client_config.interface); + log_line("%s: Failed to make arp socket. Searching for new lease...", + client_config.interface); reinit_selecting(cs, 3000); sev_dhcp = false; goto reinit;