PKTC_CLIENT_CONFIGURATION (122) and (177)

Wouter Debie wouter.debie at excentis.com
Wed Nov 21 08:20:10 UTC 2007


Hi

I'm currently adding some features to the dhcp_server by adding a
database behind it and saving a lot of information about the
dhcp_process (provisioning).

I need to seek in the dhcp_offer message the dhcpOption 122. I've added
the following things to perform this job:

******* CODE ************

/include/dhcp.h

#define DHO_SUBNET_SELECTION                    118 /* RFC3011! */
#define DHO_DOMAIN_SEARCH                       119 /* RFC3397 */

#define DHO_CABLELABS_CLIENT_CONFIGURATION      122 /* RFC3495 */

#define DHO_VIVCO_SUBOPTIONS                    124
#define DHO_VIVSO_SUBOPTIONS                    125


******** END CODE *************

Now if I try to call the following function i don't get the value of
this option in the dhcp_offer message.  I'm sure it's been send (sniffing)


********* CODE ***************

/server/dhcp.c  --> methode void dhcp_reply (lease)

   unsigned char *lease_pktcOptions = NULL;
   int lease_pktcOptionNr = 0;
   struct data_string data;
   struct option_cache *oc;


/* LOADING CABLELABS CLIENT CONFIGURATION */
   oc = (struct option_cache *)0;

   oc = lookup_option (&dhcp_universe, state -> options,
                       DHO_CABLELABS_CLIENT_CONFIGURATION);
   snprintf(msgbuf, sizeof msgbuf, "try search OPTION !!!");
   log_debug ("seek option");
   if(oc){
     log_debug ("oc is not empty");
   }
   if (oc &&
       evaluate_option_cache (&data, state -> packet, lease,
                              (struct client_state *)0,
                              state->packet->options, state->options,
                              &lease->scope, oc, MDL)){
     lease_pktcOptions = dmalloc(data.len+1,MDL);
     log_debug ("Found OPTION");
     snprintf(msgbuf, sizeof msgbuf, "Found OPTION !!!");
     if (!lease_pktcOptions)
       log_fatal ("no memory for lease_pktcOptions");
     memcpy (lease_pktcOptions, data.data, data.len);
     if(data.len > 0){
       lease_pktcOptionNr = 122;
     }
     data_string_forget (&data,MDL);
   }

*********** END CODE **************

Is this correct? Or did I forgot something ???


Thx

Wouter Debie







More information about the dhcp-hackers mailing list