using variable
Pierre LEONARD
pier.leonard at free.fr
Wed Mar 22 13:20:11 UTC 2006
Glenn Satchell a e'crit:
>>Date: Wed, 22 Mar 2006 12:33:13 +0100
>>From: Pierre LEONARD <pier.leonard at free.fr>
>>To: dhcp-users at isc.org
>>Subject: Re: using variable
>>
>>Simon Hobson a e'crit:
>>
>>
>>>Pierre LEONARD wrote:
>>>
>>>
>>>
>>>
>>>
>>>>you understood my problem but there is another problem:
>>>>
>>>>/*class "vlan1-clients" { match if <insert conditions here> } ;
>>>>
>>>>*/it's not possible to use my variable instead of "<insert conditions
>>>>here>" and i don't why
>>>>i can just use it like following:
>>>>
>>>>/*set test = "value";
>>>>if test = "value" {<treatement>;}
>>>>*/
>>>>and the treatment cannot be a block subnet, shared-network, pool, class...
>>>>so i'm blocked
>>>>
>>>>
>>>>
>>>>_my complete code:_
>>>>
>>>>#checking vlan
>>>>if (binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2,
>>>>2))= "10" {
>>>>log(info , "checking vlan");
>>>>
>>>>#checking switch
>>>>if binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6))
>>>>= "<mac address>") {
>>>>log( info, "checking switch mac address");
>>>>set test = "ok";
>>>>}
>>>>}
>>>>
>>>>#*********************************************class
>>>>definitions**************************************************
>>>>class "port20" {
>>>>match if binary-to-ascii (10, 8, "/", suffix( option agent.circuit-id,
>>>>2)) = "0/19";
>>>># match if test = "ok"; #launch but don't function
>>>>}
>>>>
>>>>class "port21" {
>>>>match if binary-to-ascii (10, 8, "/", suffix (option agent.circuit-id,
>>>>2)) = "0/20";
>>>># match if test = "ok"; #launch but don't function
>>>>}
>>>>
>>>>
>>>>
>>>>
>>>OK, I can't help with the way you want to do it as I've never gone
>>>into that detail with the server. But how about :
>>>
>>>class "s1p20" {
>>> match if (substring( option agent.remote-id, 2, 6) = aa:bb:cc:dd:ee:ff)
>>> and (suffix( option agent.circuit-id, 2) = 00:16) ;
>>> log (info, "Switch 1, Port 0/20 matched" ) ;
>>>}
>>>
>>>Someone please correct me if I'm wrong, but I think you can specify a
>>>hex string like that instead of using binary-to-ascii. Hence, a
>>>decrease in size of the config, and a decrease in the processing
>>>required to evaluate all the possible classes - note that the server
>>>must evaluate every class definition since (in the general case) any
>>>client may be a member of more than one class.
>>>
>>>Since this sort of thing should be machine generated anyway for
>>>anything more than a trivial setup, it should be no problem using hex
>>>like that.
>>>
>>>Simon
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>i tried your proposition and all it's good but there is still a problem
>>with the offset of the substring function
>>in each tutorial that i found in order to get the vlan we use the
>>followinf syntaxe :
>>
>>/substring( option agent.circuit-id, 2,2)= "10";
>>/
>>if we read the man we can explain this syntaxe like this : " evaluates
>>the data expression and returns the substring of the result of that
>>evaluation that starts offset bytes from the beginning, continuing for
>>length bytes" but it's not very logical because in this case substring
>>return 2 bytes and begin at the the third byte (offset = 2).
>>
>>unfortunately the structure of circuit-id is :
>>
>>-------------------------------------------------------------------------------
>>
>>
>----------------------------------------------------------------------------
>
>
>>|suboption type (1) | length (1) | circuit-id type (1) | length (1) |
>>vlan (2) | module (1) | port (1)|
>>-------------------------------------------------------------------------------
>>
>>
>----------------------------------------------------------------------------
>
>
>>in order to respect this structure the correct syntaxe of substring
>>function to get the vlan had to be :
>>
>>/substring (option agent circuit-id, 4, 2)= "10"; /but that does not
>>function...
>>
>>who could explain me why ?????
>>
>>
>
>The option agent.circuit-id returns binary data, so you must compare
>that with binary data rather than an ascii string.
>
>In dhcpd.conf syntax "10" is the ascii string "1" followed by "0".
>01:00 is the binary data 0x0100.
>
>substring (option agent circuit-id, 4, 2) = "10" will probably never
>evaluate to be true. It needs to be
>
> substring (option agent circuit-id, 4, 2) = 01:00;
>
>or something similar.
>
>regards,
>-glenn
>
>
>
>
>
>
sorry i mix my syntaxe. in fact i wanted to say
substring (option agent circuit-id, 4, 2) = 00:0a; an not "="10";"
in this case substring don't get the good value with this offset! i
don't know if i understan all
More information about the dhcp-users
mailing list