mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-04-29 10:09:25 -04:00
check_dhcp: clang-format
This commit is contained in:
parent
1150082f60
commit
a0d3493f9d
1 changed files with 119 additions and 65 deletions
|
|
@ -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');
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue