RFC 3925 - option 125 V-I Vendor Specific Information configuration

Robert Carter carterrj at verizon.net
Wed Apr 27 13:58:11 UTC 2011

Hi --

I'm trying to set up an option 125 config, with sub-options, following 
RFC 3925 and I'm running into some trouble. I'm not sure if I haven't 
got the config framed out correctly, or if there other underlying issues 
in the server code. I've searched the list archives and can not find any 
prior posting that helps resolve my problem.

I'm running Internet Systems Consortium DHCP Server version 4.1.1-P1, 
and I've compiled with multiple debug defines set in includes/site.h 
running the server in the foreground, I can get a good idea of how it is 
processing packets.

By setting up an encapsulated 125 option, I'm looking to have the server 
code do the heavy lifting of parsing the client's 125 option data that 
is sent, allowing the server can make decisions from this data. (And 
thus avoid a lot of manual parsing of the option data.)

Running the below config results in:

   bool: exists vendor.myspace = false
   exec: if false
   data: const = "NOT vivso packet"
   exec: log
   NOT vivso packet

While running wireshark on the server to do a packet trace confirms that 
the client is sending the correctly formatted 125 option, and sub-option 
data, in its DISCOVER packet.

If I change the config to specify vendor text data type, rather than 
encapsulated, then the server will correctly find the option 125 data in 
the DISCOVER packet:

   option vendor.myspace code 4321 = text;
   option vendor.myspace "monkey bananas";


   option vendor.myspace code 4321 = encapsulate myspace;

Clearly, from past postings to the list, many people are encapsulating 
docis options, which is very similar to what I am trying to accomplish, 
e.g. from a recent post:

   option space docsis code width 2 length width 2 hash size 17;
   option docsis.tftp-servers code 32 = array of ip6-address;
   option docsis.cablelabs-configuration-file  code 33 = text;
   option vsio.docsis code 4491 = encapsulate docsis;

So, is there a problem with how I've framed out my vendor encapsulation, 
or is there a problem with trying to encapsulate vendor options?





option space myspace code width 1 length width 1 hash size 8;
option myspace.r_oui code 1 = text;
option myspace.r_sn code 2 = text;
option myspace.s_oui 3 = text;
option myspce.s_sn code 4 = text;

option vendor.myspace code 4321 = encapsulate myspace;

option myspace.s_oui "00abcd";
option myspace.s_sn "1234567890";

if exists vendor.myspace {
   log (info,"vivso packet");
} else {
   log (info,"NOT vivso packet");

class "myspace-clients" {
   match if exists vendor.myspace;
   log (info,"found myspace client");
   log (info, concat ("  data: ", option vendor.myspace));
   log (info, concat ("  oui ", option myspace.r_oui));
   log (info, concat ("  sn ", option myspace.r_sn));

subnet netmask {
   default-lease-time 86400;
   max-lease-time 86400;
   option routers;
   option domain-name-servers;

More information about the dhcp-users mailing list