guarantee RFC standardized hostname
Kevin Fitzgerald
kwfitzgerald at ualr.edu
Thu Aug 25 19:19:46 UTC 2011
I made a bit of a syntax tweak and am getting closer to an answer I think.
regex portion:
if exists host-name and option host-name ~= "[A-Za-z0-9\.\-]+"
With this configuration, all hostnames seem to fail the regex even if they
seem to include only allowed characters. Everything is falling thru to the
else condition, which tacks a dhcp- to the front of the generated host
name. I even tried writing a trivial regex that should match anything like
".+", but to no avail. Still won't seem to match.
On Thu, Aug 25, 2011 at 1:36 PM, Kevin Fitzgerald <kwfitzgerald at ualr.edu>wrote:
> 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.
>
> 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.
>
>
> On Thu, Aug 25, 2011 at 9:35 AM, Glenn Satchell <
> glenn.satchell at uniq.com.au> wrote:
>
>> man dhcp-eval
>> ...
>> data-expression-1 ~= data-expression-2 data-expression-1 ~~
>> data-expression-2
>>
>> The ~= and ~~ operators (not available on all systems)
>> perform extended regex(7) matching of the values of two
>> data expressions, returning true if data-expression-1
>> matches against the regular expression evaluated by data-
>> expression-2, or false if it does not match or encounters
>> some error. If either the left-hand side or the right-
>> hand side are null, the result is also false. The ~~
>> operator differs from the ~= operator in that it is case-
>> insensitive.
>>
>> 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...
>>
>> if exists host-name and option host-name ~~ "[a-z0-9.-]+" {
>>
>> ddns-hostname = concat (lcase (option host-name) , "-" ,
>> binary-to-ascii(10 , 8 , "-" , leased-address));
>> }
>> else {
>> ddns-hostname = concat("dhcp-" , binary-to-ascii(10 , 8 , "-"
>> leased-address));
>> }
>>
>> regards,
>> -glenn
>>
>>
>> On 08/25/11 07:25, Kevin Fitzgerald wrote:
>>
>>> Hi Group,
>>>
>>> For quite some time we have been generating DHCP ddns hostnames as
>>> follows:
>>>
>>> if exists host-name {
>>> ddns-hostname = concat (lcase (option host-name) , "-" ,
>>> binary-to-ascii(10 , 8 , "-" , leased-address));
>>> }
>>> else {
>>> ddns-hostname = concat("dhcp-" , binary-to-ascii(10 , 8 , "-" ,
>>> leased-address));
>>> }
>>>
>>> This is not an uncommon format. It helps us ensure unique host names on
>>> our network. Lately I notice a handful of user devices that present
>>> host names with invalid characters, such as android_blah or "nintendo
>>> 3ds" with a space in the middle (no quotes).
>>> What are you folks doing to mitigate this? As it stands these users do
>>> not receive valid NS records and we get a bevy of log messages when
>>> illegal characters are in the hostname.
>>>
>>> - I have seen mention of the use of regex in the man pages for
>>> dhcp-eval. Is there a method to examine the host-name for invalid
>>> characters, replacing them with a hyphen or otherwise? (Is there
>>> REGEX evaluation available within dhcpd.conf)
>>> - if there is no way to do a character by character replace, can I fail
>>> down to my else condition, simply prepending dhcp- to the front of the
>>> IP address?
>>> --
>>> K. Fitzgerald
>>> UALR Information Technology Services
>>>
>>>
>>> ______________________________**_________________
>> dhcp-users mailing list
>> dhcp-users at lists.isc.org
>> https://lists.isc.org/mailman/**listinfo/dhcp-users<https://lists.isc.org/mailman/listinfo/dhcp-users>
>>
>
>
>
> --
> Kevin Fitzgerald
> UALR Information Technology Services
> 501-916-5019
>
>
--
Kevin Fitzgerald
UALR Information Technology Services
501-916-5019
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/dhcp-users/attachments/20110825/d370152b/attachment.html>
More information about the dhcp-users
mailing list