On 12/20/2017 02:10 PM, Arran Cudbard-Bell wrote:
On 20 Dec 2017, at 10:42, Linux Chips <linux.chips@gmail.com> wrote:
Hi,
I am trying to expand an ipaddr typed attribute to hex value. the man unlang page contains the following :
e.g. If a request contains "Framed-IP-Address = 127.0.0.1", the expansion of %{hex:Framed-IP-Address} will yeild "0x7f000001".
but when ever I do that I get empty expansion.
It's because Packet-Src-IP-Address is a virtual attribute.
# Insert in the virtual server before you call rlm_sql update request { Tmp-IP-Address-0 := "%{Packet-Src-IP-Address}" }
%{hex:Tmp-IP-Address-0}
The xlat expansion code was built to work with C strings, this causes issues when working with binary data, which is why the hex expansion's input is an attribute reference.
Attribute references only function with "real" attributes in the request.
Some attributes never actually exist in the request, they're part of a set of attributes looked for especially in the xlat code so they're only accessible as expansions.
Solution is to access Packet-Src-IP-Address via an expansion, copy that to a real attribute and then pass that attribute to the hex expansion.
It'll be fixed in v4. In the reworked xlat code, it operates on sequences of boxed values instead of strings.
-Arran
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
thanks for the quick reply, I totally forgot about the virtual attribute thing, my bad :D that tmp-ip trick solved it and all working now. cheers