summaryrefslogtreecommitdiffstats
path: root/web/attachments/148408-check_dhcp.c.diff
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/148408-check_dhcp.c.diff')
-rw-r--r--web/attachments/148408-check_dhcp.c.diff74
1 files changed, 74 insertions, 0 deletions
diff --git a/web/attachments/148408-check_dhcp.c.diff b/web/attachments/148408-check_dhcp.c.diff
new file mode 100644
index 0000000..bd24891
--- /dev/null
+++ b/web/attachments/148408-check_dhcp.c.diff
@@ -0,0 +1,74 @@
1--- check_dhcp.c.orig 2005-09-07 12:33:44.000000000 -0700
2+++ check_dhcp.c 2005-09-07 15:35:26.000000000 -0700
3@@ -157,6 +157,7 @@
4
5 typedef struct requested_server_struct{
6 struct in_addr server_address;
7+ int answered;
8 struct requested_server_struct *next;
9 }requested_server;
10
11@@ -479,6 +480,7 @@
12 int get_dhcp_offer(int sock){
13 dhcp_packet offer_packet;
14 struct sockaddr_in source;
15+ struct sockaddr_in via;
16 int result=OK;
17 int timeout=1;
18 int responses=0;
19@@ -499,6 +501,7 @@
20 printf("\n\n");
21
22 bzero(&source,sizeof(source));
23+ bzero(&via,sizeof(via));
24 bzero(&offer_packet,sizeof(offer_packet));
25
26 result=OK;
27@@ -516,9 +519,18 @@
28
29 responses++;
30 }
31+ /* The "source" is either a server or a relay. */
32+ /* Save a copy of "source" into "via" even if it's via itself */
33+ memcpy(&via,&source,sizeof(source)) ;
34+
35+ /* If siaddr is non-zero, set "source" to siaddr */
36+ if (offer_packet.siaddr.s_addr != 0L) {
37+ source.sin_addr.s_addr = offer_packet.siaddr.s_addr ;
38+ }
39
40 if (verbose) {
41- printf(_("DHCPOFFER from IP address %s\n"),inet_ntoa(source.sin_addr));
42+ printf(_("DHCPOFFER from IP address %s"),inet_ntoa(source.sin_addr));
43+ printf(_(" via %s\n"),inet_ntoa(via.sin_addr));
44 printf("DHCPOFFER XID: %lu (0x%X)\n",ntohl(offer_packet.xid),ntohl(offer_packet.xid));
45 }
46
47@@ -727,6 +739,7 @@
48 return ERROR;
49
50 new_server->server_address=server_address;
51+ new_server->answered=FALSE;
52
53 new_server->next=requested_server_list;
54 requested_server_list=new_server;
55@@ -887,9 +900,17 @@
56 if(!memcmp(&temp_offer->server_address,&temp_server->server_address,sizeof(temp_server->server_address))){
57 if (verbose) {
58 printf(_("DHCP Server Match: Offerer=%s"),inet_ntoa(temp_offer->server_address));
59- printf(_(" Requested=%s\n"),inet_ntoa(temp_server->server_address));
60+ printf(_(" Requested=%s"),inet_ntoa(temp_server->server_address));
61+ if (temp_server->answered)
62+ printf(_(" (duplicate)"));
63+
64+ printf(_("\n"));
65 }
66- requested_responses++;
67+ if (temp_server->answered == FALSE){
68+ requested_responses++;
69+ temp_server->answered=TRUE;
70+ }
71+
72 }
73 }
74 }