Transmitted data to radius server.

2005-09-22 Thread Iandc Davies
Firstly, thanks to all of you with being this patient with me.
I think I've got a handle on the method. Please correct me if I'm wrong in
either terminology or content.

For the purpose of this mail, please use the following meanings:
Server = RADIUS Server
Client = The thing that sends information to the server.

OK,

To construct a message that is received by the sever from the client, I can
create a structure of the
following type:

typedef struct radius_packet{
  int id,
  unsigned int  code,
  uint8_t   vector[16],
  VALUE_PAIR  *vps;
  }RADIUS_PACKET

The VALUE_PAIR struct is as defined currently.

The radius server will receive the transmitted packet by passing a file
descriptor and a data array to
a system function call recvfromto.
Data then holds the received data in the following uint8_t format.

  data[0]   - code
  data[1]   - identifier
  data[2]   - length (HSB)
  data[3]   - length (LSB)
  data[4]   - vector[0]  (16 octect authenticator)
  data[5]
  ..
  data[19]- vector[15]
  data[20]- start of value_pair sequence.
  ...

If that is correct so far, radius than re-alignes to evaluate the
value_pairs.

This is where, again my understanding of the code is a bit hazy.
Any help appreciated. :-)

Therefore data[20] is mapped to a pointer attr.

  attr[0]   - holds vp-attribute
  attr[1]   - holds vp-length

The server sanity checks the sum of the lengths of the attributes against
the data length of the mesage.

Once this happens, the servers mem copies the data array to RADIUS_PACKET
- data and treats
it as it will.

Many thanks and a promise to buy you a drink or three if I see you ;-)

Ian Davies {02476 564662}
  Internal   (x740 4662)
IMS-SIPAC
Software Development Engineer


- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html


Re: Transmitted data to radius server.

2005-09-22 Thread Alan DeKok
Iandc Davies [EMAIL PROTECTED] wrote:
 Therefore data[20] is mapped to a pointer attr.
 
   attr[0]   - holds vp-attribute
   attr[1]   - holds vp-length

  And attr[2], if it exists, is vp-strvalue or vp-lvalue.

  *Please* read the RFC's.  They describe the format of RADIUS packets
and attributes.  They answer a LOT of these questions.

 Many thanks and a promise to buy you a drink or three if I see you ;-)

  If you're ever in California...

  Alan DeKok.
- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html