[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(This message will disappear, once this node revised.)
struct grad_instr_conditional { grad_entry_point_t cond; /* Entry point to the compiled Rewrite condition */ grad_instr_t *iftrue; /* Points to the ``true'' branch */ grad_instr_t *iffalse; /* Points to the ``false'' branch */ }; typedef struct grad_instr_conditional grad_instr_conditional_t; |
Instructions of type grad_instr_conditional_t
indicate branching.
Upon encountering an grad_instr_conditional_t
, the
engine executes a Rewrite expression pointed to by cond
.
If the expression evaluates to true
, execution branches to
instruction iftrue
. Otherwise, if iffalse
is not NULL
,
execution branches to that instruction. Otherwise, the control flow
passes to grad_instr_t.next
, as described in the previous section.
t
.
nil
.
COND
with two arguments:
(COND "%[User-Name] ~= \"test-.*\"" (REPLY Access-Reject ("Reply-Message" . "Test accounts disabled"))) |
COND
with three arguments:
(COND "%[Hint] == "PPP" && authorize(PAM)" (REPLY Access-Accept ("Service-Type" . "Framed-User") ("Framed-Protocol" . "PPP")) (REPLY Access-Reject ("Reply-Message" . "Access Denied"))) |