Unexpected behavior with pick-first-value
Bernardo
bpita at netcombbs.com
Wed Apr 27 15:04:57 UTC 2016
Hi Glenn, thanks for your answer.
Yes, "if" evaluation it's discarded.
I now understood why the behavior of pick-first-value, I was
interpreting a match functionality for the purposes of comparing and
passes to the next, etc, now I see that it is not. Thanks for the
lighting :).
Cheers, Bernardo.
------ Original Message ------
From: "Glenn Satchell" <glenn.satchell at uniq.com.au>
To: "Users of ISC DHCP" <dhcp-users at lists.isc.org>
Sent: 27/04/2016 11:39:28
Subject: Re: Unexpected behavior with pick-first-value
>ok, thinking more about it, that syntax won't work.
>
>However, what's happenning in your case is that the option
>dhcp-client-identifier is non-null so gets chosen but that string
>doesn't
>match the sub-class string. What it doesn't do is match any of the
>three,
>and thinking about it I can't see how you might do that without a gian
>'if' statement.
>
>It looks like you have read the dhcp-eval man page.
>
>regards,
>-glenn
>
>On Thu, April 28, 2016 12:22 am, Bernardo wrote:
>> Hi Glenn, thanks for your answer.
>>
>> I tried with your proposal and gives me error:
>>
>> class "test" { match (option dhcp-client-identifier or hardware or
>> ^
>> Configuration file errors encountered -- exiting
>>
>> The "^" it's points to hardware. Remember that I use the version
>>3.1.1.
>>
>> Anyway, even though English is not my native language, I understand
>>that
>> pick-first-value would have to return the match as the manual says
>>"Each
>> expression is evaluated, starting with the first in
>> the list, until an expression is found that does not evaluate to a
>>null
>> value.".
>>
>> Cheers, Bernardo.
>>
>> ------ Original Message ------
>> From: "Glenn Satchell" <glenn.satchell at uniq.com.au>
>> To: "Users of ISC DHCP" <dhcp-users at lists.isc.org>
>> Sent: 27/04/2016 11:07:21
>> Subject: Re: Unexpected behavior with pick-first-value
>>
>>>Hi Bernado
>>>
>>>pick-first-value is working as specified. The thing to be matched
>>>against
>>>is the first non-null value in the list. Therefore in your first case
>>>where you have:
>>>
>>>match pick-first-value (option dhcp-client-identifier, hardware,
>>>suffix(option dhcp-client-identifier, 7));
>>>
>>>the thing to be matched against is option dhcp-client-identifier.
>>>
>>>If you want to match against any of the three you need to use match
>>>...
>>>or
>>>... or ..., for example:
>>>
>>>match (option dhcp-client-identifier or hardware or suffix(option
>>>dhcp-client-identifier, 7));
>>>
>>>regards,
>>>-glenn
>>>
>>>On Wed, April 27, 2016 11:59 pm, Bernardo wrote:
>>>> Hi,
>>>>
>>>> I running a DHCP Server version V3.1.1 and I have the following
>>>> situation in which I expect that pick-first-value works in a
>>>>certain
>>>>way
>>>> and do not get it.
>>>>
>>>> I have this information from DHCP for the device:
>>>>
>>>> Client-identifier: ff:10:08:19:d9:00:03:00:01:bc:c8:10:08:19:d9
>>>> Hardware: 1:bc:c8:10:8:19:d9
>>>>
>>>> To obtain this information I use the following logs:
>>>>
>>>> log (info, concat ("Lease request from hardware ",
>>>>binary-to-ascii(16,
>>>> 8, ":", substring(hardware, 0, 7)), " in subnet xx"));
>>>> log (info, concat ("Lease request from identifier ",
>>>>binary-to-ascii(16,
>>>> 8, ":", option dhcp-client-identifier), " in subnet xx"));
>>>> log (info, concat ("Lease request from suffix identifier ",
>>>> binary-to-ascii(16, 8, ":", suffix(option dhcp-client-identifier,
>>>>7)), "
>>>> in subnet xx"));
>>>>
>>>> And the results is:
>>>>
>>>> Apr 27 06:27:01 dev dhcpd: Lease request from hardware
>>>> 1:bc:c8:10:8:19:d9 in subnet xx
>>>> Apr 27 06:27:01 dev dhcpd: Lease request from identifier
>>>> ff:10:8:19:d9:0:3:0:1:bc:c8:10:8:19:d9 in subnet xx
>>>> Apr 27 06:27:01 dev dhcpd: Lease request from suffix identifier
>>>> 1:bc:c8:10:8:19:d9 in subnet xx
>>>>
>>>> I use these very simple instructions to create a class and
>>>>subclass:
>>>>
>>>> class "test" { match pick-first-value (option
>>>>dhcp-client-identifier,
>>>> hardware, suffix(option dhcp-client-identifier, 7)); }
>>>> subclass "test" 1:bc:c8:10:08:19:d9 {}
>>>>
>>>> So, here the problem, I expect that if Client-identifier does not
>>>>match
>>>> try with the hardware data and then with suffix data, right, but
>>>>this
>>>> does not happen.
>>>>
>>>> I change the match for this pick-first-value (hardware, option
>>>> dhcp-client-identifier) and then the device it's classified under
>>>>the
>>>> test class.
>>>> I change the match for this pick-first-value (option
>>>> dhcp-client-identifier, suffix(option dhcp-client-identifier, 7),
>>>> hardware) and then the device it's not classified.
>>>> I change the match for this pick-first-value (suffix(option
>>>> dhcp-client-identifier, 7), option dhcp-client-identifier,
>>>>hardware)
>>>>and
>>>> then the device it's classified under the test class.
>>>>
>>>> So, apparently pick-first-value classifies only when the first
>>>>data
>>>> matches the declared value in a subclass.
>>>>
>>>> I'm missing something ? It is this the behavior expected ? I copy
>>>>below
>>>> what the manual says regarding pick-first-value:
>>>>
>>>> pick-first-value (data-expr1 [ ... exprn ] )
>>>>
>>>> The pick-first-value function takes any number of data expressions
>>>>as
>>>> its arguments. Each expression is evaluated, starting with the
>>>>first
>>>>in
>>>> the list, until an expression is found that does not evaluate to a
>>>>null
>>>> value. That expression is returned, and none of the subsequent
>>>> expressions are evaluated. If all expressions evaluate to a null
>>>>value,
>>>> the null value is returned.
>>>>
>>>> P.S.: I have solved my problem with the last example of a match,
>>>>but
>>>>I
>>>> wonder if I'm doing something wrong with my analysis.
>>>>
>>>> Greetings, Bernardo.
>>>>
>>>> _______________________________________________
>>>> dhcp-users mailing list
>>>> dhcp-users at lists.isc.org
>>>> https://lists.isc.org/mailman/listinfo/dhcp-users
>>>>
>>>
>>>
>>>_______________________________________________
>>>dhcp-users mailing list
>>>dhcp-users at lists.isc.org
>>>https://lists.isc.org/mailman/listinfo/dhcp-users
>>
>> _______________________________________________
>> dhcp-users mailing list
>> dhcp-users at lists.isc.org
>> https://lists.isc.org/mailman/listinfo/dhcp-users
>>
>
>
>_______________________________________________
>dhcp-users mailing list
>dhcp-users at lists.isc.org
>https://lists.isc.org/mailman/listinfo/dhcp-users
More information about the dhcp-users
mailing list