Removing attributes from a reply
Joe Maimon
jmaimon at ttec.com
Mon Oct 10 20:45:40 CEST 2005
Alan DeKok wrote:
> Joe Maimon <jmaimon at ttec.com> wrote:
>
>>If I have the Framed-IP-Address attribute, I need to remove any attribute of
>>
>>Cisco-AVPair -~ "ip:addr-pool.*"
>
>
> rlm_attr_filter? I think that might work.
>
I only want to to remove the Cisco-AVPair ~= "ip:addr-pool.*" attrbute
(that is added before the proxy request is sent) IF the proxy reply
contains the Framed-IP-Address attribute.
>
>>I have been assuming I would need the new CVS head policy feature for this.
>
>
> Maybe. Then again, the module isn't quite finished.
>
> Alan DeKok.
Yeah I can tell...I have been working with it a bit and so far I have
managed to get it to parse the below, but it goes into an endless loop
debug print_tokens # as we're parsing this file
debug print_policy # once the file has been parsed
debug evaluate # print limited information during evaluation
----------------cut here--------------
policy pool {
if ( (Framed-IP-Address =* "") && (Cisco-Avpair =~
"ip:addr-pool.*")) {
reply .= {
Cisco-Avpair -~ "ip:addr-pool.*"
}
}
}
policy post-proxy {
pool()
}
-------------cut here------------------
I had to add code to parse.c, rlm_policy.h to recognize those attributes
(not sure I did it right) and I changed the calls to pairmove() to
pairxlatmove() <-- untested.
The loop is here evaluate.c:360
-----------cut here--------------------
static int policy_stack_pop(policy_state_t *state, const policy_item_t
**pitem)
{
rad_assert(pitem != NULL);
rad_assert(state->depth >= 0);
redo:
if (state->depth == 0) {
*pitem = NULL;
return 0;
}
*pitem = state->stack[state->depth - 1];
/*
* Named policies are on the stack for catching recursion.
*/
if ((*pitem)->type == POLICY_TYPE_NAMED_POLICY) {
goto redo;
-----------cut here-------------------
Changed it to *pitem = state->stack[state->depth--]; caused the server
to exist at
"*pitem = state->stack[state->depth - 1];"
Thats the best I can tell, because I have not figured out yet to get gdb
to break anywhere in the rlm_policy
Thanks,
Joe
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
>
>
More information about the Freeradius-Devel
mailing list