<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFCC" text="#000000">
    From original mail:<br>
    <br>
    binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 7))
    = "84:78:ac:84:e5:80"<br>
    <br>
    Reformat to:<br>
    <br>
    binary-to-ascii(<br>
    16,                                          ---------> result is
    in hex<br>
     8,                                           ---------> it works
    in 8bit wide increments<br>
     ":",                                          --------->
    separator is a ":"<br>
     substring(<br>
    option agent.remote-id,          ---------> assumed to be a MAC
    address -> string of 6 bytes: 0x112233445566<br>
     2,<br>
     7<br>
    )                                              ---------> 0x1122
    ->33445566<- This is the result of the substring operation.<br>
    )<br>
                                                   ---------> result
    of binary-to-ascii should then be: "33:44:55:66" as a text string,
    11 chars long.<br>
    <br>
     = "84:78:ac:84:e5:80"<br>
    <br>
    Something here is mysterious, not quite sure what. Can't see why
    this has ever been a match?<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 17/12/12 1:03, Glenn Satchell wrote:<br>
    </div>
    <blockquote
      cite="mid:0fdb64da16d1ccc8989293c1d987bc9d.squirrel@mail.uniq.com.au"
      type="cite">
      <pre wrap="">Hi Nico

Please see comments below.

On Mon, December 17, 2012 12:17 am, Nico De Ranter wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">Hi,



I'm trying to use DHCP option 82 to assign a different address to a host
depending on which network port it is connected to.
I'vve created the following section in my config:

############
stash-agent-options true;
...
subnet 10.103.0.0 netmask 255.255.255.0
{
        option routers 10.103.0.1;
        class "OK1Endo" {
                match if  binary-to-ascii(16, 8, ":", substring(option
agent.remote-id, 2, 7)) = "84:78:ac:84:e5:80"
</pre>
      </blockquote>
      <pre wrap="">
This string "8 4 : 7 8 : ... : 8 0" is 17 characters long. So a 7 char
substring will never be equal to it. I can't see how it ever matches.</pre>
    </blockquote>
    Precedence: first substring, then binary-to-ascii, I still don't see
    the match.<br>
    <blockquote
      cite="mid:0fdb64da16d1ccc8989293c1d987bc9d.squirrel@mail.uniq.com.au"
      type="cite">
      <pre wrap="">

</pre>
      <blockquote type="cite">
        <pre wrap="">                        and     binary-to-ascii (16, 8, ":", hardware) =
"1:0:14:2d:40:f:15"
                        and     binary-to-ascii (16, 8, ":",
substring(option agent.circuit-id, 5, 5)) = "e";
</pre>
      </blockquote>
      <pre wrap="">
This may or may not match. If the agent.circuit-id is exactly 5 characters
long it will return that last char only and if that is an 'e' then it will
match.

These can all be re-written without the binary-to-ascii and be much clearer:

match if substring(option agent.remote-id, 2, 7)) = 84:78:ac:84:e5:80
     and hardware = 1:0:14:2d:40:f:15
     and substring(option agent.circuit-id, 5, 1)) = e;

Finally, putting the class definition inside the subnet can cause some
unexpected inheritance. Probably ok if you only have a single subnet in
your definition, but better to put the class outside the subnet
definition.

</pre>
      <blockquote type="cite">
        <pre wrap="">        }
        pool {
                filename "pxelinux.0";
                next-server 10.103.0.202;
                option mobile-ip-home-agent 10.103.0.202;
                option log-servers 10.103.0.202;
                option tz "Europe/Brussels";
                use-host-decl-names on;
                allow members of "OK1Endo";
                range 10.103.0.220 10.103.0.220;
        }
  }
###########

I'm sure the class definition is correct and the pool matches as I also
added a log statement which only seems to trigger if the client matches
the
pool (if I change the class definition or remove the 'allow members' I
don't see the logs appearing in the log files anymore).

However the dhcpd server doesn't seem to send any reply to the host: in
tcpdump I see a bootp/dhcp request from the clients MAC but no replies
from
the server.  If I replace the 'pool' section with a simple 'host'
definition the server responds immediately.

Any ideas what I'm doing wrong?

Note: I'm using a very old version of dhcpd (3.1.1) which unfortunately I
cannot upgrade at the moment.

Thanks in advance,

Nico

--
Nico De Ranter

Operations Engineer


eSATURNUS

T. +32 16 40 12 82

M. +32 497 91 53 78

<a class="moz-txt-link-abbreviated" href="http://www.esaturnus.com">www.esaturnus.com</a>


<a class="moz-txt-link-rfc2396E" href="http://www.esaturnus.com/"><http://www.esaturnus.com/></a>


 <a class="moz-txt-link-rfc2396E" href="http://vcard.esaturnus.com/"><http://vcard.esaturnus.com/></a>
_______________________________________________
dhcp-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:dhcp-users@lists.isc.org">dhcp-users@lists.isc.org</a>
<a class="moz-txt-link-freetext" href="https://lists.isc.org/mailman/listinfo/dhcp-users">https://lists.isc.org/mailman/listinfo/dhcp-users</a>
</pre>
      </blockquote>
      <pre wrap="">

_______________________________________________
dhcp-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:dhcp-users@lists.isc.org">dhcp-users@lists.isc.org</a>
<a class="moz-txt-link-freetext" href="https://lists.isc.org/mailman/listinfo/dhcp-users">https://lists.isc.org/mailman/listinfo/dhcp-users</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Best regards

Sten Carlsen

No improvements come from shouting:
       "MALE BOVINE MANURE!!!"
</pre>
  </body>
</html>