[monitoring-plugins] check_dhcp: clang-format
Lorenz Kästle
git at monitoring-plugins.org
Mon Jun 23 13:40:11 CEST 2025
Module: monitoring-plugins
Branch: master
Commit: a0d3493f9dbe02f4cf1d578129581c4b45994ca2
Author: Lorenz Kästle <12514511+RincewindsHat at users.noreply.github.com>
Date: Tue Apr 1 00:05:18 2025 +0200
URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=a0d3493f
check_dhcp: clang-format
---
plugins-root/check_dhcp.c | 184 ++++++++++++++++++++++++++++++----------------
1 file changed, 119 insertions(+), 65 deletions(-)
diff --git a/plugins-root/check_dhcp.c b/plugins-root/check_dhcp.c
index 6802232e..70809956 100644
--- a/plugins-root/check_dhcp.c
+++ b/plugins-root/check_dhcp.c
@@ -260,13 +260,15 @@ int main(int argc, char **argv) {
dhcp_socket = create_dhcp_socket();
/* get hardware address of client machine */
- if (user_specified_mac != NULL)
+ if (user_specified_mac != NULL) {
memcpy(client_hardware_address, user_specified_mac, 6);
- else
+ } else {
get_hardware_address(dhcp_socket, network_interface_name);
+ }
- if (unicast) /* get IP address of client machine */
+ if (unicast) { /* get IP address of client machine */
get_ip_address(dhcp_socket, network_interface_name);
+ }
/* send DHCPDISCOVER packet */
send_dhcp_discover(dhcp_socket);
@@ -358,8 +360,9 @@ static int get_hardware_address(int sock, char *interface_name) {
int i;
p = interface_name + strlen(interface_name) - 1;
for (i = strlen(interface_name) - 1; i > 0; p--) {
- if (isalpha(*p))
+ if (isalpha(*p)) {
break;
+ }
}
p++;
if (p != interface_name) {
@@ -393,8 +396,9 @@ static int get_hardware_address(int sock, char *interface_name) {
exit(STATE_UNKNOWN);
#endif
- if (verbose)
+ if (verbose) {
print_hardware_address(client_hardware_address);
+ }
return OK;
}
@@ -419,8 +423,9 @@ static int get_ip_address(int sock, char *interface_name) {
exit(STATE_UNKNOWN);
#endif
- if (verbose)
+ if (verbose) {
printf(_("Pretending to be relay client %s\n"), inet_ntoa(my_ip));
+ }
return OK;
}
@@ -484,8 +489,9 @@ static int send_dhcp_discover(int sock) {
discover_packet.options[opts++] = (char)DHCP_OPTION_END;
/* unicast fields */
- if (unicast)
+ if (unicast) {
discover_packet.giaddr.s_addr = my_ip.s_addr;
+ }
/* see RFC 1542, 4.1.1 */
discover_packet.hops = unicast ? 1 : 0;
@@ -508,8 +514,9 @@ static int send_dhcp_discover(int sock) {
/* send the DHCPDISCOVER packet out */
send_dhcp_packet(&discover_packet, sizeof(discover_packet), sock, &sockaddr_broadcast);
- if (verbose)
+ if (verbose) {
printf("\n\n");
+ }
return OK;
}
@@ -531,11 +538,13 @@ static int get_dhcp_offer(int sock) {
for (responses = 0, valid_responses = 0;;) {
time(¤t_time);
- if ((current_time - start_time) >= dhcpoffer_timeout)
+ if ((current_time - start_time) >= dhcpoffer_timeout) {
break;
+ }
- if (verbose)
+ if (verbose) {
printf("\n\n");
+ }
bzero(&source, sizeof(source));
bzero(&via, sizeof(via));
@@ -545,13 +554,15 @@ static int get_dhcp_offer(int sock) {
result = receive_dhcp_packet(&offer_packet, sizeof(offer_packet), sock, dhcpoffer_timeout, &source);
if (result != OK) {
- if (verbose)
+ if (verbose) {
printf(_("Result=ERROR\n"));
+ }
continue;
} else {
- if (verbose)
+ if (verbose) {
printf(_("Result=OK\n"));
+ }
responses++;
}
@@ -568,30 +579,37 @@ static int get_dhcp_offer(int sock) {
/* check packet xid to see if its the same as the one we used in the discover packet */
if (ntohl(offer_packet.xid) != packet_xid) {
- if (verbose)
- printf(_("DHCPOFFER XID (%u) did not match DHCPDISCOVER XID (%u) - ignoring packet\n"), ntohl(offer_packet.xid), packet_xid);
+ if (verbose) {
+ printf(_("DHCPOFFER XID (%u) did not match DHCPDISCOVER XID (%u) - ignoring packet\n"), ntohl(offer_packet.xid),
+ packet_xid);
+ }
continue;
}
/* check hardware address */
result = OK;
- if (verbose)
+ if (verbose) {
printf("DHCPOFFER chaddr: ");
+ }
for (x = 0; x < ETHERNET_HARDWARE_ADDRESS_LENGTH; x++) {
- if (verbose)
+ if (verbose) {
printf("%02X", (unsigned char)offer_packet.chaddr[x]);
+ }
- if (offer_packet.chaddr[x] != client_hardware_address[x])
+ if (offer_packet.chaddr[x] != client_hardware_address[x]) {
result = ERROR;
+ }
}
- if (verbose)
+ if (verbose) {
printf("\n");
+ }
if (result == ERROR) {
- if (verbose)
+ if (verbose) {
printf(_("DHCPOFFER hardware address did not match our own - ignoring packet\n"));
+ }
continue;
}
@@ -622,11 +640,13 @@ static int send_dhcp_packet(void *buffer, int buffer_size, int sock, struct sock
result = sendto(sock, (char *)buffer, buffer_size, 0, (struct sockaddr *)dest, sizeof(*dest));
- if (verbose)
+ if (verbose) {
printf(_("send_dhcp_packet result: %d\n"), result);
+ }
- if (result < 0)
+ if (result < 0) {
return ERROR;
+ }
return OK;
}
@@ -652,8 +672,9 @@ static int receive_dhcp_packet(void *buffer, int buffer_size, int sock, int time
/* make sure some data has arrived */
if (!FD_ISSET(sock, &readfds)) {
- if (verbose)
+ if (verbose) {
printf(_("No (more) data received (nfound: %d)\n"), nfound);
+ }
return ERROR;
}
@@ -661,8 +682,9 @@ static int receive_dhcp_packet(void *buffer, int buffer_size, int sock, int time
bzero(&source_address, sizeof(source_address));
address_size = sizeof(source_address);
recv_result = recvfrom(sock, (char *)buffer, buffer_size, 0, (struct sockaddr *)&source_address, &address_size);
- if (verbose)
+ if (verbose) {
printf("recv_result: %d\n", recv_result);
+ }
if (recv_result == -1) {
if (verbose) {
@@ -706,8 +728,9 @@ static int create_dhcp_socket(void) {
exit(STATE_UNKNOWN);
}
- if (verbose)
+ if (verbose) {
printf("DHCP socket: %d\n", sock);
+ }
/* set the reuse address flag so we don't get errors when restarting */
flag = 1;
@@ -758,8 +781,9 @@ static int add_requested_server(struct in_addr server_address) {
requested_server *new_server;
new_server = (requested_server *)malloc(sizeof(requested_server));
- if (new_server == NULL)
+ if (new_server == NULL) {
return ERROR;
+ }
new_server->server_address = server_address;
new_server->answered = false;
@@ -769,8 +793,9 @@ static int add_requested_server(struct in_addr server_address) {
requested_servers++;
- if (verbose)
+ if (verbose) {
printf(_("Requested server address: %s\n"), inet_ntoa(new_server->server_address));
+ }
return OK;
}
@@ -783,14 +808,16 @@ static int add_dhcp_offer(struct in_addr source, dhcp_packet *offer_packet) {
unsigned option_length;
struct in_addr serv_ident = {0};
- if (offer_packet == NULL)
+ if (offer_packet == NULL) {
return ERROR;
+ }
/* process all DHCP options present in the packet */
for (x = 4; x < MAX_DHCP_OPTIONS_LENGTH - 1;) {
- if ((int)offer_packet->options[x] == -1)
+ if ((int)offer_packet->options[x] == -1) {
break;
+ }
/* get option type */
option_type = offer_packet->options[x++];
@@ -798,8 +825,9 @@ static int add_dhcp_offer(struct in_addr source, dhcp_packet *offer_packet) {
/* get option length */
option_length = offer_packet->options[x++];
- if (verbose)
+ if (verbose) {
printf("Option: %d (0x%02X)\n", option_type, option_length);
+ }
/* get option data */
switch (option_type) {
@@ -821,30 +849,35 @@ static int add_dhcp_offer(struct in_addr source, dhcp_packet *offer_packet) {
}
/* skip option data we're ignoring */
- if (option_type == 0) /* "pad" option, see RFC 2132 (3.1) */
+ if (option_type == 0) { /* "pad" option, see RFC 2132 (3.1) */
x += 1;
- else
+ } else {
x += option_length;
+ }
}
if (verbose) {
- if (dhcp_lease_time == DHCP_INFINITE_TIME)
+ if (dhcp_lease_time == DHCP_INFINITE_TIME) {
printf(_("Lease Time: Infinite\n"));
- else
+ } else {
printf(_("Lease Time: %lu seconds\n"), (unsigned long)dhcp_lease_time);
- if (dhcp_renewal_time == DHCP_INFINITE_TIME)
+ }
+ if (dhcp_renewal_time == DHCP_INFINITE_TIME) {
printf(_("Renewal Time: Infinite\n"));
- else
+ } else {
printf(_("Renewal Time: %lu seconds\n"), (unsigned long)dhcp_renewal_time);
- if (dhcp_rebinding_time == DHCP_INFINITE_TIME)
+ }
+ if (dhcp_rebinding_time == DHCP_INFINITE_TIME) {
printf(_("Rebinding Time: Infinite\n"));
+ }
printf(_("Rebinding Time: %lu seconds\n"), (unsigned long)dhcp_rebinding_time);
}
new_offer = (dhcp_offer *)malloc(sizeof(dhcp_offer));
- if (new_offer == NULL)
+ if (new_offer == NULL) {
return ERROR;
+ }
/*
* RFC 2131 (2.) says: "DHCP clarifies the interpretation of the
@@ -921,20 +954,23 @@ static int get_results(void) {
for (temp_offer = dhcp_offer_list; temp_offer != NULL; temp_offer = temp_offer->next) {
/* get max lease time we were offered */
- if (temp_offer->lease_time > max_lease_time || temp_offer->lease_time == DHCP_INFINITE_TIME)
+ if (temp_offer->lease_time > max_lease_time || temp_offer->lease_time == DHCP_INFINITE_TIME) {
max_lease_time = temp_offer->lease_time;
+ }
/* see if we got the address we requested */
- if (!memcmp(&requested_address, &temp_offer->offered_address, sizeof(requested_address)))
+ if (!memcmp(&requested_address, &temp_offer->offered_address, sizeof(requested_address))) {
received_requested_address = true;
+ }
/* see if the servers we wanted a response from talked to us or not */
if (!memcmp(&temp_offer->server_address, &temp_server->server_address, sizeof(temp_server->server_address))) {
if (verbose) {
printf(_("DHCP Server Match: Offerer=%s"), inet_ntoa(temp_offer->server_address));
printf(_(" Requested=%s"), inet_ntoa(temp_server->server_address));
- if (temp_server->answered)
+ if (temp_server->answered) {
printf(_(" (duplicate)"));
+ }
printf(_("\n"));
}
if (!temp_server->answered) {
@@ -961,36 +997,41 @@ static int get_results(void) {
for (temp_offer = dhcp_offer_list; temp_offer != NULL; temp_offer = temp_offer->next) {
/* get max lease time we were offered */
- if (temp_offer->lease_time > max_lease_time || temp_offer->lease_time == DHCP_INFINITE_TIME)
+ if (temp_offer->lease_time > max_lease_time || temp_offer->lease_time == DHCP_INFINITE_TIME) {
max_lease_time = temp_offer->lease_time;
+ }
/* see if we got the address we requested */
- if (!memcmp(&requested_address, &temp_offer->offered_address, sizeof(requested_address)))
+ if (!memcmp(&requested_address, &temp_offer->offered_address, sizeof(requested_address))) {
received_requested_address = true;
+ }
}
}
result = STATE_OK;
- if (valid_responses == 0)
+ if (valid_responses == 0) {
result = STATE_CRITICAL;
- else if (requested_servers > 0 && requested_responses == 0)
+ } else if (requested_servers > 0 && requested_responses == 0) {
result = STATE_CRITICAL;
- else if (requested_responses < requested_servers)
+ } else if (requested_responses < requested_servers) {
result = STATE_WARNING;
- else if (request_specific_address && !received_requested_address)
+ } else if (request_specific_address && !received_requested_address) {
result = STATE_WARNING;
+ }
- if (exclusive && undesired_offer)
+ if (exclusive && undesired_offer) {
result = STATE_CRITICAL;
+ }
- if (result == 0) /* garrett honeycutt 2005 */
+ if (result == 0) { /* garrett honeycutt 2005 */
printf("OK: ");
- else if (result == 1)
+ } else if (result == 1) {
printf("WARNING: ");
- else if (result == 2)
+ } else if (result == 2) {
printf("CRITICAL: ");
- else if (result == 3)
+ } else if (result == 3) {
printf("UNKNOWN: ");
+ }
/* we didn't receive any DHCPOFFERs */
if (dhcp_offer_list == NULL) {
@@ -1006,18 +1047,22 @@ static int get_results(void) {
return result;
}
- if (requested_servers > 0)
- printf(_(", %s%d of %d requested servers responded"), ((requested_responses < requested_servers) && requested_responses > 0) ? "only " : "", requested_responses,
+ if (requested_servers > 0) {
+ printf(_(", %s%d of %d requested servers responded"),
+ ((requested_responses < requested_servers) && requested_responses > 0) ? "only " : "", requested_responses,
requested_servers);
+ }
- if (request_specific_address)
+ if (request_specific_address) {
printf(_(", requested address (%s) was %soffered"), inet_ntoa(requested_address), (received_requested_address) ? "" : _("not "));
+ }
printf(_(", max lease time = "));
- if (max_lease_time == DHCP_INFINITE_TIME)
+ if (max_lease_time == DHCP_INFINITE_TIME) {
printf(_("Infinity"));
- else
+ } else {
printf("%lu sec", (unsigned long)max_lease_time);
+ }
printf(".\n");
@@ -1026,8 +1071,9 @@ static int get_results(void) {
/* process command-line arguments */
static int process_arguments(int argc, char **argv) {
- if (argc < 1)
+ if (argc < 1) {
return ERROR;
+ }
call_getopt(argc, argv);
return validate_arguments(argc);
@@ -1052,8 +1098,9 @@ static int call_getopt(int argc, char **argv) {
while (true) {
c = getopt_long(argc, argv, "+hVvxt:s:r:t:i:m:u", long_options, &option_index);
- if (c == -1 || c == EOF || c == 1)
+ if (c == -1 || c == EOF || c == 1) {
break;
+ }
switch (c) {
@@ -1072,8 +1119,9 @@ static int call_getopt(int argc, char **argv) {
/*
if(is_intnonneg(optarg))
*/
- if (atoi(optarg) > 0)
+ if (atoi(optarg) > 0) {
dhcpoffer_timeout = atoi(optarg);
+ }
/*
else
usage("Time interval must be a nonnegative integer\n");
@@ -1082,10 +1130,12 @@ static int call_getopt(int argc, char **argv) {
case 'm': /* MAC address */
- if ((user_specified_mac = mac_aton(optarg)) == NULL)
+ if ((user_specified_mac = mac_aton(optarg)) == NULL) {
usage("Cannot parse MAC address.\n");
- if (verbose)
+ }
+ if (verbose) {
print_hardware_address(user_specified_mac);
+ }
break;
@@ -1127,8 +1177,9 @@ static int call_getopt(int argc, char **argv) {
static int validate_arguments(int argc) {
- if (argc - optind > 0)
+ if (argc - optind > 0) {
usage(_("Got unexpected non-option argument"));
+ }
return OK;
}
@@ -1273,8 +1324,9 @@ static void resolve_host(const char *in, struct in_addr *out) {
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_INET;
- if (getaddrinfo(in, NULL, &hints, &ai) != 0)
+ if (getaddrinfo(in, NULL, &hints, &ai) != 0) {
usage_va(_("Invalid hostname/address - %s"), optarg);
+ }
memcpy(out, &((struct sockaddr_in *)ai->ai_addr)->sin_addr, sizeof(*out));
freeaddrinfo(ai);
@@ -1288,8 +1340,9 @@ static unsigned char *mac_aton(const char *string) {
for (i = 0, j = 0; string[i] != '\0' && j < sizeof(result); i++) {
/* ignore ':' and any other non-hex character */
- if (!isxdigit(string[i]) || !isxdigit(string[i + 1]))
+ if (!isxdigit(string[i]) || !isxdigit(string[i + 1])) {
continue;
+ }
tmp[0] = string[i];
tmp[1] = string[i + 1];
tmp[2] = '\0';
@@ -1305,8 +1358,9 @@ static void print_hardware_address(const unsigned char *address) {
int i;
printf(_("Hardware address: "));
- for (i = 0; i < 5; i++)
+ for (i = 0; i < 5; i++) {
printf("%2.2x:", address[i]);
+ }
printf("%2.2x", address[i]);
putchar('\n');
}
More information about the Commits
mailing list