I tried Glenn's suggestion, and while it did parse correctly, it does not seem to have had the desired results.  I watched the logs and soon enough "android_xxxxyyyyyzzzzzz123" rolled thru.  <br><br>I was worried that it seemed too good to be true.  I am not convinced that it isn't a small syntax error that I have to work out, so I will play around with this some more.  <br>

<br><br><div class="gmail_quote">On Thu, Aug 25, 2011 at 9:35 AM, Glenn Satchell <span dir="ltr"><<a href="mailto:glenn.satchell@uniq.com.au">glenn.satchell@uniq.com.au</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

man dhcp-eval<br>
...<br>
     data-expression-1 ~= data-expression-2 data-expression-1  ~~<br>
     data-expression-2<br>
<br>
       The ~= and ~~ operators (not  available  on  all  systems)<br>
       perform  extended  regex(7)  matching of the values of two<br>
       data  expressions,  returning  true  if  data-expression-1<br>
       matches  against the regular expression evaluated by data-<br>
       expression-2, or false if it does not match or  encounters<br>
       some  error.   If  either the left-hand side or the right-<br>
       hand side are null, the result  is  also  false.   The  ~~<br>
       operator  differs from the ~= operator in that it is case-<br>
       insensitive.<br>
<br>
So you might want something like this then, where you list all the "good" characters in the regex string on the right? I haven't tested this, but I'm sure you get the idea...<br>
<br>
if exists host-name and option host-name ~~ "[a-z0-9.-]+" {<div class="im"><br>
        ddns-hostname = concat (lcase (option host-name) , "-" , binary-to-ascii(10 , 8 , "-" , leased-address));<br>
}<br>
else {<br>
        ddns-hostname = concat("dhcp-" , binary-to-ascii(10 , 8 , "-"<br>
leased-address));<br>
}<br>
<br></div>
regards,<br><font color="#888888">
-glenn</font><div><div></div><div class="h5"><br>
<br>
On 08/25/11 07:25, Kevin Fitzgerald wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Group,<br>
<br>
For quite some time we have been generating DHCP ddns hostnames as follows:<br>
<br>
if exists host-name {<br>
         ddns-hostname = concat (lcase (option host-name) , "-" ,<br>
binary-to-ascii(10 , 8 , "-" , leased-address));<br>
         }<br>
     else {<br>
         ddns-hostname = concat("dhcp-" , binary-to-ascii(10 , 8 , "-" ,<br>
leased-address));<br>
         }<br>
<br>
This is not an uncommon format.  It helps us ensure unique host names on<br>
our network.  Lately I notice a handful of user devices that present<br>
host names with invalid characters, such as android_blah or "nintendo<br>
3ds" with a space in the middle (no quotes).<br>
What are you folks doing to mitigate this?  As it stands these users do<br>
not receive valid NS records and we get a bevy of log messages when<br>
illegal characters are in the hostname.<br>
<br>
- I have seen mention of the use of regex in the man pages for<br>
dhcp-eval.  Is there a method to examine the host-name for invalid<br>
characters, replacing them with a hyphen or otherwise?    (Is there<br>
REGEX evaluation available within dhcpd.conf)<br>
- if there is no way to do a character by character replace, can I fail<br>
down to my else condition, simply prepending dhcp- to the front of the<br>
IP address?<br>
--<br>
K. Fitzgerald<br>
UALR Information Technology Services<br>
<br>
<br>
</blockquote></div></div><div><div></div><div class="h5">
______________________________<u></u>_________________<br>
dhcp-users mailing list<br>
<a href="mailto:dhcp-users@lists.isc.org" target="_blank">dhcp-users@lists.isc.org</a><br>
<a href="https://lists.isc.org/mailman/listinfo/dhcp-users" target="_blank">https://lists.isc.org/mailman/<u></u>listinfo/dhcp-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Kevin Fitzgerald<br>UALR Information Technology Services<br>501-916-5019<br><br>