SIP_ADD_FROM(3SIP)SIP_ADD_FROM(3SIP)NAME
sip_add_from, sip_add_to, sip_add_contact, sip_add_via, sip_add_maxfor‐
ward, sip_add_callid, sip_add_cseq, sip_add_content_type, sip_add_con‐
tent, sip_add_accept, sip_add_accept_enc, sip_add_accept_lang,
sip_add_alert_info, sip_add_allow, sip_add_call_info, sip_add_con‐
tent_disp, sip_add_content_enc, sip_add_content_lang, sip_add_date,
sip_add_error_info, sip_add_expires, sip_add_in_reply_to,
sip_add_mime_version, sip_add_min_expires, sip_add_org, sip_add_prior‐
ity, sip_add_reply_to, sip_add_passertedid, sip_add_ppreferredid,
sip_add_require, sip_add_retry_after, sip_add_route,
sip_add_record_route, sip_add_server, sip_add_subject, sip_add_sup‐
ported, sip_add_tstamp, sip_add_unsupported, sip_add_user_agent,
sip_add_warning, sip_add_rseq, sip_add_privacy, sip_add_rack,
sip_add_author, sip_add_authen_info, sip_add_proxy_authen,
sip_add_proxy_author, sip_add_proxy_require, sip_add_www_authen,
sip_add_allow_events, sip_add_event, sip_add_substate - add specific
SIP headers to the SIP message
SYNOPSIS
cc [ flag ... ] file ... -lsip [ library ... ]
#include <sip.h>
int sip_add_from(sip_msg_t sip_msg, char *display_name, char *from_uri,
char *from_tag, boolean_t add_aquot, char *from_params);
int sip_add_to(sip_msg_t sip_msg, char *display_name, char *to_uri,
char *to_tag, boolean_t add_aquot, char *to_params);
int sip_add_contact(sip_msg_t sip_msg, char *display_name,
char *contact_uri, boolean_t add_aquot, char *contact_params);
int sip_add_via(sip_msg_t sip_msg, char *sent_protocol_transport,
char *sent_by_host, int sent_by_port, char *via_params);
int sip_add_maxforward(sip_msg_t sip_msg, uint_t maxforward);
int sip_add_callid(sip_msg_t sip_msg, char *callid);
int sip_add_cseq(sip_msg_t sip_msg, sip_method_t method, uint32_t cseq);
int sip_add_content_type(sip_msg_t sip_msg, char * type, char *subtype);
int sip_add_content(sip_msg_t sip_msg, char * content);
int sip_add_accept(sip_msg_t sip_msg, char *type, char *subtype,
char *media_param, char *accept_param);
int sip_add_accept_enc(sip_msg_t sip_msg, char *code,
char *param);
int sip_add_accept_lang(sip_msg_t sip_msg, char *lang,
char *param);
int sip_add_alert_info(sip_msg_t sip_msg, char *alert,
char *param);
int sip_add_allow(sip_msg_t sip_msg, sip_method_t method_name);
int sip_add_call_info(sip_msg_t sip_msg, char *uri,
char *param);
int sip_add_content_disp(sip_msg_t sip_msg, char *dis_type, char *param);
int sip_add_content_enc(sip_msg_t sip_msg, char *code);
int sip_add_content_lang(sip_msg_t sip_msg, char *lang);
int sip_add_date(sip_msg_t sip_msg, char *date);
int sip_add_error_info(sip_msg_t sip_msg, char *uri, char *param);
int sip_add_expires(sip_msg_t sip_msg, int secs);
int sip_add_in_reply_to(sip_msg_t sip_msg, char *reply_id);
int sip_add_mime_version(sip_msg_t sip_msg, char *version);
int sip_add_min_expires(sip_msg_t sip_msg, int secs);
int sip_add_org(sip_msg_t sip_msg, char *org);
int sip_add_priority(sip_msg_t sip_msg, char *prio);
int sip_add_reply_to(sip_msg_t sip_msg, char *display_name,
char *addr, char *param, boolean_t add_aquot);
int sip_add_passertedid(sip_msg_t sip_msg, char *display_name,
char *addr, boolean_t add_aqout);
int sip_add_ppreferredid(sip_msg_t sip_msg, char *display_name,
char *addr, boolean_t add_aquot);
int sip_add_require(sip_msg_t sip_msg, char *req);
int sip_add_retry_after(sip_msg_t sip_msg, int secs, char *cmt,
char *param);
int sip_add_route(sip_msg_t sip_msg, char *display_name, char *uri,
char *route_params);
int sip_add_record_route(sip_msg_t sip_msg, char *display_name,
char *uri, char *route_params);
int sip_add_server(sip_msg_t sip_msg, char *svr);
int sip_add_subject(sip_msg_t sip_msg, char *subject);
int sip_add_supported(sip_msg_t sip_msg, char *support);
int sip_add_tstamp(sip_msg_t sip_msg, char *time, char *delay);
int sip_add_unsupported(sip_msg_t sip_msg, char *unsupport);
int sip_add_user_agent(sip_msg_t sip_msg, char *usr);
int sip_add_warning(sip_msg_t sip_msg, int code, char *addr, char *msg);
int sip_add_privacy(sip_msg_t sip_msg, char *priv_val);
int sip_add_rseq(sip_msg_t sip_msg, int resp_num);
int sip_add_rack(sip_msg_t sip_msg, int resp_num, int cseq,
sip_method_t method);
int sip_add_author(sip_msg_t sip_msg, char *scheme, char *param);
int sip_add_authen_info(sip_msg_t sip_msg, char *ainfo);
int sip_add_proxy_authen(sip_msg_t sip_msg, char *pascheme,
char *param);
int sip_add_proxy_author(sip_msg_t sip_msg, char *pascheme,
char *param);
int sip_add_proxy_require(sip_msg_t sip_msg, char *opt);
int sip_add_www_authen(sip_msg_t sip_msg, char *wascheme,
char *param);
int sip_add_allow_events(sip_msg_t sip_msg, char *events);
int sip_add_event(sip_msg_t sip_msg, char *event, char *param);
int sip_add_substate(sip_msg_t sip_msg, char *sub, char *param);
DESCRIPTION
For each of the following functions that add a header to a SIP message,
the function adds a CRLF before appending the header to the SIP mes‐
sage.
The sip_add_from() and sip_add_to() functions appends a FROM and TO
header respectively to the SIP message sip_msg. The header is created
using the display_name, if non-null, and the uri values. The add_aquot
parameter is used to specify whether the uri should be enclosed within
'<>'. If a display_name is provided then add_aquot cannot be B_FALSE.
The display_name parameter, if provided, is enclosed within quotes
before creating to the SIP header. Tag value for the FROM/TO header
can be specified which will be added to the SIP header by prefixing it
with "TAG=". Any generic parameters can be specified as the last argu‐
ment, which will be added, as is, to the SIP header.
Either the tag or the generic parameter can be specified not both, if
both are specified, the resulting header contains only the tag parame‐
ter.
The sip_add_contact() function appends a CONTACT header to the SIP mes‐
sage sip_msg using the display_name and contact_uri. The add_aquot
parameter has the same semantics as in sip_add_from()/sip_add_to(). Any
contact parameters specified in contact_param is added to the CONTACT
header before appending the header to the message.
The sip_add_via() function appends a VIA header to the SIP message
sip_msg. The VIA header is constructed using sent_protocol_transport,
sent_by_host and sent_by_port. A value of 0 for sent_by_port means that
the port information is not present in the resulting VIA header. The
VIA header that is created has the protocol set to "SIP" and version
set to "2.0". Any parameters specific in via_params is added to the VIA
header before appending the header to the SIP message.
The sip_add_maxforward() function appends a MAX-FORWARDS header to the
SIP message sip_msg using the value in maxforward. The maxforward value
is a positive integer.
The sip_add_callid() function appends a CALL-ID header to the SIP mes‐
sage sip_msg using the value in callid, if non-null. If callid is
null, this function creates a CALL-ID header using a randomly generated
value.
The sip_add_cseq() function appends a CSEQ header to the SIP message
using the values in method and cseq. Permissible values for method
include:
INVITE
ACK
OPTIONS
BYE
CANCEL
REGISTER
REFER
SUBSCRIBE
NOTIFY
PRACK
INFO
The cseq value is a positive integer.
The sip_add_content_type() function appends a CONTENT-TYPE to the SIP
message sip_msg. The CONTENT-TYPE is created using the type and sub‐
type, both should be non-null.
The sip_add_content() function adds a message body to the SIP message
sip_msg. The message body is given by the null terminated string con‐
tents. Once the function returns, the caller may reuse or delete con‐
tents as sip_add_content() creates a new buffer and copies over con‐
tents for its use.
The sip_add_accept() function appends an ACCEPT header to the SIP mes‐
sage sip_msg. The ACCEPT header is created using type and subtype. If
both type and subtype are null, then an empty ACCEPT header is added to
the SIP message. If type is non-null, but subtype is null, then the
ACCEPT header has the specified type and sets the subtype in the header
to '*'. Any accept_param or media_param, if provided, are added to the
ACCEPT header before appending the header to the SIP message.
The sip_add_accept_enc() function appends an ACCEPT-ENCODING header to
the SIP message sip_msg. The ACCEPT-ENCODING is created using code. Any
parameter specified in param is added to the ACCEPT-ENCODING header
before appending the header to the SIP message.
The sip_add_accept_lang() function appends an ACCEPT-LANGUAGE header to
the SIP message sip_msg. The ACCEPT-LANGUAGE header is created using
lang. Any parameter specified in param is added to the ACCEPT-LANGUAGE
header before appending the header to the SIP message.
The sip_add_alert_info() function appends an ALERT-INFO header to the
SIP message sip_msg. The ALERT-INFO header is created using alert. Any
parameter specified in param is added to the ALERT-INFO header before
appending the header to the SIP message.
The sip_add_allow() function appends an ALLOW header to the SIP message
sip_msg. The ALLOW header is created using alert and method. Permissi‐
ble values for method include:
INVITE
ACK
OPTIONS
BYE
CANCEL
REGISTER
REFER
INFO
SUBSCRIBE
NOTIFY
PRACK
The sip_add_call_info() function appends a CALL-INFO header to the SIP
message sip_msg. The CALL-INFO header is created using uri. Any parame‐
ter specified in param is added to the CALL-INFO before appending the
header to the SIP message.
The sip_add_content_disp() function appends a CONTENT-DISPOSITION
header to the SIP message sip_msg. The CONTENT-DISPOSITION header is
created using disp_type. Any parameter specified in param is added to
the CONTENT-DISPOSITION header before appending the header to the SIP
message.
The sip_add_content_enc() function appends a CONTENT-ENCODING header to
the SIP message sip_msg. The CONTENT-ENCODING header is created using
code.
The sip_add_content_lang() function appends a CONTENT-LANGUAGE header
to the SIP message sip_msg. The CONTENT-LANGUAGE header is created
using lang.
The sip_add_date() appends a DATE header to the SIP message sip_msg.
The DATE header is created using the date information specified in
date. The semantics for the date string is given is RFC 3261, section
25.1.
The sip_add_error_info() function appends an ERROR-INFO header to the
SIP message sip_msg. The ERROR-INFO header is created using uri. An
parameters specified in param is added to the ERROR-INFO header before
adding the header to the SIP message.
The sip_add_expires() function appends an EXPIRES header to the SIP
message sip_msg. The EXPIRES header is created using the seconds speci‐
fied in secs.
The sip_add_in_reply_to() function appends a IN-REPLY-TO header to the
SIP message sip_msg. The IN-REPLY-TO header is created using the call-
id value specified in reply_id.
The sip_add_mime_version() function appends a MIME-VERSION header to
the SIP message sip_msg. The MIME-VERSION header is created using ver‐
sion.
The sip_add_min_expires() function appends a MIN-EXPIRES header to the
SIP message sip_msg. The MIN-EXPIRES is created using the time in sec‐
onds specified in secs.
The sip_add_org() function appends a ORGANIZATION header to the SIP
message sip_msg. The ORGANIZATION header is created using the informa‐
tion specified in org.
The sip_add_priority() function appends a PRIORITY header to the SIP
message sip_msg. The PRIORITY header is created using the value speci‐
fied in prio.
The sip_add_reply_to() function appends a REPLY-TO header to the SIP
message sip_msg. The REPLY-TO header is created using the display_name,
if provided, and addr. The add_aquot parameter has the same semantics
as in sip_add_from()/sip_add_to(). Any parameters specified in param is
added to the REPLY-TO header before appending the header to the SIP
message.
The sip_add_passertedid() function appends a P-ASSERTED-IDENTITY header
to the SIP message sip_msg. The P-ASSERTED-IDENTITY header is created
using the display_name, if provided, and the addr. The add_aquot param‐
eter has the same semantics as in sip_add_from()/sip_add_to().
The sip_add_ppreferredid() function appends a P-PREFERRED-IDENTITY
header to the SIP message sip_msg. The P-PREFERRED-IDENTITY header is
created using the display_name, if provided, and the addr. The
add_aquot parameter has the same semantics as in
sip_add_from()/sip_add_to().
The sip_add_require() function appends a REQUIRE header to the SIP mes‐
sage sip_msg. The REQUIRE header is created using the information in
req.
The sip_add_retry_after() function appends a RETRY-AFTER header to the
SIP message sip_msg. The RETRY-AFTER is created using the time in sec‐
onds specified in secs comments, if any, in cmt. Any parameters speci‐
fied in param, if provided, is added to the RETRY-AFTER header before
appending the header to the SIP message.
The sip_add_route() function appends a ROUTE header to the SIP message
sip_msg. The ROUTE header is created using the display_name, if any,
and the uri. The uri is enclosed in '<>' before adding to the header.
Parameters specified in route_params are added to the ROUTE header
before appending the header to the SIP message.
The sip_add_record_route() function appends a RECORD-ROUTE header to
the SIP message sip_msg. The RECORD-ROUTE header is created using the
display_name, if any, and the uri. The uri parameter is enclosed in
'<>' before adding to the header. Any parameters specified in
route_params is added to the ROUTE header before appending the header
to the SIP message.
The sip_add_server() function appends a SERVER header to the SIP mes‐
sage sip_msg. The SERVER header is created using the information in
srv.
The sip_add_subject() function appends a SUBJECT header to the SIP mes‐
sage sip_msg. The SUBJECT header is created using the information in
subject.
The sip_add_supported() function appends a SUPPORTED header to the SIP
message sip_msg. The SUPPORTED header is created using the information
in support.
The sip_add_tstamp() function appends a TIMESTAMP header to the SIP
message sip_msg. The TIMESTAMP header is created using the time value
in time and the delay value, if provided, in delay.
The sip_add_unsupported() function appends an UNSUPPORTED header to the
SIP message sip_msg. The UNSUPPORTED header is created using the
option-tag value in unsupport.
The sip_add_user_agent() function appends an USER-AGENT header to the
SIP message sip_msg. The USER-AGENT header is created using the server-
val specified in usr.
The sip_add_warning() function appends a WARNING header to the SIP mes‐
sage sip_msg. The WARNING header is created using the warn-code in
code, warn-agent in addr and warn-test in msg.
The sip_add_privacy() function appends a PRIVACY header to the SIP mes‐
sage sip_msg. The PRIVACY header is created using the privacy value
specified in priv_val.
The sip_add_rseq() function appends a RSEQ header to the SIP message
sip_msg. The RSEQ header is created using the sequence number specified
in resp_num.
The sip_add_rack() function appends a RACK header to the SIP message
sip_msg. The RACK header is created using the sequence number in
resp_num, the SIP method in method and the CSEQ number in cseq. Permis‐
sible values for method include: INVITE, ACK, OPTIONS, BYE, CANCEL,
REGISTER, REFER, INFO, SUBSCRIBE, NOTIFY, PRACK.
The sip_add_author() function appends an AUTHORIZATION header to the
SIP message sip_msg. The AUTHORIZATION header is created using scheme.
Any parameter specified in param is added to the AUTHORIZATION header
before the header is appended to the SIP message.
The sip_add_authen_info() function appends an AUTHENTICATION-INFO()
header to the SIP message sip_msg. The AUTHENTICATION-INFO header is
created using the authentication information in ainfo.
The sip_add_proxy_authen() function appends a PROXY-AUTHENTICATE header
to the SIP message sip_msg. The PROXY-AUTHENTICATE is created using the
value specified in psacheme. Any parameter in param is added to the
PROXY-AUTHENTICATE header before adding the header to the SIP message.
The sip_add_proxy_author() function appends a PROXY-AUTHORIZATION
header to the SIP message sip_msg. The PROXY-AUTHORIZATION header is
created using the value specified in pascheme. Any parameter in param
is added to the PROXY-AUTHORIZATION header before adding the header to
the SIP message.
The sip_add_proxy_require() function appends a PROXY-REQUIRE header to
the SIP message sip_msg. The PROXY-REQUIRE header is created using the
option-tag in opt.
The sip_add_www_authen() function appends a WWW-AUTHENTICATE header to
the SIP message sip_msg. The WWW-AUTHENTICATE header is created using
the challenge in wascheme. Any parameter in param is added to the WWW-
AUTHENTICATE header before adding the header to the SIP message.
The sip_add_allow_events() function appends an ALLOW-EVENTS header to
the SIP message The ALLOW-EVENTS header is created using the event
specified in events.
The sip_add_event() function appends an EVENT header to the SIP mes‐
sage. The EVENT header is created using the value specified in event.
Any parameter in param is added to the EVENT header before appending
the header to the SIP message.
The sip_add_substate() function appends a SUBSCRIPTION-STATE header to
the SIP message. The SUBSCRIPTION-STATE header is created using the
state specified in sub. Any parameter in param is added to the SUB‐
SCRIPTION-STATE header before appending the header to the SIP message.
RETURN VALUES
These functions return 0 on success and the appropriate error value on
failure.
ERRORS
On failure, functions that return an error value can return one of the
following:
EINVAL
Mandatory parameters are not provided, i.e. null.
For sip_add_from(), sip_add_to(), sip_add_contact(),
sip_add_reply_to(), sip_add_passertedid(), sip_add_ppreferre‐
did() if display_name is non-null and add_aquot is B_FALSE.
For sip_add_branchid_to_via() the topmost VIA header already
has a branch param or the SIP message does not have a VIA
header.
EPERM
The message cannot be modified.
ENOMEM
There is an error allocating memory for creating head‐
ers/parameters.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌────────────────────┬─────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├────────────────────┼─────────────────┤
│Interface Stability │ Committed │
├────────────────────┼─────────────────┤
│MT-Level │ MT-Safe │
└────────────────────┴─────────────────┘
SEE ALSOlibsip(3LIB)
Feb 09, 2007 SIP_ADD_FROM(3SIP)