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