agent.circuit-id as dhcp-client-identifier

Barr Hibbs rbhibbs at
Mon Dec 18 19:20:13 UTC 2006

years ago, I worked for one of the RBOCs, and at that time,
the entirety of the company's systems for provisioning,
maintenance, and operation were organized around the circuit
number, which was an alphanumeric similar to

When implementing DHCP, we were asked to provide a mechanism
for identifying and reporting IP address assignments by
circuit number.

After a long, careful examination of the source code for
dhcpd and a careful review of RFC2131, we decided to
completely leave alone the hardware address and client
identifier tracking mechanisms in dhcpd.  We did add code to
track the circuit number in a parallel method to client
identifier -- this worked in our case because every client
was configured to use the circuit number as the host name,
and Microsoft clients of that vintage sent the host name to
the server in both DHCPDISCOVER and DHCPREQUEST messages.

The good news is that it was a modification to dhcpd that
did not affect the main line functionality and added
something we felt necessary in our situation.  Indeed, we
got the tracking reports from the leases file that we needed
to support provisioning, maintenance, and operations.

The bad news is that we were never able to fully and
completely debug all of the paths through lease processing
and would occasionally suffer both from attempted duplicate
deallocation of memory blocks holding the circuit number
records, and orphaned memory blocks.

Having said that, I still believe that if your situation is
such that you must track and manage resources by something
other than hardware address or client identifier, it's best
to add functionality rather than modify the core
functionality of dhcpd.

Good Luck!


> -----Original Message-----
> From: dhcp-users-bounce at
> [mailto:dhcp-users-bounce at]On
> Behalf Of Frode Nordahl
> Sent: Monday, December 18, 2006 10:08
> To: dhcp-users at
> Subject: agent.circuit-id as dhcp-client-identifier
> Hello,
> I am setting up ISC DHCPD to serve up addresses
> for xDSL clients. Our
> equipment provides network-wide unique
> information about each client
> in the agent.circuit-id option.
> We need to support dynamic allocation as well as
> static allocation,
> and would like to make this as flexible as
> possible, and avoid
> setting aside separate pools or reserve space for
> static allocation.
> After reviewing documentation and doing alot of
> tests, it is clear to
> me that one get's the most out of ISC DHCPD by
> eithier identifying
> the clients with the hardware ethernet address or
> dhcp-client-
> identifier.
> Using hardware ethernet address is a non-option
> as our customer might
> switch his CPE without us knowing it.
> With some creative use of classes we have a
> somewhat working setup
> that does what we want based on the circuit-id,
> but I would really
> like to benefit from all of ISC DHCPDs
> functionality by using
> supported attributes.
> Is it possible to configure ISC DHCPD to set
> dhcp-client-identifier
> to the value of agent.circuit-id before further
> processing incoming
> requests?
> --
> Frode Nordahl

More information about the dhcp-users mailing list