How to extract A/V pairs from an Access-Request packet
Joe Maimon
jmaimon at ttec.com
Thu Jan 5 15:32:26 CET 2006
Maria Ripolles wrote:
>
> Hy all,
>
> I am developing a custom module
Perhaps what you are doing can be done via a shell script called with
the exec module?
> and I am a bit lost with the code. I am
> not a C programmer so sorry if my question is very stupid.
Well its not going to be peaches and cream for you then.
>
> I want to extract the differents A/V pairs contained in the
> Access-Request packets and check if any of them is the attribute
> "Connect-Info". In that case I would like to pass the value of the
> "Connect-Info" attribute to a function called auxiliar.
> Here is my code:
>
> static int auxiliar (char * value) { ..... }
>
> static int mymodule_authorize (void *instance, REQUEST *request) {
> ....
>
> VALUE_PAIR *request_pairs;
> request_pairs=request->packet->vps;
>
> VALUE_PAIR *aux = NULL;
>
> char * Attribute_Name = NULL;
> char *Attribute_Value = NULL;
> int type = 0;
>
> for ( aux=request_pairs; aux; aux=aux->next)
> {
> Attribute_Name = aux->name;
> Attribute_Value = aux->strvalue;
>
> if (aux->attribute == PW_CONNECT_INFO)
> {
> type=auxiliar(aux->strvalue); /* is this correct? I mean,
> is aux->strvalue a char * type? */
> }
>
> .....
> }
>
>
>
strvalue is a char * in older versions. In CVS head its a union and you
can access it (due to a compatibility macro) by vp->vp_strvalue the last
time I looked.
you can use the pairfind() function to find the attribute you are
looking for.
Consider that Connect-info may appear zero or more times in a request.
> Am I on the right track?
Eyeball review suggests that your code might work.
>
> Thank you a lot for your help and best regards
>
>
> LLama Gratis a cualquier PC del Mundo.
> Llamadas a fijos y moviles desde 1 centimo por minuto.
> http://es.voice.yahoo.com
> <http://us.rd.yahoo.com/mail/es/tagline/messenger/*http://es.voice.yahoo.com/>
>
>
>
> ------------------------------------------------------------------------
>
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
More information about the Freeradius-Devel
mailing list