Loading...
Searching...
No Matches
sip_extra.h
Go to the documentation of this file.
/* -*- C -*-
*
* This file is part of the Sofia-SIP package
*
* Copyright (C) 2006 Nokia Corporation.
*
* Contact: Pekka Pessi <pekka.pessi@nokia-email.address.hidden>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*
*/
#ifndef SIP_EXTRA_H
#define SIP_EXTRA_H
#ifndef SIP_H
#include <sofia-sip/sip.h>
#endif
#ifndef SIP_HEADER_H
#include <sofia-sip/sip_header.h>
#endif
SOFIA_BEGIN_DECLS
typedef struct sip_refer_sub_s sip_refer_sub_t;
struct sip_refer_sub_s
{
sip_common_t rs_common[1];
sip_error_t *rs_next;
char const *rs_value;
msg_param_t const *rs_params;
};
typedef struct sip_alert_info_s sip_alert_info_t;
struct sip_alert_info_s
{
sip_common_t ai_common[1];
sip_alert_info_t *ai_next;
url_t ai_url[1];
msg_param_t const *ai_params;
};
typedef struct sip_reply_to_s sip_reply_to_t;
struct sip_reply_to_s
{
sip_common_t rplyto_common[1];
sip_error_t *rplyto_next;
char const *rplyto_display;
url_t rplyto_url[1];
msg_param_t const *rplyto_params;
};
typedef struct sip_suppress_body_if_match_s sip_suppress_body_if_match_t;
struct sip_suppress_body_if_match_s
{
sip_common_t sbim_common[1];
sip_error_t *sbim_next;
char const *sbim_tag;
};
typedef struct sip_suppress_notify_if_match_s sip_suppress_notify_if_match_t;
struct sip_suppress_notify_if_match_s
{
sip_common_t snim_common[1];
sip_error_t *snim_next;
char const *snim_tag;
};
typedef struct sip_p_asserted_identity_s sip_p_asserted_identity_t;
struct sip_p_asserted_identity_s
{
sip_common_t paid_common[1];
sip_p_asserted_identity_t
*paid_next;
char const *paid_display;
url_t paid_url[1];
};
typedef struct sip_p_preferred_identity_s sip_p_preferred_identity_t;
struct sip_p_preferred_identity_s
{
sip_common_t ppid_common[1];
sip_p_preferred_identity_t
*ppid_next;
char const *ppid_display;
url_t ppid_url[1];
};
int sip_p_initialize_remote_party_id_headers(msg_mclass_t *mclass);
typedef struct sip_remote_party_id_s sip_remote_party_id_t;
struct sip_remote_party_id_s
{
sip_common_t rpid_common[1];
sip_remote_party_id_t
*rpid_next;
char const *rpid_display;
url_t rpid_url[1];
sip_param_t const *rpid_params;
char const *rpid_screen, *rpid_party, *rpid_id_type, *rpid_privacy;
};
#define SIP_HAVE_REFER_SUB 1
enum {
sip_refer_sub_hash = 14607
};
SIP_DLL extern msg_hclass_t sip_refer_sub_class[];
SOFIAPUBFUN issize_t sip_refer_sub_d(su_home_t *, msg_header_t *,
char *s, isize_t slen);
SOFIAPUBFUN issize_t sip_refer_sub_e(char b[], isize_t bsiz,
msg_header_t const *h, int flags);
#define sip_refer_sub(sip) \
((sip_refer_sub_t *)msg_header_access((msg_pub_t*)(sip), sip_refer_sub_class))
#define SIP_REFER_SUB_INIT() SIP_HDR_INIT(refer_sub)
#if SU_HAVE_INLINE
su_inline sip_refer_sub_t *sip_refer_sub_init(sip_refer_sub_t x[1])
{
return SIP_HEADER_INIT(x, sip_refer_sub_class, sizeof(sip_refer_sub_t));
}
#else
#define sip_refer_sub_init(x) \
SIP_HEADER_INIT(x, sip_refer_sub_class, sizeof(sip_refer_sub_t))
#endif
#if SU_HAVE_INLINE
su_inline int sip_is_refer_sub(sip_header_t const *header)
{
return header && header->sh_class->hc_hash == sip_refer_sub_hash;
}
#else
int sip_is_refer_sub(sip_header_t const *header);
#endif
#define sip_refer_sub_p(h) sip_is_refer_sub((h))
#if SU_HAVE_INLINE
su_inline
#endif
sip_refer_sub_t *sip_refer_sub_dup(su_home_t *home, sip_refer_sub_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_refer_sub_t *sip_refer_sub_dup(su_home_t *home, sip_refer_sub_t const *hdr)
{
return (sip_refer_sub_t *)
msg_header_dup_as(home, sip_refer_sub_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_refer_sub_t *sip_refer_sub_copy(su_home_t *home, sip_refer_sub_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_refer_sub_t *sip_refer_sub_copy(su_home_t *home, sip_refer_sub_t const *hdr)
{
return (sip_refer_sub_t *)
msg_header_copy_as(home, sip_refer_sub_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_refer_sub_t *sip_refer_sub_make(su_home_t *home, char const *s)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline sip_refer_sub_t *sip_refer_sub_make(su_home_t *home, char const *s)
{
return (sip_refer_sub_t *)sip_header_make(home, sip_refer_sub_class, s);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_refer_sub_t *sip_refer_sub_format(su_home_t *home, char const *fmt, ...)
__attribute__((__malloc__, __format__ (printf, 2, 3)));
#if SU_HAVE_INLINE
su_inline sip_refer_sub_t *sip_refer_sub_format(su_home_t *home, char const *fmt, ...)
{
sip_header_t *h;
va_list ap;
va_start(ap, fmt);
h = sip_header_vformat(home, sip_refer_sub_class, fmt, ap);
va_end(ap);
return (sip_refer_sub_t *)h;
}
#endif
#define SIPTAG_REFER_SUB(x) siptag_refer_sub, siptag_refer_sub_v(x)
SOFIAPUBVAR tag_typedef_t siptag_refer_sub;
#define SIPTAG_REFER_SUB_REF(x) siptag_refer_sub_ref, siptag_refer_sub_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_refer_sub_ref;
#define SIPTAG_REFER_SUB_STR(s) siptag_refer_sub_str, tag_str_v(s)
SOFIAPUBVAR tag_typedef_t siptag_refer_sub_str;
#define SIPTAG_REFER_SUB_STR_REF(x) siptag_refer_sub_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_refer_sub_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_refer_sub_v(sip_refer_sub_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_refer_sub_vr(sip_refer_sub_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_refer_sub_v(v) (tag_value_t)(v)
#define siptag_refer_sub_vr(vp) (tag_value_t)(vp)
#endif
#define SIP_HAVE_ALERT_INFO 1
enum {
sip_alert_info_hash = 53913
};
SIP_DLL extern msg_hclass_t sip_alert_info_class[];
SOFIAPUBFUN issize_t sip_alert_info_d(su_home_t *, msg_header_t *,
char *s, isize_t slen);
SOFIAPUBFUN issize_t sip_alert_info_e(char b[], isize_t bsiz,
msg_header_t const *h, int flags);
#define sip_alert_info(sip) \
((sip_alert_info_t *)msg_header_access((msg_pub_t*)(sip), sip_alert_info_class))
#define SIP_ALERT_INFO_INIT() SIP_HDR_INIT(alert_info)
#if SU_HAVE_INLINE
su_inline sip_alert_info_t *sip_alert_info_init(sip_alert_info_t x[1])
{
return SIP_HEADER_INIT(x, sip_alert_info_class, sizeof(sip_alert_info_t));
}
#else
#define sip_alert_info_init(x) \
SIP_HEADER_INIT(x, sip_alert_info_class, sizeof(sip_alert_info_t))
#endif
#if SU_HAVE_INLINE
su_inline int sip_is_alert_info(sip_header_t const *header)
{
return header && header->sh_class->hc_hash == sip_alert_info_hash;
}
#else
int sip_is_alert_info(sip_header_t const *header);
#endif
#define sip_alert_info_p(h) sip_is_alert_info((h))
#if SU_HAVE_INLINE
su_inline
#endif
sip_alert_info_t *sip_alert_info_dup(su_home_t *home, sip_alert_info_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_alert_info_t *sip_alert_info_dup(su_home_t *home, sip_alert_info_t const *hdr)
{
return (sip_alert_info_t *)
msg_header_dup_as(home, sip_alert_info_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_alert_info_t *sip_alert_info_copy(su_home_t *home, sip_alert_info_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_alert_info_t *sip_alert_info_copy(su_home_t *home, sip_alert_info_t const *hdr)
{
return (sip_alert_info_t *)
msg_header_copy_as(home, sip_alert_info_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_alert_info_t *sip_alert_info_make(su_home_t *home, char const *s)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline sip_alert_info_t *sip_alert_info_make(su_home_t *home, char const *s)
{
return (sip_alert_info_t *)sip_header_make(home, sip_alert_info_class, s);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_alert_info_t *sip_alert_info_format(su_home_t *home, char const *fmt, ...)
__attribute__((__malloc__, __format__ (printf, 2, 3)));
#if SU_HAVE_INLINE
su_inline sip_alert_info_t *sip_alert_info_format(su_home_t *home, char const *fmt, ...)
{
sip_header_t *h;
va_list ap;
va_start(ap, fmt);
h = sip_header_vformat(home, sip_alert_info_class, fmt, ap);
va_end(ap);
return (sip_alert_info_t *)h;
}
#endif
#define SIPTAG_ALERT_INFO(x) siptag_alert_info, siptag_alert_info_v(x)
SOFIAPUBVAR tag_typedef_t siptag_alert_info;
#define SIPTAG_ALERT_INFO_REF(x) siptag_alert_info_ref, siptag_alert_info_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_alert_info_ref;
#define SIPTAG_ALERT_INFO_STR(s) siptag_alert_info_str, tag_str_v(s)
SOFIAPUBVAR tag_typedef_t siptag_alert_info_str;
#define SIPTAG_ALERT_INFO_STR_REF(x) siptag_alert_info_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_alert_info_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_alert_info_v(sip_alert_info_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_alert_info_vr(sip_alert_info_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_alert_info_v(v) (tag_value_t)(v)
#define siptag_alert_info_vr(vp) (tag_value_t)(vp)
#endif
#define SIP_HAVE_REPLY_TO 1
enum {
sip_reply_to_hash = 38016
};
SIP_DLL extern msg_hclass_t sip_reply_to_class[];
SOFIAPUBFUN issize_t sip_reply_to_d(su_home_t *, msg_header_t *,
char *s, isize_t slen);
SOFIAPUBFUN issize_t sip_reply_to_e(char b[], isize_t bsiz,
msg_header_t const *h, int flags);
#define sip_reply_to(sip) \
((sip_reply_to_t *)msg_header_access((msg_pub_t*)(sip), sip_reply_to_class))
#define SIP_REPLY_TO_INIT() SIP_HDR_INIT(reply_to)
#if SU_HAVE_INLINE
su_inline sip_reply_to_t *sip_reply_to_init(sip_reply_to_t x[1])
{
return SIP_HEADER_INIT(x, sip_reply_to_class, sizeof(sip_reply_to_t));
}
#else
#define sip_reply_to_init(x) \
SIP_HEADER_INIT(x, sip_reply_to_class, sizeof(sip_reply_to_t))
#endif
#if SU_HAVE_INLINE
su_inline int sip_is_reply_to(sip_header_t const *header)
{
return header && header->sh_class->hc_hash == sip_reply_to_hash;
}
#else
int sip_is_reply_to(sip_header_t const *header);
#endif
#define sip_reply_to_p(h) sip_is_reply_to((h))
#if SU_HAVE_INLINE
su_inline
#endif
sip_reply_to_t *sip_reply_to_dup(su_home_t *home, sip_reply_to_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_reply_to_t *sip_reply_to_dup(su_home_t *home, sip_reply_to_t const *hdr)
{
return (sip_reply_to_t *)
msg_header_dup_as(home, sip_reply_to_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_reply_to_t *sip_reply_to_copy(su_home_t *home, sip_reply_to_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_reply_to_t *sip_reply_to_copy(su_home_t *home, sip_reply_to_t const *hdr)
{
return (sip_reply_to_t *)
msg_header_copy_as(home, sip_reply_to_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_reply_to_t *sip_reply_to_make(su_home_t *home, char const *s)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline sip_reply_to_t *sip_reply_to_make(su_home_t *home, char const *s)
{
return (sip_reply_to_t *)sip_header_make(home, sip_reply_to_class, s);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_reply_to_t *sip_reply_to_format(su_home_t *home, char const *fmt, ...)
__attribute__((__malloc__, __format__ (printf, 2, 3)));
#if SU_HAVE_INLINE
su_inline sip_reply_to_t *sip_reply_to_format(su_home_t *home, char const *fmt, ...)
{
sip_header_t *h;
va_list ap;
va_start(ap, fmt);
h = sip_header_vformat(home, sip_reply_to_class, fmt, ap);
va_end(ap);
return (sip_reply_to_t *)h;
}
#endif
#define SIPTAG_REPLY_TO(x) siptag_reply_to, siptag_reply_to_v(x)
SOFIAPUBVAR tag_typedef_t siptag_reply_to;
#define SIPTAG_REPLY_TO_REF(x) siptag_reply_to_ref, siptag_reply_to_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_reply_to_ref;
#define SIPTAG_REPLY_TO_STR(s) siptag_reply_to_str, tag_str_v(s)
SOFIAPUBVAR tag_typedef_t siptag_reply_to_str;
#define SIPTAG_REPLY_TO_STR_REF(x) siptag_reply_to_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_reply_to_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_reply_to_v(sip_reply_to_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_reply_to_vr(sip_reply_to_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_reply_to_v(v) (tag_value_t)(v)
#define siptag_reply_to_vr(vp) (tag_value_t)(vp)
#endif
#define SIP_HAVE_REMOTE_PARTY_ID 1
enum {
sip_remote_party_id_hash = 59907
};
SIP_DLL extern msg_hclass_t sip_remote_party_id_class[];
SOFIAPUBFUN issize_t sip_remote_party_id_d(su_home_t *, msg_header_t *,
char *s, isize_t slen);
SOFIAPUBFUN issize_t sip_remote_party_id_e(char b[], isize_t bsiz,
msg_header_t const *h, int flags);
#define sip_remote_party_id(sip) \
((sip_remote_party_id_t *)msg_header_access((msg_pub_t*)(sip), sip_remote_party_id_class))
#define SIP_REMOTE_PARTY_ID_INIT() SIP_HDR_INIT(remote_party_id)
#if SU_HAVE_INLINE
su_inline sip_remote_party_id_t *sip_remote_party_id_init(sip_remote_party_id_t x[1])
{
return SIP_HEADER_INIT(x, sip_remote_party_id_class, sizeof(sip_remote_party_id_t));
}
#else
#define sip_remote_party_id_init(x) \
SIP_HEADER_INIT(x, sip_remote_party_id_class, sizeof(sip_remote_party_id_t))
#endif
#if SU_HAVE_INLINE
su_inline int sip_is_remote_party_id(sip_header_t const *header)
{
return header && header->sh_class->hc_hash == sip_remote_party_id_hash;
}
#else
int sip_is_remote_party_id(sip_header_t const *header);
#endif
#define sip_remote_party_id_p(h) sip_is_remote_party_id((h))
#if SU_HAVE_INLINE
su_inline
#endif
sip_remote_party_id_t *sip_remote_party_id_dup(su_home_t *home, sip_remote_party_id_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_remote_party_id_t *sip_remote_party_id_dup(su_home_t *home, sip_remote_party_id_t const *hdr)
{
return (sip_remote_party_id_t *)
msg_header_dup_as(home, sip_remote_party_id_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_remote_party_id_t *sip_remote_party_id_copy(su_home_t *home, sip_remote_party_id_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_remote_party_id_t *sip_remote_party_id_copy(su_home_t *home, sip_remote_party_id_t const *hdr)
{
return (sip_remote_party_id_t *)
msg_header_copy_as(home, sip_remote_party_id_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_remote_party_id_t *sip_remote_party_id_make(su_home_t *home, char const *s)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline sip_remote_party_id_t *sip_remote_party_id_make(su_home_t *home, char const *s)
{
return (sip_remote_party_id_t *)sip_header_make(home, sip_remote_party_id_class, s);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_remote_party_id_t *sip_remote_party_id_format(su_home_t *home, char const *fmt, ...)
__attribute__((__malloc__, __format__ (printf, 2, 3)));
#if SU_HAVE_INLINE
su_inline sip_remote_party_id_t *sip_remote_party_id_format(su_home_t *home, char const *fmt, ...)
{
sip_header_t *h;
va_list ap;
va_start(ap, fmt);
h = sip_header_vformat(home, sip_remote_party_id_class, fmt, ap);
va_end(ap);
return (sip_remote_party_id_t *)h;
}
#endif
#define SIPTAG_REMOTE_PARTY_ID(x) siptag_remote_party_id, siptag_remote_party_id_v(x)
SOFIAPUBVAR tag_typedef_t siptag_remote_party_id;
#define SIPTAG_REMOTE_PARTY_ID_REF(x) siptag_remote_party_id_ref, siptag_remote_party_id_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_remote_party_id_ref;
#define SIPTAG_REMOTE_PARTY_ID_STR(s) siptag_remote_party_id_str, tag_str_v(s)
SOFIAPUBVAR tag_typedef_t siptag_remote_party_id_str;
#define SIPTAG_REMOTE_PARTY_ID_STR_REF(x) siptag_remote_party_id_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_remote_party_id_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_remote_party_id_v(sip_remote_party_id_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_remote_party_id_vr(sip_remote_party_id_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_remote_party_id_v(v) (tag_value_t)(v)
#define siptag_remote_party_id_vr(vp) (tag_value_t)(vp)
#endif
#define SIP_HAVE_P_ASSERTED_IDENTITY 1
enum {
sip_p_asserted_identity_hash = 16399
};
SIP_DLL extern msg_hclass_t sip_p_asserted_identity_class[];
SOFIAPUBFUN issize_t sip_p_asserted_identity_d(su_home_t *, msg_header_t *,
char *s, isize_t slen);
SOFIAPUBFUN issize_t sip_p_asserted_identity_e(char b[], isize_t bsiz,
msg_header_t const *h, int flags);
#define sip_p_asserted_identity(sip) \
((sip_p_asserted_identity_t *)msg_header_access((msg_pub_t*)(sip), sip_p_asserted_identity_class))
#define SIP_P_ASSERTED_IDENTITY_INIT() SIP_HDR_INIT(p_asserted_identity)
#if SU_HAVE_INLINE
su_inline sip_p_asserted_identity_t *sip_p_asserted_identity_init(sip_p_asserted_identity_t x[1])
{
return SIP_HEADER_INIT(x, sip_p_asserted_identity_class, sizeof(sip_p_asserted_identity_t));
}
#else
#define sip_p_asserted_identity_init(x) \
SIP_HEADER_INIT(x, sip_p_asserted_identity_class, sizeof(sip_p_asserted_identity_t))
#endif
#if SU_HAVE_INLINE
su_inline int sip_is_p_asserted_identity(sip_header_t const *header)
{
return header && header->sh_class->hc_hash == sip_p_asserted_identity_hash;
}
#else
int sip_is_p_asserted_identity(sip_header_t const *header);
#endif
#define sip_p_asserted_identity_p(h) sip_is_p_asserted_identity((h))
#if SU_HAVE_INLINE
su_inline
#endif
sip_p_asserted_identity_t *sip_p_asserted_identity_dup(su_home_t *home, sip_p_asserted_identity_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_p_asserted_identity_t *sip_p_asserted_identity_dup(su_home_t *home, sip_p_asserted_identity_t const *hdr)
{
return (sip_p_asserted_identity_t *)
msg_header_dup_as(home, sip_p_asserted_identity_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_p_asserted_identity_t *sip_p_asserted_identity_copy(su_home_t *home, sip_p_asserted_identity_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_p_asserted_identity_t *sip_p_asserted_identity_copy(su_home_t *home, sip_p_asserted_identity_t const *hdr)
{
return (sip_p_asserted_identity_t *)
msg_header_copy_as(home, sip_p_asserted_identity_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_p_asserted_identity_t *sip_p_asserted_identity_make(su_home_t *home, char const *s)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline sip_p_asserted_identity_t *sip_p_asserted_identity_make(su_home_t *home, char const *s)
{
return (sip_p_asserted_identity_t *)sip_header_make(home, sip_p_asserted_identity_class, s);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_p_asserted_identity_t *sip_p_asserted_identity_format(su_home_t *home, char const *fmt, ...)
__attribute__((__malloc__, __format__ (printf, 2, 3)));
#if SU_HAVE_INLINE
su_inline sip_p_asserted_identity_t *sip_p_asserted_identity_format(su_home_t *home, char const *fmt, ...)
{
sip_header_t *h;
va_list ap;
va_start(ap, fmt);
h = sip_header_vformat(home, sip_p_asserted_identity_class, fmt, ap);
va_end(ap);
return (sip_p_asserted_identity_t *)h;
}
#endif
#define SIPTAG_P_ASSERTED_IDENTITY(x) siptag_p_asserted_identity, siptag_p_asserted_identity_v(x)
SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity;
#define SIPTAG_P_ASSERTED_IDENTITY_REF(x) siptag_p_asserted_identity_ref, siptag_p_asserted_identity_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity_ref;
#define SIPTAG_P_ASSERTED_IDENTITY_STR(s) siptag_p_asserted_identity_str, tag_str_v(s)
SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity_str;
#define SIPTAG_P_ASSERTED_IDENTITY_STR_REF(x) siptag_p_asserted_identity_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_p_asserted_identity_v(sip_p_asserted_identity_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_p_asserted_identity_vr(sip_p_asserted_identity_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_p_asserted_identity_v(v) (tag_value_t)(v)
#define siptag_p_asserted_identity_vr(vp) (tag_value_t)(vp)
#endif
#define SIP_HAVE_P_PREFERRED_IDENTITY 1
enum {
sip_p_preferred_identity_hash = 44591
};
SIP_DLL extern msg_hclass_t sip_p_preferred_identity_class[];
SOFIAPUBFUN issize_t sip_p_preferred_identity_d(su_home_t *, msg_header_t *,
char *s, isize_t slen);
SOFIAPUBFUN issize_t sip_p_preferred_identity_e(char b[], isize_t bsiz,
msg_header_t const *h, int flags);
#define sip_p_preferred_identity(sip) \
((sip_p_preferred_identity_t *)msg_header_access((msg_pub_t*)(sip), sip_p_preferred_identity_class))
#define SIP_P_PREFERRED_IDENTITY_INIT() SIP_HDR_INIT(p_preferred_identity)
#if SU_HAVE_INLINE
su_inline sip_p_preferred_identity_t *sip_p_preferred_identity_init(sip_p_preferred_identity_t x[1])
{
return SIP_HEADER_INIT(x, sip_p_preferred_identity_class, sizeof(sip_p_preferred_identity_t));
}
#else
#define sip_p_preferred_identity_init(x) \
SIP_HEADER_INIT(x, sip_p_preferred_identity_class, sizeof(sip_p_preferred_identity_t))
#endif
#if SU_HAVE_INLINE
su_inline int sip_is_p_preferred_identity(sip_header_t const *header)
{
return header && header->sh_class->hc_hash == sip_p_preferred_identity_hash;
}
#else
int sip_is_p_preferred_identity(sip_header_t const *header);
#endif
#define sip_p_preferred_identity_p(h) sip_is_p_preferred_identity((h))
#if SU_HAVE_INLINE
su_inline
#endif
sip_p_preferred_identity_t *sip_p_preferred_identity_dup(su_home_t *home, sip_p_preferred_identity_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_p_preferred_identity_t *sip_p_preferred_identity_dup(su_home_t *home, sip_p_preferred_identity_t const *hdr)
{
return (sip_p_preferred_identity_t *)
msg_header_dup_as(home, sip_p_preferred_identity_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_p_preferred_identity_t *sip_p_preferred_identity_copy(su_home_t *home, sip_p_preferred_identity_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_p_preferred_identity_t *sip_p_preferred_identity_copy(su_home_t *home, sip_p_preferred_identity_t const *hdr)
{
return (sip_p_preferred_identity_t *)
msg_header_copy_as(home, sip_p_preferred_identity_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_p_preferred_identity_t *sip_p_preferred_identity_make(su_home_t *home, char const *s)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline sip_p_preferred_identity_t *sip_p_preferred_identity_make(su_home_t *home, char const *s)
{
return (sip_p_preferred_identity_t *)sip_header_make(home, sip_p_preferred_identity_class, s);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_p_preferred_identity_t *sip_p_preferred_identity_format(su_home_t *home, char const *fmt, ...)
__attribute__((__malloc__, __format__ (printf, 2, 3)));
#if SU_HAVE_INLINE
su_inline sip_p_preferred_identity_t *sip_p_preferred_identity_format(su_home_t *home, char const *fmt, ...)
{
sip_header_t *h;
va_list ap;
va_start(ap, fmt);
h = sip_header_vformat(home, sip_p_preferred_identity_class, fmt, ap);
va_end(ap);
return (sip_p_preferred_identity_t *)h;
}
#endif
#define SIPTAG_P_PREFERRED_IDENTITY(x) siptag_p_preferred_identity, siptag_p_preferred_identity_v(x)
SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity;
#define SIPTAG_P_PREFERRED_IDENTITY_REF(x) siptag_p_preferred_identity_ref, siptag_p_preferred_identity_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity_ref;
#define SIPTAG_P_PREFERRED_IDENTITY_STR(s) siptag_p_preferred_identity_str, tag_str_v(s)
SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity_str;
#define SIPTAG_P_PREFERRED_IDENTITY_STR_REF(x) siptag_p_preferred_identity_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_p_preferred_identity_v(sip_p_preferred_identity_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_p_preferred_identity_vr(sip_p_preferred_identity_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_p_preferred_identity_v(v) (tag_value_t)(v)
#define siptag_p_preferred_identity_vr(vp) (tag_value_t)(vp)
#endif
#if SU_HAVE_EXPERIMENTAL
#define SIP_HAVE_SUPPRESS_BODY_IF_MATCH 1
enum {
sip_suppress_body_if_match_hash = 49874
};
SIP_DLL extern msg_hclass_t sip_suppress_body_if_match_class[];
SOFIAPUBFUN issize_t sip_suppress_body_if_match_d(su_home_t *, msg_header_t *,
char *s, isize_t slen);
SOFIAPUBFUN issize_t sip_suppress_body_if_match_e(char b[], isize_t bsiz,
msg_header_t const *h, int flags);
#define sip_suppress_body_if_match(sip) \
((sip_suppress_body_if_match_t *)msg_header_access((msg_pub_t*)(sip), sip_suppress_body_if_match_class))
#define SIP_SUPPRESS_BODY_IF_MATCH_INIT() SIP_HDR_INIT(suppress_body_if_match)
#if SU_HAVE_INLINE
su_inline sip_suppress_body_if_match_t *sip_suppress_body_if_match_init(sip_suppress_body_if_match_t x[1])
{
return SIP_HEADER_INIT(x, sip_suppress_body_if_match_class, sizeof(sip_suppress_body_if_match_t));
}
#else
#define sip_suppress_body_if_match_init(x) \
SIP_HEADER_INIT(x, sip_suppress_body_if_match_class, sizeof(sip_suppress_body_if_match_t))
#endif
#if SU_HAVE_INLINE
su_inline int sip_is_suppress_body_if_match(sip_header_t const *header)
{
return header && header->sh_class->hc_hash == sip_suppress_body_if_match_hash;
}
#else
int sip_is_suppress_body_if_match(sip_header_t const *header);
#endif
#define sip_suppress_body_if_match_p(h) sip_is_suppress_body_if_match((h))
#if SU_HAVE_INLINE
su_inline
#endif
sip_suppress_body_if_match_t *sip_suppress_body_if_match_dup(su_home_t *home, sip_suppress_body_if_match_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_suppress_body_if_match_t *sip_suppress_body_if_match_dup(su_home_t *home, sip_suppress_body_if_match_t const *hdr)
{
return (sip_suppress_body_if_match_t *)
msg_header_dup_as(home, sip_suppress_body_if_match_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_suppress_body_if_match_t *sip_suppress_body_if_match_copy(su_home_t *home, sip_suppress_body_if_match_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_suppress_body_if_match_t *sip_suppress_body_if_match_copy(su_home_t *home, sip_suppress_body_if_match_t const *hdr)
{
return (sip_suppress_body_if_match_t *)
msg_header_copy_as(home, sip_suppress_body_if_match_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_suppress_body_if_match_t *sip_suppress_body_if_match_make(su_home_t *home, char const *s)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline sip_suppress_body_if_match_t *sip_suppress_body_if_match_make(su_home_t *home, char const *s)
{
return (sip_suppress_body_if_match_t *)sip_header_make(home, sip_suppress_body_if_match_class, s);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_suppress_body_if_match_t *sip_suppress_body_if_match_format(su_home_t *home, char const *fmt, ...)
__attribute__((__malloc__, __format__ (printf, 2, 3)));
#if SU_HAVE_INLINE
su_inline sip_suppress_body_if_match_t *sip_suppress_body_if_match_format(su_home_t *home, char const *fmt, ...)
{
sip_header_t *h;
va_list ap;
va_start(ap, fmt);
h = sip_header_vformat(home, sip_suppress_body_if_match_class, fmt, ap);
va_end(ap);
return (sip_suppress_body_if_match_t *)h;
}
#endif
#define SIPTAG_SUPPRESS_BODY_IF_MATCH(x) siptag_suppress_body_if_match, siptag_suppress_body_if_match_v(x)
SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match;
#define SIPTAG_SUPPRESS_BODY_IF_MATCH_REF(x) siptag_suppress_body_if_match_ref, siptag_suppress_body_if_match_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match_ref;
#define SIPTAG_SUPPRESS_BODY_IF_MATCH_STR(s) siptag_suppress_body_if_match_str, tag_str_v(s)
SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match_str;
#define SIPTAG_SUPPRESS_BODY_IF_MATCH_STR_REF(x) siptag_suppress_body_if_match_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_suppress_body_if_match_v(sip_suppress_body_if_match_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_suppress_body_if_match_vr(sip_suppress_body_if_match_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_suppress_body_if_match_v(v) (tag_value_t)(v)
#define siptag_suppress_body_if_match_vr(vp) (tag_value_t)(vp)
#endif
#endif /* SU_HAVE_EXPERIMENTAL */
#if SU_HAVE_EXPERIMENTAL
#define SIP_HAVE_SUPPRESS_NOTIFY_IF_MATCH 1
enum {
sip_suppress_notify_if_match_hash = 51341
};
SIP_DLL extern msg_hclass_t sip_suppress_notify_if_match_class[];
SOFIAPUBFUN issize_t sip_suppress_notify_if_match_d(su_home_t *, msg_header_t *,
char *s, isize_t slen);
SOFIAPUBFUN issize_t sip_suppress_notify_if_match_e(char b[], isize_t bsiz,
msg_header_t const *h, int flags);
#define sip_suppress_notify_if_match(sip) \
((sip_suppress_notify_if_match_t *)msg_header_access((msg_pub_t*)(sip), sip_suppress_notify_if_match_class))
#define SIP_SUPPRESS_NOTIFY_IF_MATCH_INIT() SIP_HDR_INIT(suppress_notify_if_match)
#if SU_HAVE_INLINE
su_inline sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_init(sip_suppress_notify_if_match_t x[1])
{
return SIP_HEADER_INIT(x, sip_suppress_notify_if_match_class, sizeof(sip_suppress_notify_if_match_t));
}
#else
#define sip_suppress_notify_if_match_init(x) \
SIP_HEADER_INIT(x, sip_suppress_notify_if_match_class, sizeof(sip_suppress_notify_if_match_t))
#endif
#if SU_HAVE_INLINE
su_inline int sip_is_suppress_notify_if_match(sip_header_t const *header)
{
return header && header->sh_class->hc_hash == sip_suppress_notify_if_match_hash;
}
#else
int sip_is_suppress_notify_if_match(sip_header_t const *header);
#endif
#define sip_suppress_notify_if_match_p(h) sip_is_suppress_notify_if_match((h))
#if SU_HAVE_INLINE
su_inline
#endif
sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_dup(su_home_t *home, sip_suppress_notify_if_match_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_dup(su_home_t *home, sip_suppress_notify_if_match_t const *hdr)
{
return (sip_suppress_notify_if_match_t *)
msg_header_dup_as(home, sip_suppress_notify_if_match_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_copy(su_home_t *home, sip_suppress_notify_if_match_t const *hdr)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline
sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_copy(su_home_t *home, sip_suppress_notify_if_match_t const *hdr)
{
return (sip_suppress_notify_if_match_t *)
msg_header_copy_as(home, sip_suppress_notify_if_match_class, (msg_header_t const *)hdr);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_make(su_home_t *home, char const *s)
__attribute__((__malloc__));
#if SU_HAVE_INLINE
su_inline sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_make(su_home_t *home, char const *s)
{
return (sip_suppress_notify_if_match_t *)sip_header_make(home, sip_suppress_notify_if_match_class, s);
}
#endif
#if SU_HAVE_INLINE
su_inline
#endif
sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_format(su_home_t *home, char const *fmt, ...)
__attribute__((__malloc__, __format__ (printf, 2, 3)));
#if SU_HAVE_INLINE
su_inline sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_format(su_home_t *home, char const *fmt, ...)
{
sip_header_t *h;
va_list ap;
va_start(ap, fmt);
h = sip_header_vformat(home, sip_suppress_notify_if_match_class, fmt, ap);
va_end(ap);
return (sip_suppress_notify_if_match_t *)h;
}
#endif
#define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH(x) siptag_suppress_notify_if_match, siptag_suppress_notify_if_match_v(x)
SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match;
#define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH_REF(x) siptag_suppress_notify_if_match_ref, siptag_suppress_notify_if_match_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match_ref;
#define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH_STR(s) siptag_suppress_notify_if_match_str, tag_str_v(s)
SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match_str;
#define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH_STR_REF(x) siptag_suppress_notify_if_match_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_suppress_notify_if_match_v(sip_suppress_notify_if_match_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_suppress_notify_if_match_vr(sip_suppress_notify_if_match_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_suppress_notify_if_match_v(v) (tag_value_t)(v)
#define siptag_suppress_notify_if_match_vr(vp) (tag_value_t)(vp)
#endif
#endif /* SU_HAVE_EXPERIMENTAL */
SOFIA_END_DECLS
#endif
siptag_alert_info_str
tag_typedef_t siptag_alert_info_str
Tag for string with Alert-Info header value.
Definition sip_tag.c:821
sip_alert_info_d
issize_t sip_alert_info_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP Alert-Info header.
sip_is_alert_info
int sip_is_alert_info(sip_header_t const *header)
Test if header object is instance of sip_alert_info_t.
Definition sip_extra.h:614
sip_alert_info_make
sip_alert_info_t * sip_alert_info_make(su_home_t *home, char const *s))
Make a Alert-Info header structure sip_alert_info_t.
Definition sip_extra.h:736
sip_alert_info_t
struct sip_alert_info_s sip_alert_info_t
@
Definition sip_extra.h:62
sip_alert_info_hash
@ sip_alert_info_hash
@
Definition sip_extra.h:520
sip_alert_info_init
sip_alert_info_t * sip_alert_info_init(sip_alert_info_t x[1])
Initialize a structure sip_alert_info_t.
Definition sip_extra.h:591
sip_alert_info_copy
sip_alert_info_t * sip_alert_info_copy(su_home_t *home, sip_alert_info_t const *hdr))
Copy a list of Alert-Info header header structures sip_alert_info_t.
Definition sip_extra.h:706
sip_alert_info_dup
sip_alert_info_t * sip_alert_info_dup(su_home_t *home, sip_alert_info_t const *hdr))
Duplicate a list of Alert-Info header header structures sip_alert_info_t.
Definition sip_extra.h:662
sip_alert_info_class
msg_hclass_t sip_alert_info_class[]
Header class for Alert-Info header.
Definition sip_extra.c:252
siptag_alert_info
tag_typedef_t siptag_alert_info
Tag for Alert-Info header object.
Definition sip_tag.c:817
sip_alert_info_e
issize_t sip_alert_info_e(char b[], isize_t bsiz, msg_header_t const *h, int flags)
Print a SIP Alert-Info header.
sip_alert_info_format
sip_alert_info_t * sip_alert_info_format(su_home_t *home, char const *fmt,...)))
Make a Alert-Info header from formatting result.
Definition sip_extra.h:768
sip_error_t
msg_error_t sip_error_t
@
Definition sip.h:134
sip_p_asserted_identity_hash
@ sip_p_asserted_identity_hash
@
Definition sip_extra.h:1558
sip_p_asserted_identity_copy
sip_p_asserted_identity_t * sip_p_asserted_identity_copy(su_home_t *home, sip_p_asserted_identity_t const *hdr))
Copy a list of P-Asserted-Identity header header structures sip_p_asserted_identity_t.
Definition sip_extra.h:1744
sip_p_asserted_identity_format
sip_p_asserted_identity_t * sip_p_asserted_identity_format(su_home_t *home, char const *fmt,...)))
Make a P-Asserted-Identity header from formatting result.
Definition sip_extra.h:1806
sip_p_asserted_identity_d
issize_t sip_p_asserted_identity_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP P-Asserted-Identity header.
sip_is_p_asserted_identity
int sip_is_p_asserted_identity(sip_header_t const *header)
Test if header object is instance of sip_p_asserted_identity_t.
Definition sip_extra.h:1652
sip_p_asserted_identity_init
sip_p_asserted_identity_t * sip_p_asserted_identity_init(sip_p_asserted_identity_t x[1])
Initialize a structure sip_p_asserted_identity_t.
Definition sip_extra.h:1629
sip_p_asserted_identity_make
sip_p_asserted_identity_t * sip_p_asserted_identity_make(su_home_t *home, char const *s))
Make a P-Asserted-Identity header structure sip_p_asserted_identity_t.
Definition sip_extra.h:1774
sip_p_asserted_identity_e
issize_t sip_p_asserted_identity_e(char b[], isize_t bsiz, msg_header_t const *h, int flags)
Print a SIP P-Asserted-Identity header.
siptag_p_asserted_identity_str
tag_typedef_t siptag_p_asserted_identity_str
Tag for string with P-Asserted-Identity header value.
Definition sip_tag.c:854
sip_p_asserted_identity_class
msg_hclass_t sip_p_asserted_identity_class[]
Header class for P-Asserted-Identity header.
siptag_p_asserted_identity
tag_typedef_t siptag_p_asserted_identity
Tag for P-Asserted-Identity header object.
Definition sip_tag.c:850
sip_p_asserted_identity_dup
sip_p_asserted_identity_t * sip_p_asserted_identity_dup(su_home_t *home, sip_p_asserted_identity_t const *hdr))
Duplicate a list of P-Asserted-Identity header header structures sip_p_asserted_identity_t.
Definition sip_extra.h:1700
sip_p_preferred_identity_format
sip_p_preferred_identity_t * sip_p_preferred_identity_format(su_home_t *home, char const *fmt,...)))
Make a P-Preferred-Identity header from formatting result.
Definition sip_extra.h:2152
sip_p_preferred_identity_hash
@ sip_p_preferred_identity_hash
@
Definition sip_extra.h:1904
sip_p_preferred_identity_copy
sip_p_preferred_identity_t * sip_p_preferred_identity_copy(su_home_t *home, sip_p_preferred_identity_t const *hdr))
Copy a list of P-Preferred-Identity header header structures sip_p_preferred_identity_t.
Definition sip_extra.h:2090
siptag_p_preferred_identity_str
tag_typedef_t siptag_p_preferred_identity_str
Tag for string with P-Preferred-Identity header value.
Definition sip_tag.c:865
sip_p_preferred_identity_d
issize_t sip_p_preferred_identity_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP P-Preferred-Identity header.
sip_is_p_preferred_identity
int sip_is_p_preferred_identity(sip_header_t const *header)
Test if header object is instance of sip_p_preferred_identity_t.
Definition sip_extra.h:1998
sip_p_preferred_identity_e
issize_t sip_p_preferred_identity_e(char b[], isize_t bsiz, msg_header_t const *h, int flags)
Print a SIP P-Preferred-Identity header.
siptag_p_preferred_identity
tag_typedef_t siptag_p_preferred_identity
Tag for P-Preferred-Identity header object.
Definition sip_tag.c:861
sip_p_preferred_identity_make
sip_p_preferred_identity_t * sip_p_preferred_identity_make(su_home_t *home, char const *s))
Make a P-Preferred-Identity header structure sip_p_preferred_identity_t.
Definition sip_extra.h:2120
sip_p_preferred_identity_init
sip_p_preferred_identity_t * sip_p_preferred_identity_init(sip_p_preferred_identity_t x[1])
Initialize a structure sip_p_preferred_identity_t.
Definition sip_extra.h:1975
sip_p_preferred_identity_dup
sip_p_preferred_identity_t * sip_p_preferred_identity_dup(su_home_t *home, sip_p_preferred_identity_t const *hdr))
Duplicate a list of P-Preferred-Identity header header structures sip_p_preferred_identity_t.
Definition sip_extra.h:2046
sip_p_preferred_identity_class
msg_hclass_t sip_p_preferred_identity_class[]
Header class for P-Preferred-Identity header.
sip_refer_sub_t
struct sip_refer_sub_s sip_refer_sub_t
@
Definition sip_extra.h:49
sip_refer_sub_dup
sip_refer_sub_t * sip_refer_sub_dup(su_home_t *home, sip_refer_sub_t const *hdr))
Duplicate a list of Refer-Sub header header structures sip_refer_sub_t.
Definition sip_extra.h:316
sip_refer_sub_d
issize_t sip_refer_sub_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP Refer-Sub header.
sip_is_refer_sub
int sip_is_refer_sub(sip_header_t const *header)
Test if header object is instance of sip_refer_sub_t.
Definition sip_extra.h:268
sip_refer_sub_format
sip_refer_sub_t * sip_refer_sub_format(su_home_t *home, char const *fmt,...)))
Make a Refer-Sub header from formatting result.
Definition sip_extra.h:422
sip_refer_sub_make
sip_refer_sub_t * sip_refer_sub_make(su_home_t *home, char const *s))
Make a Refer-Sub header structure sip_refer_sub_t.
Definition sip_extra.h:390
sip_refer_sub_init
sip_refer_sub_t * sip_refer_sub_init(sip_refer_sub_t x[1])
Initialize a structure sip_refer_sub_t.
Definition sip_extra.h:245
siptag_refer_sub
tag_typedef_t siptag_refer_sub
Tag for Refer-Sub header object.
Definition sip_tag.c:806
sip_refer_sub_copy
sip_refer_sub_t * sip_refer_sub_copy(su_home_t *home, sip_refer_sub_t const *hdr))
Copy a list of Refer-Sub header header structures sip_refer_sub_t.
Definition sip_extra.h:360
siptag_refer_sub_str
tag_typedef_t siptag_refer_sub_str
Tag for string with Refer-Sub header value.
Definition sip_tag.c:810
sip_refer_sub_hash
@ sip_refer_sub_hash
@
Definition sip_extra.h:174
sip_refer_sub_e
issize_t sip_refer_sub_e(char b[], isize_t bsiz, msg_header_t const *h, int flags)
Print a SIP Refer-Sub header.
sip_refer_sub_class
msg_hclass_t sip_refer_sub_class[]
Header class for Refer-Sub header.
Definition sip_refer.c:492
sip_remote_party_id_e
issize_t sip_remote_party_id_e(char b[], isize_t bsiz, msg_header_t const *h, int flags)
Print a SIP Remote-Party-ID header.
siptag_remote_party_id_str
tag_typedef_t siptag_remote_party_id_str
Tag for string with Remote-Party-ID header value.
Definition sip_tag.c:843
sip_remote_party_id_dup
sip_remote_party_id_t * sip_remote_party_id_dup(su_home_t *home, sip_remote_party_id_t const *hdr))
Duplicate a list of Remote-Party-ID header header structures sip_remote_party_id_t.
Definition sip_extra.h:1354
sip_remote_party_id_d
issize_t sip_remote_party_id_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP Remote-Party-ID header.
sip_remote_party_id_format
sip_remote_party_id_t * sip_remote_party_id_format(su_home_t *home, char const *fmt,...)))
Make a Remote-Party-ID header from formatting result.
Definition sip_extra.h:1460
sip_remote_party_id_init
sip_remote_party_id_t * sip_remote_party_id_init(sip_remote_party_id_t x[1])
Initialize a structure sip_remote_party_id_t.
Definition sip_extra.h:1283
sip_remote_party_id_hash
@ sip_remote_party_id_hash
@
Definition sip_extra.h:1212
sip_remote_party_id_copy
sip_remote_party_id_t * sip_remote_party_id_copy(su_home_t *home, sip_remote_party_id_t const *hdr))
Copy a list of Remote-Party-ID header header structures sip_remote_party_id_t.
Definition sip_extra.h:1398
sip_remote_party_id_class
msg_hclass_t sip_remote_party_id_class[]
Header class for Remote-Party-ID header.
siptag_remote_party_id
tag_typedef_t siptag_remote_party_id
Tag for Remote-Party-ID header object.
Definition sip_tag.c:839
sip_is_remote_party_id
int sip_is_remote_party_id(sip_header_t const *header)
Test if header object is instance of sip_remote_party_id_t.
Definition sip_extra.h:1306
sip_remote_party_id_make
sip_remote_party_id_t * sip_remote_party_id_make(su_home_t *home, char const *s))
Make a Remote-Party-ID header structure sip_remote_party_id_t.
Definition sip_extra.h:1428
sip_reply_to_init
sip_reply_to_t * sip_reply_to_init(sip_reply_to_t x[1])
Initialize a structure sip_reply_to_t.
Definition sip_extra.h:937
sip_reply_to_format
sip_reply_to_t * sip_reply_to_format(su_home_t *home, char const *fmt,...)))
Make a Reply-To header from formatting result.
Definition sip_extra.h:1114
sip_reply_to_dup
sip_reply_to_t * sip_reply_to_dup(su_home_t *home, sip_reply_to_t const *hdr))
Duplicate a list of Reply-To header header structures sip_reply_to_t.
Definition sip_extra.h:1008
sip_reply_to_make
sip_reply_to_t * sip_reply_to_make(su_home_t *home, char const *s))
Make a Reply-To header structure sip_reply_to_t.
Definition sip_extra.h:1082
siptag_reply_to_str
tag_typedef_t siptag_reply_to_str
Tag for string with Reply-To header value.
Definition sip_tag.c:832
sip_reply_to_class
msg_hclass_t sip_reply_to_class[]
Header class for Reply-To header.
Definition sip_extra.c:327
sip_is_reply_to
int sip_is_reply_to(sip_header_t const *header)
Test if header object is instance of sip_reply_to_t.
Definition sip_extra.h:960
siptag_reply_to
tag_typedef_t siptag_reply_to
Tag for Reply-To header object.
Definition sip_tag.c:828
sip_reply_to_hash
@ sip_reply_to_hash
@
Definition sip_extra.h:866
sip_reply_to_t
struct sip_reply_to_s sip_reply_to_t
@
Definition sip_extra.h:75
sip_reply_to_d
issize_t sip_reply_to_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP Reply-To header.
sip_reply_to_copy
sip_reply_to_t * sip_reply_to_copy(su_home_t *home, sip_reply_to_t const *hdr))
Copy a list of Reply-To header header structures sip_reply_to_t.
Definition sip_extra.h:1052
sip_reply_to_e
issize_t sip_reply_to_e(char b[], isize_t bsiz, msg_header_t const *h, int flags)
Print a SIP Reply-To header.
sip_suppress_body_if_match_t
struct sip_suppress_body_if_match_s sip_suppress_body_if_match_t
@
Definition sip_extra.h:89
sip_suppress_body_if_match_format
sip_suppress_body_if_match_t * sip_suppress_body_if_match_format(su_home_t *home, char const *fmt,...)))
Make a Suppress-Body-If-Match header from formatting result.
Definition sip_extra.h:2499
sip_suppress_body_if_match_make
sip_suppress_body_if_match_t * sip_suppress_body_if_match_make(su_home_t *home, char const *s))
Make a Suppress-Body-If-Match header structure sip_suppress_body_if_match_t.
Definition sip_extra.h:2467
sip_suppress_body_if_match_d
issize_t sip_suppress_body_if_match_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP Suppress-Body-If-Match header.
sip_suppress_body_if_match_init
sip_suppress_body_if_match_t * sip_suppress_body_if_match_init(sip_suppress_body_if_match_t x[1])
Initialize a structure sip_suppress_body_if_match_t.
Definition sip_extra.h:2322
sip_suppress_body_if_match_e
issize_t sip_suppress_body_if_match_e(char b[], isize_t bsiz, msg_header_t const *h, int flags)
Print a SIP Suppress-Body-If-Match header.
sip_suppress_body_if_match_class
msg_hclass_t sip_suppress_body_if_match_class[]
Header class for Suppress-Body-If-Match header.
Definition sip_extra.c:979
sip_suppress_body_if_match_dup
sip_suppress_body_if_match_t * sip_suppress_body_if_match_dup(su_home_t *home, sip_suppress_body_if_match_t const *hdr))
Duplicate a list of Suppress-Body-If-Match header header structures sip_suppress_body_if_match_t.
Definition sip_extra.h:2393
siptag_suppress_body_if_match_str
tag_typedef_t siptag_suppress_body_if_match_str
Tag for string with Suppress-Body-If-Match header value.
Definition sip_tag.c:877
sip_is_suppress_body_if_match
int sip_is_suppress_body_if_match(sip_header_t const *header)
Test if header object is instance of sip_suppress_body_if_match_t.
Definition sip_extra.h:2345
sip_suppress_body_if_match_copy
sip_suppress_body_if_match_t * sip_suppress_body_if_match_copy(su_home_t *home, sip_suppress_body_if_match_t const *hdr))
Copy a list of Suppress-Body-If-Match header header structures sip_suppress_body_if_match_t.
Definition sip_extra.h:2437
sip_suppress_body_if_match_hash
@ sip_suppress_body_if_match_hash
@
Definition sip_extra.h:2251
siptag_suppress_body_if_match
tag_typedef_t siptag_suppress_body_if_match
Tag for Suppress-Body-If-Match header object.
Definition sip_tag.c:873
sip_suppress_notify_if_match_class
msg_hclass_t sip_suppress_notify_if_match_class[]
Header class for Suppress-Notify-If-Match header.
Definition sip_extra.c:1051
sip_suppress_notify_if_match_dup
sip_suppress_notify_if_match_t * sip_suppress_notify_if_match_dup(su_home_t *home, sip_suppress_notify_if_match_t const *hdr))
Duplicate a list of Suppress-Notify-If-Match header header structures sip_suppress_notify_if_match_t.
Definition sip_extra.h:2741
siptag_suppress_notify_if_match
tag_typedef_t siptag_suppress_notify_if_match
Tag for Suppress-Notify-If-Match header object.
Definition sip_tag.c:886
sip_suppress_notify_if_match_format
sip_suppress_notify_if_match_t * sip_suppress_notify_if_match_format(su_home_t *home, char const *fmt,...)))
Make a Suppress-Notify-If-Match header from formatting result.
Definition sip_extra.h:2847
sip_suppress_notify_if_match_init
sip_suppress_notify_if_match_t * sip_suppress_notify_if_match_init(sip_suppress_notify_if_match_t x[1])
Initialize a structure sip_suppress_notify_if_match_t.
Definition sip_extra.h:2670
siptag_suppress_notify_if_match_str
tag_typedef_t siptag_suppress_notify_if_match_str
Tag for string with Suppress-Notify-If-Match header value.
Definition sip_tag.c:890
sip_suppress_notify_if_match_e
issize_t sip_suppress_notify_if_match_e(char b[], isize_t bsiz, msg_header_t const *h, int flags)
Print a SIP Suppress-Notify-If-Match header.
sip_suppress_notify_if_match_t
struct sip_suppress_notify_if_match_s sip_suppress_notify_if_match_t
@
Definition sip_extra.h:101
sip_suppress_notify_if_match_make
sip_suppress_notify_if_match_t * sip_suppress_notify_if_match_make(su_home_t *home, char const *s))
Make a Suppress-Notify-If-Match header structure sip_suppress_notify_if_match_t.
Definition sip_extra.h:2815
sip_suppress_notify_if_match_copy
sip_suppress_notify_if_match_t * sip_suppress_notify_if_match_copy(su_home_t *home, sip_suppress_notify_if_match_t const *hdr))
Copy a list of Suppress-Notify-If-Match header header structures sip_suppress_notify_if_match_t.
Definition sip_extra.h:2785
sip_is_suppress_notify_if_match
int sip_is_suppress_notify_if_match(sip_header_t const *header)
Test if header object is instance of sip_suppress_notify_if_match_t.
Definition sip_extra.h:2693
sip_suppress_notify_if_match_hash
@ sip_suppress_notify_if_match_hash
@
Definition sip_extra.h:2599
sip_suppress_notify_if_match_d
issize_t sip_suppress_notify_if_match_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP Suppress-Notify-If-Match header.
msg_header_copy_as
msg_header_t * msg_header_copy_as(su_home_t *home, msg_hclass_t *hc, msg_header_t const *o))
msg_header_dup_as
msg_header_t * msg_header_dup_as(su_home_t *home, msg_hclass_t *hc, msg_header_t const *o))
msg_hclass_t
struct msg_hclass_s const msg_hclass_t
msg_header_t
MSG_HDR_T msg_header_t
msg_mclass_t
struct msg_mclass_s msg_mclass_t
sip.h
SIP objects.
sip_common_t
msg_common_t sip_common_t
Common part of all the header structures.
Definition sip.h:121
sip_param_t
msg_param_t sip_param_t
SIP parameter string.
Definition sip.h:124
sip_header_t
union sip_header_u sip_header_t
Any SIP header - union of all possible SIP headers.
Definition sip.h:114
sip_header.h
SIP parser library prototypes.
SIP_HEADER_INIT
#define SIP_HEADER_INIT(h, sip_class, size)
Initialize a SIP header structure.
Definition sip_header.h:73
sip_alert_info_s
Structure for Alert-Info header.
Definition sip_extra.h:68
sip_alert_info_s::ai_url
url_t ai_url[1]
URI to alert info.
Definition sip_extra.h:71
sip_alert_info_s::ai_common
sip_common_t ai_common[1]
Common fragment info.
Definition sip_extra.h:69
sip_alert_info_s::ai_params
msg_param_t const * ai_params
List of optional parameters.
Definition sip_extra.h:72
sip_alert_info_s::ai_next
sip_alert_info_t * ai_next
Link to next Alert-Info.
Definition sip_extra.h:70
sip_p_asserted_identity_s
Structure for P-Asserted-Identity header.
Definition sip_extra.h:119
sip_p_asserted_identity_s::paid_next
sip_p_asserted_identity_t * paid_next
Link to next identity.
Definition sip_extra.h:122
sip_p_asserted_identity_s::paid_url
url_t paid_url[1]
SIP, SIPS or TEL URL.
Definition sip_extra.h:124
sip_p_asserted_identity_s::paid_display
char const * paid_display
Display name.
Definition sip_extra.h:123
sip_p_asserted_identity_s::paid_common
sip_common_t paid_common[1]
Common fragment info.
Definition sip_extra.h:120
sip_p_preferred_identity_s
Structure for P-Preferred-Identity header.
Definition sip_extra.h:133
sip_p_preferred_identity_s::ppid_common
sip_common_t ppid_common[1]
Common fragment info.
Definition sip_extra.h:134
sip_p_preferred_identity_s::ppid_url
url_t ppid_url[1]
SIP, SIPS or TEL URL.
Definition sip_extra.h:138
sip_p_preferred_identity_s::ppid_display
char const * ppid_display
Display name.
Definition sip_extra.h:137
sip_p_preferred_identity_s::ppid_next
sip_p_preferred_identity_t * ppid_next
Link to next identity.
Definition sip_extra.h:136
sip_refer_sub_s
Structure for Refer-Sub header.
Definition sip_extra.h:55
sip_refer_sub_s::rs_value
char const * rs_value
"true" or "false"
Definition sip_extra.h:58
sip_refer_sub_s::rs_params
msg_param_t const * rs_params
List of extension parameters.
Definition sip_extra.h:59
sip_refer_sub_s::rs_common
sip_common_t rs_common[1]
Common fragment info.
Definition sip_extra.h:56
sip_refer_sub_s::rs_next
sip_error_t * rs_next
Dummy link to next.
Definition sip_extra.h:57
sip_remote_party_id_s
Structure for Remote-Party-ID header.
Definition sip_extra.h:150
sip_remote_party_id_s::rpid_url
url_t rpid_url[1]
URL.
Definition sip_extra.h:155
sip_remote_party_id_s::rpid_common
sip_common_t rpid_common[1]
Common fragment info.
Definition sip_extra.h:151
sip_remote_party_id_s::rpid_next
sip_remote_party_id_t * rpid_next
Link to next identity.
Definition sip_extra.h:153
sip_remote_party_id_s::rpid_display
char const * rpid_display
Display name.
Definition sip_extra.h:154
sip_remote_party_id_s::rpid_params
sip_param_t const * rpid_params
Parameters.
Definition sip_extra.h:156
sip_remote_party_id_s::rpid_screen
char const * rpid_screen
Shortcuts to screen, party, id-type and privacy parameters.
Definition sip_extra.h:158
sip_reply_to_s
Structure for Reply-To header.
Definition sip_extra.h:81
sip_reply_to_s::rplyto_common
sip_common_t rplyto_common[1]
Common fragment info.
Definition sip_extra.h:82
sip_reply_to_s::rplyto_params
msg_param_t const * rplyto_params
List of optional parameters.
Definition sip_extra.h:86
sip_reply_to_s::rplyto_next
sip_error_t * rplyto_next
Dummy link to next header.
Definition sip_extra.h:83
sip_reply_to_s::rplyto_url
url_t rplyto_url[1]
Return URI.
Definition sip_extra.h:85
sip_reply_to_s::rplyto_display
char const * rplyto_display
Display name.
Definition sip_extra.h:84
sip_suppress_body_if_match_s
Structure for Suppress-Body-If-Match header.
Definition sip_extra.h:95
sip_suppress_body_if_match_s::sbim_common
sip_common_t sbim_common[1]
Common fragment info.
Definition sip_extra.h:96
sip_suppress_body_if_match_s::sbim_tag
char const * sbim_tag
Entity-tag.
Definition sip_extra.h:98
sip_suppress_body_if_match_s::sbim_next
sip_error_t * sbim_next
Dummy link to next header.
Definition sip_extra.h:97
sip_suppress_notify_if_match_s
Structure for Suppress-Notify-If-Match header.
Definition sip_extra.h:107
sip_suppress_notify_if_match_s::snim_common
sip_common_t snim_common[1]
Common fragment info.
Definition sip_extra.h:108
sip_suppress_notify_if_match_s::snim_next
sip_error_t * snim_next
Dummy link to next header.
Definition sip_extra.h:109
sip_suppress_notify_if_match_s::snim_tag
char const * snim_tag
Entity-tag.
Definition sip_extra.h:110
url_t
su_home_t
SU_HOME_T su_home_t
SOFIAPUBFUN
#define SOFIAPUBFUN
SOFIAPUBVAR
#define SOFIAPUBVAR
su_inline
#define su_inline
tag_typedef_t
struct tag_type_s const tag_typedef_t[1]
tag_value_t
intptr_t tag_value_t

Sofia-SIP 1.12.11devel - Copyright (C) 2006 Nokia Corporation. All rights reserved. Licensed under the terms of the GNU Lesser General Public License.