[kea-dev] hook library question: parsing DHO_DHCP_AGENT_OPTIONS sub options in incoming packets

Angelo Failla pallotron at fb.com
Thu Nov 3 11:34:05 UTC 2016


I have a question about retrieving DHO_DHCP_AGENT_OPTIONS from an incoming dhcpv4 DISCOVER packet.

I have this code in my hook library:

  OptionPtr rai = query4_ptr->getOption(DHO_DHCP_AGENT_OPTIONS);
  OptionPtr circuit_id_opt = rai->getOption(RAI_OPTION_AGENT_CIRCUIT_ID);
  OptionPtr remote_id_opt = rai->getOption(RAI_OPTION_REMOTE_ID);
But both circuit_id_opt and remote_id_opt are empty.
What am I doing wrong?

Option 82 contains 2 suboptions in my case.
I am writing unit tests for my own hook library:

On the client side:

// Create a sample DHCPv4 option 82 with suboptions. Shamelessly copied from
// KEA test suit.
static OptionBuffer createAgentInformationOption() {
    const uint8_t opt_data[] = {
        0x52, 0x28, // Agent Information Option (length = 40)
        // Suboptions start here...

        0x01, 0x11, // Agent Circuit ID (length = 17)
        // "Ethernet10:2026"
        0x00, 0x0f, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x31, 0x30,
        0x3a, 0x32, 0x30, 0x32, 0x36,

        0x02, 0x13, // Agent Remote ID (length = 19)
        // "00:1c:73:8c:d0:e5"
        0x00, 0x11, 0x30, 0x30, 0x3a, 0x31, 0x63, 0x3a, 0x37, 0x33, 0x3a, 0x38,
        0x63, 0x3a, 0x64, 0x30, 0x3a, 0x65, 0x35
    // total length = 42
    return (OptionBuffer(opt_data, opt_data + sizeof(opt_data)));

// add options 82 (both suboptions) to the request.
  OptionBuffer agent_info_buf = createAgentInformationOption();
  auto agent_info = boost::make_shared<Option>(
      Option::V4, DHO_DHCP_AGENT_OPTIONS, agent_info_buf);

On the server side I am trying to get them but as I wrote before it’s not working.
I can write my own code to parse the buffer but before doing that I wanted to ask here ☺

Angelo Failla

Cluster Infrastructure - Dublin
Pallotron at fb.com

More information about the kea-dev mailing list