New feature in v3: cast!

Alan DeKok aland at
Tue May 14 15:27:43 CEST 2013

Brian Candler wrote:
> and this works. But I get a syntax error if I change the first line to
>         if (reply:Framed-IP-Address =* {
> 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


  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.

More information about the Freeradius-Devel mailing list