logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

SF.net SVN: nagiosplug: [1763] nagiosplug/trunk/plugins-root/check_dhcp.c: msg#00023

Subject: SF.net SVN: nagiosplug: [1763] nagiosplug/trunk/plugins-root/check_dhcp.c
Revision: 1763
          http://nagiosplug.svn.sourceforge.net/nagiosplug/?rev=1763&view=rev
Author:   hweiss
Date:     2007-07-25 17:07:19 -0700 (Wed, 25 Jul 2007)

Log Message:
-----------
A few minor fixes/improvements which were included with (but unrelated
to) the "--unicast" patch (Andreas Ericsson and Heiti Ernits - 1218235)

Modified Paths:
--------------
    nagiosplug/trunk/plugins-root/check_dhcp.c

Modified: nagiosplug/trunk/plugins-root/check_dhcp.c
===================================================================
--- nagiosplug/trunk/plugins-root/check_dhcp.c  2007-07-26 00:02:28 UTC (rev 
1762)
+++ nagiosplug/trunk/plugins-root/check_dhcp.c  2007-07-26 00:07:19 UTC (rev 
1763)
@@ -464,7 +464,10 @@
        /* length of our hardware address */
        discover_packet.hlen=ETHERNET_HARDWARE_ADDRESS_LENGTH;
 
-       /* transaction id is supposed to be random */
+       /*
+        * transaction ID is supposed to be random.  We won't use the address so
+        * we don't care about high entropy here.  time(2) is good enough.
+        */
        srand(time(NULL));
        packet_xid=random();
        discover_packet.xid=htonl(packet_xid);
@@ -522,7 +525,7 @@
 
        if(verbose){
                printf(_("DHCPDISCOVER to %s port 
%d\n"),inet_ntoa(sockaddr_broadcast.sin_addr),ntohs(sockaddr_broadcast.sin_port));
-               printf("DHCPDISCOVER XID: %lu 
(0x%X)\n",ntohl(discover_packet.xid),ntohl(discover_packet.xid));
+               printf("DHCPDISCOVER XID: %u 
(0x%X)\n",ntohl(discover_packet.xid),ntohl(discover_packet.xid));
                printf("DHCDISCOVER ciaddr:  
%s\n",inet_ntoa(discover_packet.ciaddr));
                printf("DHCDISCOVER yiaddr:  
%s\n",inet_ntoa(discover_packet.yiaddr));
                printf("DHCDISCOVER siaddr:  
%s\n",inet_ntoa(discover_packet.siaddr));
@@ -596,13 +599,13 @@
                if(verbose){
                        printf(_("DHCPOFFER from IP address 
%s"),inet_ntoa(source.sin_addr));
                        printf(_(" via %s\n"),inet_ntoa(via.sin_addr));
-                       printf("DHCPOFFER XID: %lu 
(0x%X)\n",ntohl(offer_packet.xid),ntohl(offer_packet.xid));
+                       printf("DHCPOFFER XID: %u 
(0x%X)\n",ntohl(offer_packet.xid),ntohl(offer_packet.xid));
                        }
 
                /* 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 (%lu) did not match 
DHCPDISCOVER XID (%lu) - ignoring 
packet\n"),ntohl(offer_packet.xid),packet_xid);
+                               printf(_("DHCPOFFER XID (%u) did not match 
DHCPDISCOVER XID (%u) - ignoring packet\n"),ntohl(offer_packet.xid),packet_xid);
 
                        continue;
                        }
@@ -672,22 +675,26 @@
 int receive_dhcp_packet(void *buffer, int buffer_size, int sock, int timeout, 
struct sockaddr_in *address){
         struct timeval tv;
         fd_set readfds;
+       fd_set oobfds;
        int recv_result;
        socklen_t address_size;
        struct sockaddr_in source_address;
+       int nfound;
 
 
         /* wait for data to arrive (up time timeout) */
         tv.tv_sec=timeout;
         tv.tv_usec=0;
         FD_ZERO(&readfds);
+        FD_ZERO(&oobfds);
         FD_SET(sock,&readfds);
-        select(sock+1,&readfds,NULL,NULL,&tv);
+        FD_SET(sock,&oobfds);
+        nfound = select(sock+1,&readfds,NULL,&oobfds,&tv);
 
         /* make sure some data has arrived */
         if(!FD_ISSET(sock,&readfds)){
                if(verbose)
-                       printf(_("No (more) data received\n"));
+                       printf(_("No (more) data received (nfound: %d)\n"), 
nfound);
                 return ERROR;
                 }
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/


<Prev in Thread] Current Thread [Next in Thread>