# &develguide;

## Available Functions

### `load_cdp(struct cdp_binds *cdpb)`

Find and load the CDiameterPeer function bindings

Meaning of the parameters is as follows:

- struct cdp_binds *cdpb - structure holding function pointers

### `AAACreateRequest(AAAApplicationId app_id, AAACommandCode command_code, AAAMsgFlag flags, AAASession *session)`

Create a Diameter request

Meaning of the parameters is as follows:

- AAAApplicationId app_id - structure holding function pointers

- AAACommandCode command_code - command code for the message

- AAAMsgFlag flags - flags to be set

- AAASession *session - session id to be set

### `AAACreateResponse(AAAMessage *request)`

Create a Diameter response to a give request

Meaning of the parameters is as follows:

- AAAMessage *request - request that this response is for

### `AAAReturnCode AAAFreeMessage(AAAMessage **msg)`

Free up memory used by Diameter message

Meaning of the parameters is as follows:

- AAAMessage **msg - pointer to the pointer containing the message

### `AAAReturnCode AAASendMessage(AAAMessage *message, AAATransactionCallback_f *callback_f, void *callback_param)`

Send Diameter message asynchronously

Meaning of the parameters is as follows:

- AAAMessage *message - request message to be sent

- AAATransactionCallback_f *callback_f - When the response is received, the callback_f(callback_param,...) is called

- void *callback_param - generic param for callback

### `AAAReturnCode AAASendMessageToPeer(AAAMessage *message, str *peer_id, AAATransactionCallback_f *callback_f, void *callback_param)`

Send Diameter message to specific peer asynchronously

Meaning of the parameters is as follows:

- AAAMessage *message - request message to send

- str *peer_id - FQDN of peer to send to

- AAATransactionCallback_f *callback_f - When the response is received, the callback_f(callback_param,...) is called

- void *callback_param - generic param for callback

### `AAAMessage* AAASendRecvMessage(AAAMessage *message)`

Send Diameter message synchronously. This blocks until a response is received or a transactional time-out happens.

Meaning of the parameters is as follows:

- AAAMessage *message - request message to be sent

### `AAAMessage* AAASendRecvMessageToPeer(AAAMessage *message, str *peer_id)`

Send Diameter message to specific peer synchronously. This blocks until a response is received or a transactional time-out happens.

Meaning of the parameters is as follows:

- AAAMessage *message - request message to send

- str *peer_id - FQDN of peer to send to.

### `AAASession* AAACreateSession(void *generic_data)`

Create a generic Diameter session

Meaning of the parameters is as follows:

- void *generic_data - data to be save to session, useful for attaching app specific data to the session

### `AAASession* AAAMakeSession(int app_id,int type,str session_id)`

Create a Diameter session using already known params

Meaning of the parameters is as follows:

- int app_id - app id to use

- int type - type of session

- str session_id - session ID

### `AAASession* AAAGetSession(str id)`

Retrieve a Diameter session. Returns with a lock on AAASession->hash - Unlock when done working with result

Meaning of the parameters is as follows:

- str id - Diameter session ID to search for

### `AAADropSession(AAASession *s)`

Drop a Diameter session - deallocating all memory

Meaning of the parameters is as follows:

- AAASession *s - session to drop

### `AAASessionLock(unsigned int hash)`

Lock a Diameter session (hash table row)

Meaning of the parameters is as follows:

- unsigned int hash - hash to lock

### `AAASessionUnLock(unsigned int hash)`

Unlock a Diameter session (hash table row)

Meaning of the parameters is as follows:

- unsigned int hash - hash to unlock

### `AAASession* AAACreateClientAuthSession(int is_statefull,AAASessionCallback_f *cb,void *generic_data)`

Creates an Authorisation session for the Client. It generate a new ID and adds to the list of CDP sessions. Returns with a lock on AAASession->hash

Meaning of the parameters is as follows:

- int is_statefull - is session stateful or not

- AAASessionCallback_f *cb - callback function on session state change

- void *generic_data - generic callback data

### `AAASession* AAACreateServerAuthSession(AAMessage *msg,int is_statefull,AAASessionCallback_f *cb,void *generic_data)`

Create authorisation session for the Server. Generates a new ID and add to CDP list of sessions. Returns with a lock on AAASession->hash.

Meaning of the parameters is as follows:

- AAMessage *msg - request message from which to create server session

- int is_statefull - is session stateful or not

- AAASessionCallback_f *cb - callback function on session state change

- void *generic_data - generic callback data

### `AAASession* AAAGetAuthSession(str id)`

Look for an authorisation session. Returns with lock on AAASession->hash

Meaning of the parameters is as follows:

