lpad on regular expression matches does not work
Tomasz Chiliński
chilek at chilan.com
Thu Mar 4 11:15:02 CET 2021
W dniu 04.03.2021 11:13, Tomasz Chiliński via Freeradius-Users
napisał(a):
> Hello all,
>
> I try to improve Calling-Station-Id MAC address canonicalization a
> little bit, so that
> is should left pad MAC octets with zeroes.
>
> I modified default settings as is:
>
> mac-addr-regexp =
> '([0-9a-f]{1,2})[:\-\.]([0-9a-f]{1,2})[:\-\.]([0-9a-f]{1,2})[:\-\.]([0-9a-f]{1,2})[:\-\.]([0-9a-f]{1,2})[:\-\.]([0-9a-f]{1,2})'
>
> This regular expression matches example MAC address properly:
>
> [0] => 18:d0:71:f3:70:8
> [1] => 18
> [2] => d0
> [3] => 71
> [4] => f3
> [5] => 70
> [6] => 8
>
> Then I want to make the whole thing this way:
>
> rewrite_calling_station_id {
> if (&Calling-Station-Id && (&Calling-Station-Id =~
> /^${policy.mac-addr-regexp}$/i)) {
> update request {
> &Calling-Station-Id := "%{toupper:%{lpad:%{1} 2 0}:%{lpad:%{2} 2
> 0}:%{lpad:%{3} 2 0}:%{lpad:%{4} 2 0}:%{lpad:%{5} 2 0}:%{lpad:%{6} 2
> 0}}"
> }
> updated
> }
> else {
> noop
> }
> }
>
> And here's surprise - lpad expression function handles only attribute
> parameters (ex. {lpad:&User-Name 100 0}),
> but not regexp matches. What am I doing wrong?
Sorry - I forgot about very important info - I use:
freeradius-3.0.20-3.module_el8.3.0+476+0982bc20.x86_64
;-)
--
Bests,
Tomasz Chiliński, Chilan
opiekun projektu LMS - https://lms.org.pl
kierownik projektu LMS Plus / LMS+ - https://lms-plus.org
More information about the Freeradius-Users
mailing list