How does DHCPD determine what IP address to assign and...

Glenn Satchell Glenn.Satchell at uniq.com.au
Fri Dec 28 13:00:55 UTC 2007


>Date: Thu, 27 Dec 2007 13:56:07 -0600
>From: "Ryan McCain" <Ryan.McCain at dss.state.la.us>
>To: <dhcp-users at isc.org>
>Subject: Re: How does DHCPD determine what IP address to assign and...
>
The man pages that come with dhcpd are one of the best resources around. There's 
>100 pages if you print them, so equivalent to a small book.

The man pages you are likely to be interested in are dhcpd.conf,
dhcp-eval and dhcp-options.

regards,
-glenn

>
>Great..  That's a lot to digest.  Let me google around based on what I know now 
and see if I can get this figured out.
>
>
>>>> On Wed, Dec 26, 2007 at  5:17 PM, in message
><a06240801c3988e7cd797 at simon.thehobsons.co.uk>, Simon Hobson
><dhcp1 at thehobsons.co.uk> wrote: 
>> Ryan McCain wrote:
>> 
>>>The UID always looks something like this in the lease file::
>>>
>>>uid "\000cisco-10.116.6.251-Async32"
>>>
>>>Would this then be the correct syntax:?
>>>
>>>class "DialUp" {
>>>     match if substring(option vendor-class-identifier, 3,5) = "Async";
>>>         log (info, " Matched Dialup Rule");
>>>}
>>>
>>>subnet 10.116.6.0 netmask 255.255.255.0 {
>>>      pool {
>>>          allow members of "DialUp";
>>>          range 10.116.6.1 10.116.6.8;
>>>          option routers 10.116.6.1;
>>>          }
>>>}
>>>
>>>..Am I "calling" the "DialUp" class correctly so that any UID that 
>>>contains the string "Async" will be assigned an IP address between 
>>>10.116.6.1 - 10.116.6.8?
>> 
>> Apart from what David wrote re vendor-class-identifier vs 
>> dhcp-client-identifier, your match statement will NOT match.
>> 
>> Given that string for client-id, then substring 3,5 would return 
>> "sco-1" which is not "Async". For that particular string, you would 
>> need substring 20,5 - ie the 5 byte string starting at offset 20.
>> 
>> However, as I warned about earlier, the actual length of this string 
>> will change with IP address - eg if the client-id was 
>> "\000cisco-10.116.6.51-Async32" then you would need to look one byte 
>> earlier. If the ending is always "Async32" then you might be better 
>> using 'suffix(dhcp-client-identifier, 7)' which would return the last 
>> 7 bytes.
>> 
>> Of course, if the 32 isn't constant, then you may well have to 
>> combine multiple statements to get what you need :
>> 
>> ( (substring(suffix(dhcp-client-identifier,7),0,5)="Async")
>>   or
>>    (substring(suffix(dhcp-client-identifier,6),0,5)="Async") )
>> 
>> would match <anything>Asyncxx or <anything>Asyncx
>> 
>> 
>> 
>> Lastly, yes you are using the result correctly (as in 'allow members 
>> of ...'), but don't forget you will also have to deny these clients 
>> use of any other pools - otherwise you cannot guarantee that they 
>> will use this one.
>
>
>


More information about the dhcp-users mailing list