Brian Candler wrote:
and this works. But I get a syntax error if I change the first line to
if (reply:Framed-IP-Address =* 0.0.0.0) {
Expected comparison at: =* /Users/brian/Build/freeradius/etc/raddb/sites-enabled/default[69]: Errors parsing authorize section.
Yeah. That's forbidden in 2.x.
After a bit of thought, I found I could rewrite it more simply as
if (reply:Framed-IP-Address) {
Which is also documented. See "man unlang".
Still, this appears to be a minor inconsistency between unlang and checkitem operators.
Yes. The checkitem stuff *requires* all 3 fields. So simple checks for existence aren't allowed. In v3, the =* operator is allowed. It is re-written internally to be just an existence check. There are a number of other "peep-hole" optimizations done by the new code. See src/tests/condition.txt. e.g. (((((foo))))) --> foo !(!foo) --> foo etc. That allows the run-time interpretor to do less work. It also ensures that the run-time interpretor has *one* version of "unlang" it interprets. And not many equal (but different) variations. Alan DeKok.