SIP API Developer's Guide

Custom SIP Headers

An application can optionally provide a table of custom headers and associated parsing functions. The table is an array with an entry for each header. The table contains the following for each header:

char *header_name

The full name of the header. The application must take care that this does not conflict with existing headers. If the same header name is present in the application registered function table and the one maintained by the stack, the one registered by the application takes precedence.

char *header_short_name

Compact name, if any, for the header.

int (*header_parse_func)(struct sip_header *,
		    struct sip_parsed_header **);

The parsing function for the header. The parser will set the second argument to the parsed structure. A return value of 0 indicates success.

void (*header_free)(struct sip_parsed_header *);

The function that will free the parsed header.

boolean_t (*header_check_compliance)(struct sip_parsed_header *);

An application can optionally provide this function that will check if the header is compliant or not. The compliance for a custom header will be defined by the application.

boolean_t (*header_is_equal)(struct sip_parsed_header *,
           struct sip_parsed_header *);

An application can optionally provide this function to check if the two input headers are equivalent. The equivalence criteria is defined by the application.