'\" te
.\"  Copyright (c) 2007, Sun Microsystems, Inc.  All Rights Reserved
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH SIP_ADD_FROM 3SIP "Feb 09, 2007"
.SH NAME
sip_add_from, sip_add_to, sip_add_contact, sip_add_via, sip_add_maxforward,
sip_add_callid, sip_add_cseq, sip_add_content_type, sip_add_content,
sip_add_accept, sip_add_accept_enc, sip_add_accept_lang, sip_add_alert_info,
sip_add_allow, sip_add_call_info, sip_add_content_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_priority, 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_supported, 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
.SH SYNOPSIS
.LP
.nf
\fBcc\fR [ \fIflag\fR ... ] \fIfile\fR ... \fB-lsip\fR [ \fIlibrary\fR ... ]
#include <sip.h>

\fBint\fR \fIsip_add_from\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdisplay_name\fR, \fBchar *\fR\fIfrom_uri\fR,
     \fBchar *\fR\fIfrom_tag\fR, \fBboolean_t\fR \fIadd_aquot\fR, \fBchar *\fR\fIfrom_params\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_to\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdisplay_name\fR, \fBchar *\fR\fIto_uri\fR,
     \fBchar *\fR\fIto_tag\fR, \fBboolean_t\fR \fIadd_aquot\fR, \fBchar *\fR\fIto_params\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_contact\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdisplay_name\fR,
     \fBchar *\fR\fIcontact_uri\fR, \fBboolean_t\fR \fIadd_aquot\fR, \fBchar *\fR\fIcontact_params\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_via\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIsent_protocol_transport\fR,
     \fBchar *\fR\fIsent_by_host\fR, \fBint\fR \fIsent_by_port\fR, \fBchar *\fR\fIvia_params\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_maxforward\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBuint_t\fR \fImaxforward\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_callid\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIcallid\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_cseq\fR(\fBsip_msg_t\fR \fIsip_msg,\fR \fBsip_method_t\fR \fImethod\fR, \fBuint32_t\fR \fIcseq\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_content_type\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR \fItype\fR, \fBchar *\fR\fIsubtype\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_content\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR \fIcontent\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_accept\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fItype\fR, \fBchar *\fR\fIsubtype\fR,
     \fBchar *\fR\fImedia_param\fR, \fBchar *\fR\fIaccept_param\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_accept_enc\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIcode\fR,
     \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_accept_lang\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIlang\fR,
     \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_alert_info\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIalert\fR,
     \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_allow\fR(\fBsip_msg_t\fR \fIsip_msg,\fR \fBsip_method_t\fR \fImethod_name\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_call_info\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIuri\fR,
     \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_content_disp\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdis_type\fR, \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_content_enc\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIcode\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_content_lang\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIlang\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_date\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdate\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_error_info\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIuri\fR, \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_expires\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBint\fR \fIsecs\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_in_reply_to\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIreply_id\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_mime_version\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIversion\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_min_expires\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBint\fR \fIsecs\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_org\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIorg\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_priority\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIprio\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_reply_to\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdisplay_name\fR,
     \fBchar *\fR\fIaddr\fR, \fBchar *\fR\fIparam\fR, \fBboolean_t\fR \fIadd_aquot\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_passertedid\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdisplay_name\fR,
     \fBchar *\fR\fIaddr\fR, \fBboolean_t\fR \fIadd_aqout\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_ppreferredid\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdisplay_name\fR,
     \fBchar *\fR\fIaddr\fR, \fBboolean_t\fR \fIadd_aquot\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_require\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIreq\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_retry_after\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBint\fR \fIsecs\fR, \fBchar *\fR\fIcmt\fR,
     \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_route\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdisplay_name\fR, \fBchar *\fR\fIuri\fR,
     \fBchar *\fR\fIroute_params\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_record_route\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIdisplay_name\fR,
     \fBchar *\fR\fIuri\fR, \fBchar *\fR\fIroute_params\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_server\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIsvr\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_subject\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIsubject\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_supported\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIsupport\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_tstamp\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fItime\fR, \fBchar *\fR\fIdelay\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_unsupported\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIunsupport\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_user_agent\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIusr\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_warning\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBint\fR \fIcode\fR, \fBchar *\fR\fIaddr\fR, \fBchar *\fR\fImsg\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_privacy\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIpriv_val\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_rseq\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBint\fR \fIresp_num\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_rack\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBint\fR \fIresp_num\fR, \fBint\fR \fIcseq\fR,
     \fBsip_method_t\fR \fImethod\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_author\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIscheme\fR, \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_authen_info\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIainfo\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_proxy_authen\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIpascheme\fR,
     \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_proxy_author\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIpascheme\fR,
     \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_proxy_require\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIopt\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_www_authen\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIwascheme\fR,
     \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_allow_events\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIevents\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_event\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIevent\fR, \fBchar *\fR\fIparam\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_add_substate\fR(\fBsip_msg_t\fR \fIsip_msg\fR, \fBchar *\fR\fIsub\fR, \fBchar *\fR\fIparam\fR);
.fi

.SH DESCRIPTION
.sp
.LP
For each of the following functions that add a header to a \fBSIP\fR message,
the function adds a \fBCRLF\fR before appending the header to the \fBSIP\fR
message.
.sp
.LP
The \fBsip_add_from()\fR and \fBsip_add_to()\fR functions appends a \fBFROM\fR
and \fBTO\fR header respectively to the \fBSIP\fR message \fIsip_msg\fR. The
header is created using the \fIdisplay_name\fR, if non-null, and the \fIuri\fR
values. The \fIadd_aquot\fR parameter is used to specify whether the \fIuri\fR
should be enclosed within '\fI<>\fR\&'. If a \fIdisplay_name\fR is provided
then \fIadd_aquot\fR cannot be \fBB_FALSE\fR. The \fIdisplay_name\fR parameter,
if provided, is enclosed within quotes before creating to the \fBSIP\fR header.
Tag value for the \fBFROM/TO\fR header can be specified which will be added to
the \fBSIP\fR header by prefixing it with "\fBTAG=\fR". Any generic parameters
can be specified as the last argument, which will be added, as is, to the
\fBSIP\fR header.
.sp
.LP
Either the tag or the generic parameter can be specified not both, if both are
specified, the resulting header contains only the tag parameter.
.sp
.LP
The \fBsip_add_contact()\fR function appends a \fBCONTACT\fR header to the
\fBSIP\fR message \fIsip_msg\fR using the \fIdisplay_name\fR and
\fIcontact_uri\fR. The \fIadd_aquot\fR parameter has the same semantics as in
\fBsip_add_from()\fR/\fBsip_add_to()\fR. Any contact parameters specified in
\fIcontact_param\fR is added to the \fBCONTACT\fR header before appending the
header to the message.
.sp
.LP
The \fBsip_add_via()\fR function appends a \fBVIA\fR header to the \fBSIP\fR
message \fIsip_msg\fR. The \fBVIA\fR header is constructed using
\fBsent_protocol_transport\fR, \fBsent_by_host\fR and \fIsent_by_port\fR. A
value of \fB0\fR for \fIsent_by_port\fR means that the port information is not
present in the resulting \fBVIA\fR header. The \fBVIA\fR header that is created
has the protocol set to "\fBSIP\fR" and version set to "2.0". Any parameters
specific in \fIvia_params\fR is added to the \fBVIA\fR header before appending
the header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_maxforward()\fR function appends a \fBMAX-FORWARDS\fR header to
the \fBSIP\fR message \fIsip_msg\fR using the value in \fImaxforward\fR. The
\fImaxforward\fR value is a positive integer.
.sp
.LP
The \fBsip_add_callid()\fR function appends a \fBCALL-ID\fR header to the
\fBSIP\fR message \fIsip_msg\fR using the value in \fIcallid\fR, if non-null.
If \fIcallid\fR is null, this function creates a \fBCALL-ID\fR header using a
randomly generated value.
.sp
.LP
The \fBsip_add_cseq()\fR function appends a \fBCSEQ\fR header to the \fBSIP\fR
message using the values in \fImethod\fR and \fIcseq\fR. Permissible values for
method include:
.br
.in +2
INVITE
.in -2
.br
.in +2
ACK
.in -2
.br
.in +2
OPTIONS
.in -2
.br
.in +2
BYE
.in -2
.br
.in +2
CANCEL
.in -2
.br
.in +2
REGISTER
.in -2
.br
.in +2
REFER
.in -2
.br
.in +2
SUBSCRIBE
.in -2
.br
.in +2
NOTIFY
.in -2
.br
.in +2
PRACK
.in -2
.br
.in +2
INFO
.in -2
.sp
.LP
The \fIcseq\fR value is a positive integer.
.sp
.LP
The \fBsip_add_content_type()\fR function appends a \fBCONTENT-TYPE\fR to the
\fBSIP\fR message \fIsip_msg\fR. The \fBCONTENT-TYPE\fR is created using the
type and subtype, both should be non-null.
.sp
.LP
The \fBsip_add_content()\fR function adds a message body to the \fBSIP\fR
message \fIsip_msg\fR. The message body is given by the null terminated string
contents. Once the function returns, the caller may reuse or delete contents as
\fBsip_add_content()\fR creates a new buffer and copies over contents for its
use.
.sp
.LP
The \fBsip_add_accept()\fR function appends an \fBACCEPT\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBACCEPT\fR header is created using type
and subtype. If both type and subtype are null, then an empty \fBACCEPT\fR
header is added to the \fBSIP\fR message. If type is non-null, but subtype is
null, then the \fBACCEPT\fR header has the specified type and sets the subtype
in the header to '\fB*\fR'. Any \fIaccept_param\fR or \fImedia_param\fR, if
provided, are added to the \fBACCEPT\fR header before appending the header to
the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_accept_enc()\fR function appends an \fBACCEPT-ENCODING\fR header
to the \fBSIP\fR message \fIsip_msg\fR. The \fBACCEPT-ENCODING\fR is created
using code. Any parameter specified in \fIparam\fR is added to the
\fBACCEPT-ENCODING\fR header before appending the header to the \fBSIP\fR
message.
.sp
.LP
The \fBsip_add_accept_lang()\fR function appends an \fBACCEPT-LANGUAGE\fR
header to the \fBSIP\fR message \fIsip_msg\fR. The \fBACCEPT-LANGUAGE\fR header
is created using lang. Any parameter specified in \fIparam\fR is added to the
\fBACCEPT-LANGUAGE\fR header before appending the header to the \fBSIP\fR
message.
.sp
.LP
The \fBsip_add_alert_info()\fR function appends an \fBALERT-INFO\fR header to
the \fBSIP\fR message \fIsip_msg\fR. The \fBALERT-INFO\fR header is created
using alert. Any parameter specified in \fIparam\fR is added to the
\fBALERT-INFO\fR header before appending the header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_allow()\fR function appends an \fBALLOW\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBALLOW\fR header is created using alert
and method. Permissible values for method include:
.br
.in +2
INVITE
.in -2
.br
.in +2
ACK
.in -2
.br
.in +2
OPTIONS
.in -2
.br
.in +2
BYE
.in -2
.br
.in +2
CANCEL
.in -2
.br
.in +2
REGISTER
.in -2
.br
.in +2
REFER
.in -2
.br
.in +2
INFO
.in -2
.br
.in +2
SUBSCRIBE
.in -2
.br
.in +2
NOTIFY
.in -2
.br
.in +2
PRACK
.in -2
.sp
.LP
The \fBsip_add_call_info()\fR function appends a \fBCALL-INFO\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBCALL-INFO\fR header is created using
\fIuri\fR. Any parameter specified in \fIparam\fR is added to the
\fBCALL-INFO\fR before appending the header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_content_disp()\fR function appends a \fBCONTENT-DISPOSITION\fR
header to the \fBSIP\fR message \fIsip_msg\fR. The \fBCONTENT-DISPOSITION\fR
header is created using \fIdisp_type\fR. Any parameter specified in \fIparam\fR
is added to the \fBCONTENT-DISPOSITION\fR header before appending the header to
the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_content_enc()\fR function appends a \fBCONTENT-ENCODING\fR
header to the \fBSIP\fR message \fIsip_msg\fR. The \fBCONTENT-ENCODING\fR
header is created using code.
.sp
.LP
The \fBsip_add_content_lang()\fR function appends a \fBCONTENT-LANGUAGE\fR
header to the \fBSIP\fR message \fIsip_msg\fR. The \fBCONTENT-LANGUAGE\fR
header is created using \fIlang\fR.
.sp
.LP
The \fBsip_add_date()\fR appends a \fBDATE\fR header to the \fBSIP\fR message
\fIsip_msg\fR. The \fBDATE\fR header is created using the date information
specified in date. The semantics for the date string is given is RFC 3261,
section 25.1.
.sp
.LP
The \fBsip_add_error_info()\fR function appends an \fBERROR-INFO\fR header to
the \fBSIP\fR message \fIsip_msg\fR. The \fBERROR-INFO\fR header is created
using \fIuri\fR. An parameters specified in \fIparam\fR is added to the
\fBERROR-INFO\fR header before adding the header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_expires()\fR function appends an \fBEXPIRES\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBEXPIRES\fR header is created using the
seconds specified in \fIsecs\fR.
.sp
.LP
The \fBsip_add_in_reply_to()\fR function appends a \fBIN-REPLY-TO\fR header to
the \fBSIP\fR message \fIsip_msg\fR. The \fBIN-REPLY-TO\fR header is created
using the \fIcall-id\fR value specified in \fIreply_id\fR.
.sp
.LP
The \fBsip_add_mime_version()\fR function appends a \fBMIME-VERSION\fR header
to the \fBSIP\fR message \fIsip_msg\fR. The \fBMIME-VERSION\fR header is
created using version.
.sp
.LP
The \fBsip_add_min_expires()\fR function appends a \fBMIN-EXPIRES\fR header to
the \fBSIP\fR message \fIsip_msg\fR. The \fBMIN-EXPIRES\fR is created using the
time in seconds specified in \fIsecs\fR.
.sp
.LP
The \fBsip_add_org()\fR function appends a \fBORGANIZATION\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBORGANIZATION\fR header is created using
the information specified in \fIorg\fR.
.sp
.LP
The \fBsip_add_priority()\fR function appends a \fBPRIORITY\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBPRIORITY\fR header is created using the
value specified in \fIprio\fR.
.sp
.LP
The \fBsip_add_reply_to()\fR function appends a \fBREPLY-TO\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBREPLY-TO\fR header is created using the
\fIdisplay_name\fR, if provided, and \fIaddr\fR. The \fIadd_aquot\fR parameter
has the same semantics as in \fBsip_add_from()\fR/\fBsip_add_to()\fR. Any
parameters specified in \fIparam\fR is added to the  \fBREPLY-TO\fR header
before appending the header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_passertedid()\fR function appends a \fBP-ASSERTED-IDENTITY\fR
header to the \fBSIP\fR message \fIsip_msg\fR. The \fBP-ASSERTED-IDENTITY\fR
header is created using the \fIdisplay_name\fR, if provided, and the
\fIaddr\fR. The \fIadd_aquot\fR parameter has the same semantics as in
\fBsip_add_from()\fR/\fBsip_add_to()\fR.
.sp
.LP
The \fBsip_add_ppreferredid()\fR function appends a \fBP-PREFERRED-IDENTITY\fR
header to the \fBSIP\fR message \fIsip_msg\fR. The \fBP-PREFERRED-IDENTITY\fR
header is created using the \fIdisplay_name\fR, if provided, and the
\fIaddr\fR. The \fIadd_aquot\fR parameter has the same semantics as in
\fBsip_add_from()\fR/\fBsip_add_to()\fR.
.sp
.LP
The \fBsip_add_require()\fR function appends a \fBREQUIRE\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBREQUIRE\fR header is created using the
information in \fIreq\fR.
.sp
.LP
The \fBsip_add_retry_after()\fR function appends a \fBRETRY-AFTER\fR header to
the \fBSIP\fR message \fIsip_msg\fR. The \fBRETRY-AFTER\fR is created using the
time in seconds specified in \fIsecs\fR comments, if any, in \fIcmt\fR. Any
parameters specified in \fIparam\fR, if provided, is added to the
\fBRETRY-AFTER\fR header before appending the header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_route()\fR function appends a \fBROUTE\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBROUTE\fR header is created using the
\fIdisplay_name\fR, if any, and the \fIuri\fR. The \fIuri\fR is enclosed
in '<>' before adding to the header. Parameters specified in \fIroute_params\fR
are added to the \fBROUTE\fR header before appending the header to the
\fBSIP\fR message.
.sp
.LP
The \fBsip_add_record_route()\fR function appends a \fBRECORD-ROUTE\fR header
to the \fBSIP\fR message \fIsip_msg\fR. The \fBRECORD-ROUTE\fR header is
created using the \fIdisplay_name\fR, if any, and the \fIuri\fR. The \fIuri\fR
parameter is enclosed in '<>' before adding to the header. Any parameters
specified in \fIroute_params\fR is added to the \fBROUTE\fR header before
appending the header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_server()\fR function appends a \fBSERVER\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBSERVER\fR header is created using the
information in \fIsrv\fR.
.sp
.LP
The \fBsip_add_subject()\fR function appends a \fBSUBJECT\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBSUBJECT\fR header is created using the
information in \fIsubject\fR.
.sp
.LP
The \fBsip_add_supported()\fR function appends a \fBSUPPORTED\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBSUPPORTED\fR header is created using
the information in \fIsupport\fR.
.sp
.LP
The \fBsip_add_tstamp()\fR function appends a \fBTIMESTAMP\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBTIMESTAMP\fR header is created using
the time value in \fItime\fR and the delay value, if provided, in \fIdelay\fR.
.sp
.LP
The \fBsip_add_unsupported()\fR function appends an \fBUNSUPPORTED\fR header to
the \fBSIP\fR message \fIsip_msg\fR. The \fBUNSUPPORTED\fR header is created
using the \fBoption-tag\fR value in \fIunsupport\fR.
.sp
.LP
The \fBsip_add_user_agent()\fR function appends an \fBUSER-AGENT\fR header to
the \fBSIP\fR message \fIsip_msg\fR. The \fBUSER-AGENT\fR header is created
using the \fBserver-val\fR specified in \fIusr\fR.
.sp
.LP
The \fBsip_add_warning()\fR function appends a \fBWARNING\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBWARNING\fR header is created using the
\fBwarn-code\fR in \fIcode\fR, \fBwarn-agent\fR in \fIaddr\fR and
\fBwarn-test\fR in \fImsg\fR.
.sp
.LP
The \fBsip_add_privacy()\fR function appends a \fBPRIVACY\fR header to the
\fBSIP\fR message \fIsip_msg\fR. The \fBPRIVACY\fR header  is created using the
privacy value specified in \fIpriv_val\fR.
.sp
.LP
The \fBsip_add_rseq()\fR function appends a \fBRSEQ\fR header to the \fBSIP\fR
message \fIsip_msg\fR. The \fBRSEQ\fR header is created using the sequence
number specified in \fIresp_num\fR.
.sp
.LP
The \fBsip_add_rack()\fR function appends a \fBRACK\fR header to the \fBSIP\fR
message \fIsip_msg\fR. The \fBRACK\fR header is created using the sequence
number in \fIresp_num\fR, the \fBSIP\fR method in \fImethod\fR and the
\fBCSEQ\fR number in \fIcseq\fR. Permissible values for method include:
\fBINVITE\fR, \fBACK\fR, \fBOPTIONS\fR, \fBBYE\fR, \fBCANCEL\fR,
\fBREGISTER\fR, \fBREFER\fR, \fBINFO\fR, \fBSUBSCRIBE\fR, \fBNOTIFY\fR,
\fBPRACK\fR.
.sp
.LP
The \fBsip_add_author()\fR function appends an \fBAUTHORIZATION\fR header to
the \fBSIP\fR message \fIsip_msg\fR. The \fBAUTHORIZATION\fR header is created
using scheme. Any parameter specified in \fIparam\fR is added to the
\fBAUTHORIZATION\fR header before the header is appended to the \fBSIP\fR
message.
.sp
.LP
The \fBsip_add_authen_info()\fR function appends an \fBAUTHENTICATION-INFO()\fR
header to the \fBSIP\fR message \fIsip_msg\fR. The \fBAUTHENTICATION-INFO\fR
header is created using the authentication information in \fIainfo\fR.
.sp
.LP
The \fBsip_add_proxy_authen()\fR function appends a \fBPROXY-AUTHENTICATE\fR
header to the \fBSIP\fR message \fIsip_msg\fR. The \fBPROXY-AUTHENTICATE\fR is
created using the value specified in \fIpsacheme\fR. Any parameter in
\fIparam\fR is added to the \fBPROXY-AUTHENTICATE\fR header before adding the
header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_proxy_author()\fR function appends a \fBPROXY-AUTHORIZATION\fR
header to the \fBSIP\fR message \fIsip_msg\fR. The \fBPROXY-AUTHORIZATION\fR
header is created using the value specified in \fIpascheme\fR. Any parameter in
\fIparam\fR is added to the \fBPROXY-AUTHORIZATION\fR header before adding the
header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_proxy_require()\fR function appends a \fBPROXY-REQUIRE\fR header
to the \fBSIP\fR message \fIsip_msg\fR. The \fBPROXY-REQUIRE\fR header is
created using the \fBoption-tag\fR in \fIopt\fR.
.sp
.LP
The \fBsip_add_www_authen()\fR function appends a \fBWWW-AUTHENTICATE\fR header
to the \fBSIP\fR message \fIsip_msg\fR. The \fBWWW-AUTHENTICATE\fR header is
created using the challenge in \fIwascheme\fR. Any parameter in \fIparam\fR is
added to the \fBWWW-AUTHENTICATE\fR header before adding the header to the
\fBSIP\fR message.
.sp
.LP
The \fBsip_add_allow_events()\fR function appends an \fBALLOW-EVENTS\fR header
to the \fBSIP\fR message The \fBALLOW-EVENTS\fR header is created using the
event specified in events.
.sp
.LP
The \fBsip_add_event()\fR function appends an \fBEVENT\fR header to the
\fBSIP\fR message. The \fBEVENT\fR header is created using the value specified
in \fIevent\fR. Any parameter in \fIparam\fR is added to the \fBEVENT\fR header
before appending the header to the \fBSIP\fR message.
.sp
.LP
The \fBsip_add_substate()\fR function appends a \fBSUBSCRIPTION-STATE\fR header
to the \fBSIP\fR message. The \fBSUBSCRIPTION-STATE\fR header is created using
the \fBstate\fR specified in \fIsub\fR. Any parameter in \fIparam\fR is added
to the \fBSUBSCRIPTION-STATE\fR header before appending the header to the
\fBSIP\fR message.
.SH RETURN VALUES
.sp
.LP
These functions return \fB0\fR on success and the appropriate error value on
failure.
.SH ERRORS
.sp
.LP
On failure, functions that return an error value can return one of the
following:
.sp
.ne 2
.na
\fB\fBEINVAL\fR\fR
.ad
.RS 10n
Mandatory parameters are not provided, i.e. null.
.sp
For \fBsip_add_from()\fR, \fBsip_add_to()\fR, \fBsip_add_contact()\fR,
\fBsip_add_reply_to()\fR, \fBsip_add_passertedid()\fR,
\fBsip_add_ppreferredid()\fR if \fIdisplay_name\fR is non-null and
\fIadd_aquot\fR is \fBB_FALSE\fR.
.sp
For \fBsip_add_branchid_to_via()\fR the topmost \fBVIA\fR header already has a
branch \fIparam\fR or the \fBSIP\fR message does not have a \fBVIA\fR header.
.RE

.sp
.ne 2
.na
\fB\fBEPERM\fR\fR
.ad
.RS 10n
The message cannot be modified.
.RE

.sp
.ne 2
.na
\fB\fBENOMEM\fR\fR
.ad
.RS 10n
There is an error allocating memory for creating headers/parameters.
.RE

.SH ATTRIBUTES
.sp
.LP
See \fBattributes\fR(7) for descriptions of the following attributes:
.sp

.sp
.TS
box;
c | c
l | l .
ATTRIBUTE TYPE	ATTRIBUTE VALUE
_
Interface Stability	Committed
_
MT-Level	MT-Safe
.TE

.SH SEE ALSO
.sp
.LP
.BR libsip (3LIB)