diff options
Diffstat (limited to 'client/dhclient.c')
-rw-r--r-- | client/dhclient.c | 117 |
1 files changed, 70 insertions, 47 deletions
diff --git a/client/dhclient.c b/client/dhclient.c index 48707d1..fc60383 100644 --- a/client/dhclient.c +++ b/client/dhclient.c @@ -3,7 +3,7 @@ DHCP Client. */ /* - * Copyright (c) 2004-2011 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 2004-2012 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 1995-2003 by Internet Software Consortium * * Permission to use, copy, modify, and distribute this software for any @@ -68,7 +68,7 @@ int duid_type = 0; #define ASSERT_STATE(state_is, state_shouldbe) {} static const char copyright[] = -"Copyright 2004-2011 Internet Systems Consortium."; +"Copyright 2004-2012 Internet Systems Consortium."; static const char arr [] = "All rights reserved."; static const char message [] = "Internet Systems Consortium DHCP Client"; static const char url [] = @@ -1901,11 +1901,14 @@ void send_discover (cpp) ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval)); /* Send out a packet. */ - result = send_packet (client -> interface, (struct packet *)0, - &client -> packet, - client -> packet_length, - inaddr_any, &sockaddr_broadcast, - (struct hardware *)0); + result = send_packet(client->interface, NULL, &client->packet, + client->packet_length, inaddr_any, + &sockaddr_broadcast, NULL); + if (result < 0) { + log_error("%s:%d: Failed to send %d byte long packet over %s " + "interface.", MDL, client->packet_length, + client->interface->name); + } /* * If we used 0 microseconds here, and there were other clients on the @@ -2168,20 +2171,29 @@ void send_request (cpp) ntohs (destination.sin_port)); if (destination.sin_addr.s_addr != INADDR_BROADCAST && - fallback_interface) - result = send_packet (fallback_interface, - (struct packet *)0, - &client -> packet, - client -> packet_length, - from, &destination, - (struct hardware *)0); - else + fallback_interface) { + result = send_packet(fallback_interface, NULL, &client->packet, + client->packet_length, from, &destination, + NULL); + if (result < 0) { + log_error("%s:%d: Failed to send %d byte long packet " + "over %s interface.", MDL, + client->packet_length, + fallback_interface->name); + } + } + else { /* Send out a packet. */ - result = send_packet (client -> interface, (struct packet *)0, - &client -> packet, - client -> packet_length, - from, &destination, - (struct hardware *)0); + result = send_packet(client->interface, NULL, &client->packet, + client->packet_length, from, &destination, + NULL); + if (result < 0) { + log_error("%s:%d: Failed to send %d byte long packet" + " over %s interface.", MDL, + client->packet_length, + client->interface->name); + } + } tv.tv_sec = cur_tv.tv_sec + client->interval; tv.tv_usec = ((tv.tv_sec - cur_tv.tv_sec) > 1) ? @@ -2197,16 +2209,19 @@ void send_decline (cpp) int result; log_info ("DHCPDECLINE on %s to %s port %d", - client -> name ? client -> name : client -> interface -> name, - inet_ntoa (sockaddr_broadcast.sin_addr), - ntohs (sockaddr_broadcast.sin_port)); + client->name ? client->name : client->interface->name, + inet_ntoa(sockaddr_broadcast.sin_addr), + ntohs(sockaddr_broadcast.sin_port)); /* Send out a packet. */ - result = send_packet (client -> interface, (struct packet *)0, - &client -> packet, - client -> packet_length, - inaddr_any, &sockaddr_broadcast, - (struct hardware *)0); + result = send_packet(client->interface, NULL, &client->packet, + client->packet_length, inaddr_any, + &sockaddr_broadcast, NULL); + if (result < 0) { + log_error("%s:%d: Failed to send %d byte long packet over %s" + " interface.", MDL, client->packet_length, + client->interface->name); + } } void send_release (cpp) @@ -2244,20 +2259,29 @@ void send_release (cpp) inet_ntoa (destination.sin_addr), ntohs (destination.sin_port)); - if (fallback_interface) - result = send_packet (fallback_interface, - (struct packet *)0, - &client -> packet, - client -> packet_length, - from, &destination, - (struct hardware *)0); - else + if (fallback_interface) { + result = send_packet(fallback_interface, NULL, &client->packet, + client->packet_length, from, &destination, + NULL); + if (result < 0) { + log_error("%s:%d: Failed to send %d byte long packet" + " over %s interface.", MDL, + client->packet_length, + fallback_interface->name); + } + } else { /* Send out a packet. */ - result = send_packet (client -> interface, (struct packet *)0, - &client -> packet, - client -> packet_length, - from, &destination, - (struct hardware *)0); + result = send_packet(client->interface, NULL, &client->packet, + client->packet_length, from, &destination, + NULL); + if (result < 0) { + log_error ("%s:%d: Failed to send %d byte long packet" + " over %s interface.", MDL, + client->packet_length, + client->interface->name); + } + + } } void @@ -3221,7 +3245,6 @@ void script_write_params (client, prefix, lease) lease->server_name); } } - for (i = 0; i < lease -> options -> universe_count; i++) { option_space_foreach ((struct packet *)0, (struct lease *)0, @@ -3706,7 +3729,7 @@ client_dns_remove_action(dhcp_ddns_cb_t *ddns_cb, /* Do the second stage of the FWD removal */ ddns_cb->state = DDNS_STATE_REM_FW_NXRR; - result = ddns_modify_fwd(ddns_cb); + result = ddns_modify_fwd(ddns_cb, MDL); if (result == ISC_R_SUCCESS) { return; } @@ -3726,7 +3749,7 @@ client_dns_remove(struct client_state *client, /* if we have an old ddns request for this client, cancel it */ if (client->ddns_cb != NULL) { - ddns_cancel(client->ddns_cb); + ddns_cancel(client->ddns_cb, MDL); client->ddns_cb = NULL; } @@ -3884,7 +3907,7 @@ client_dns_update_action(dhcp_ddns_cb_t *ddns_cb, ddns_cb->state = DDNS_STATE_ADD_FW_YXDHCID; ddns_cb->cur_func = client_dns_update_action; - result = ddns_modify_fwd(ddns_cb); + result = ddns_modify_fwd(ddns_cb, MDL); if (result == ISC_R_SUCCESS) { return; } @@ -4021,7 +4044,7 @@ client_dns_update(struct client_state *client, dhcp_ddns_cb_t *ddns_cb) * Perform updates. */ if (ddns_cb->fwd_name.len && ddns_cb->dhcid.len) { - rcode = ddns_modify_fwd(ddns_cb); + rcode = ddns_modify_fwd(ddns_cb, MDL); } else rcode = ISC_R_FAILURE; @@ -4054,7 +4077,7 @@ dhclient_schedule_updates(struct client_state *client, /* cancel any outstanding ddns requests */ if (client->ddns_cb != NULL) { - ddns_cancel(client->ddns_cb); + ddns_cancel(client->ddns_cb, MDL); client->ddns_cb = NULL; } |