- str id - ID of Auth session to search for

### `AAADropAuthSession(AAASession *s)`

Deallocates the memory taken by an Authorisation session

Meaning of the parameters is as follows:

- AAASession *s - Session to drop and deallocate memory for

### `AAATerminateAuthSession(AAASession *s)`

Sends a service terminated event to the session

Meaning of the parameters is as follows:

- AAASession *s - authhorisation session to terminate

### `AAATransaction* AAACreateTransaction(AAAApplicationId app_id,AAACommandCode cmd_code)`

Create an AAATransaction for the given request

Meaning of the parameters is as follows:

- AAAApplicationId app_id - ID of the request's application

- AAACommandCode cmd_code - request's code

### `int AAADropTransaction(AAATransaction *trans)`

Deallocates the memory taken by AAA transaction

Meaning of the parameters is as follows:

- AAATransaction *trans - transaction to free

### `AAA_AVP* AAACreateAVP(AAA_AVPCode code, AAA_AVPFlag flags, AAAVendorId vendorId, char *data, size_t length, AVPDataStatus data_status)`

Create new AVP and return pointer to it

Meaning of the parameters is as follows:

- AAA_AVPCode code - code for new AVP

- AAA_AVPFlag flags - flags to set

- AAAVendorId vendorId - vendor ID for AVP

- char *data - generic payload data

- size_t length - length of payload data

- AVPDataStatus data_status - what to do with the payload, duplicate, free with message, etc

### `AAAReturnCode AAAAddAVPToMessage(AAAMessage *msg, AAA_AVP *avp, AAA_AVP *position)`

Find and load the CDiameterPeer function bindings

Meaning of the parameters is as follows:

- AAAMessage *msg - the message to add to

- AAA_AVP *avp - the AVP to add

- AAA_AVP *position - AVP to add after. if NULL, we add at beginning

### `AAA_AVP* AAAFindMatchingAVP(AAAMessage *msg, AAA_AVP *startAvp, AAA_AVPCode avpCode, AAAVendorId vendorId, AAASearchType searchType)`

Find and load the CDiameterPeer function bindings

Meaning of the parameters is as follows:

- AAAMessage *msg - the message to search in

- AAA_AVP *startAvp - at which AVP to start the search. Useful for looking for more of the same name

- AAA_AVPCode avpCode - AVP code to match

- AAAVendorId vendorId - AVP vendor ID to match

- AAASearchType searchType - look forward or backward

### `AAA_AVP * AAAGetNextAVP(AAA_AVP *avp)`

Find and load the CDiameterPeer function bindings

Meaning of the parameters is as follows:

- AAA_AVP *avp - reference AVP

### `AAAReturnCode AAAFreeAVP(AAA_AVP **avp)`

Find and load the CDiameterPeer function bindings

Meaning of the parameters is as follows:

- AAA_AVP **avp - pointer memory to be freed

### `str AAAGroupAVPS(AAA_AVP_LIST avps)`

Groups a list of AVPS into a data buffer

Meaning of the parameters is as follows:

- AAA_AVP_LIST avps - list of AVPS to group

### `AAA_AVP_LIST AAAUnGroupAVPS(str buf)`

Ungroup a data buffer into a list of AVPs

Meaning of the parameters is as follows:

- str buf - payload to ungroup list from

### `AAA_AVP* AAAFindMatchingAVPList(AAA_AVP_LIST avpList, AAA_AVP *startAvp, AAA_AVPCode avpCode, AAAVendorId vendorId, AAASearchType searchType)`

Find an AVP in an AVP list

Meaning of the parameters is as follows:

- AAA_AVP_LIST avpList - AVP list to search

- AAA_AVP *startAvp - where to start the search

- AAA_AVPCode avpCode - AVP code to match

- AAAVendorId vendorId - vendor ID to match

- AAASearchType searchType - forwards or backwards

### `AAAFreeAVPList(AAA_AVP_LIST *avpList)`

Free AVP list and all its members

Meaning of the parameters is as follows:

- AAA_AVP_LIST *avpList - list to be freed

### `int AAAAddRequestHandler(AAARequestHandler_f *f,void *param)`

add a #AAARequestHandler_f callback to request being received

Meaning of the parameters is as follows:

- AAARequestHandler_f *f - callback function to be called on incoming requests

- void *param - generic data passed to callback function

### `int AAAAddResponseHandler(AAAResponseHandler_f *f,void *param)`

add a #AAAResponseHandler_f callback to responses being received

Meaning of the parameters is as follows:

- AAAResponseHandler_f *f - callback function to be called on incoming responses

- void *param - generic data to be passed to callback function