sip 1.12.11devel
Loading...
Searching...
No Matches
sip_extra.h
Go to the documentation of this file.
1/* -*- C -*-
2 *
3 * This file is part of the Sofia-SIP package
4 *
5 * Copyright (C) 2006 Nokia Corporation.
6 *
7 * Contact: Pekka Pessi <pekka.pessi@nokia-email.address.hidden>
8 *
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public License
11 * as published by the Free Software Foundation; either version 2.1 of
12 * the License, or (at your option) any later version.
13 *
14 * This library is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
18 *
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
22 * 02110-1301 USA
23 *
24 */
25
26#ifndef SIP_EXTRA_H
28#define SIP_EXTRA_H
29
39#ifndef SIP_H
40#include <sofia-sip/sip.h>
41#endif
42
43#ifndef SIP_HEADER_H
45#endif
46
47SOFIA_BEGIN_DECLS
48
49typedef struct sip_refer_sub_s sip_refer_sub_t;
50
55{
57 sip_error_t *rs_next;
58 char const *rs_value;
59 msg_param_t const *rs_params;
60};
61
63
74
75typedef struct sip_reply_to_s sip_reply_to_t;
76
81{
83 sip_error_t *rplyto_next;
84 char const *rplyto_display;
86 msg_param_t const *rplyto_params;
87};
88
90
100
102
112
114
126
128
140
141
142int sip_p_initialize_remote_party_id_headers(msg_mclass_t *mclass);
143
145
150{
154 char const *rpid_display;
158 char const *rpid_screen, *rpid_party, *rpid_id_type, *rpid_privacy;
159};
160
161
162
164#define SIP_HAVE_REFER_SUB 1
165
166
167enum {
174 sip_refer_sub_hash = 14607
176
188SIP_DLL extern msg_hclass_t sip_refer_sub_class[];
189
190
197 char *s, isize_t slen);
198
200SOFIAPUBFUN issize_t sip_refer_sub_e(char b[], isize_t bsiz,
201 msg_header_t const *h, int flags);
202
208#define sip_refer_sub(sip) \
209 ((sip_refer_sub_t *)msg_header_access((msg_pub_t*)(sip), sip_refer_sub_class))
210
226#define SIP_REFER_SUB_INIT() SIP_HDR_INIT(refer_sub)
227
244#if SU_HAVE_INLINE
249#else
250#define sip_refer_sub_init(x) \
251 SIP_HEADER_INIT(x, sip_refer_sub_class, sizeof(sip_refer_sub_t))
252#endif
253
267#if SU_HAVE_INLINE
269{
270 return header && header->sh_class->hc_hash == sip_refer_sub_hash;
271}
272#else
273int sip_is_refer_sub(sip_header_t const *header);
274#endif
275
276#define sip_refer_sub_p(h) sip_is_refer_sub((h))
277
278
308#if SU_HAVE_INLINE
310#endif
312 __attribute__((__malloc__));
313
314#if SU_HAVE_INLINE
321#endif
322
352#if SU_HAVE_INLINE
354#endif
356 __attribute__((__malloc__));
357
358#if SU_HAVE_INLINE
365#endif
366
383#if SU_HAVE_INLINE
385#endif
386sip_refer_sub_t *sip_refer_sub_make(su_home_t *home, char const *s)
387 __attribute__((__malloc__));
388
389#if SU_HAVE_INLINE
391{
392 return (sip_refer_sub_t *)sip_header_make(home, sip_refer_sub_class, s);
393}
394#endif
395
415#if SU_HAVE_INLINE
417#endif
418sip_refer_sub_t *sip_refer_sub_format(su_home_t *home, char const *fmt, ...)
419 __attribute__((__malloc__, __format__ (printf, 2, 3)));
420
421#if SU_HAVE_INLINE
423{
424 sip_header_t *h;
425 va_list ap;
426
427 va_start(ap, fmt);
428 h = sip_header_vformat(home, sip_refer_sub_class, fmt, ap);
429 va_end(ap);
430
431 return (sip_refer_sub_t *)h;
432}
433#endif
434
454#define SIPTAG_REFER_SUB(x) siptag_refer_sub, siptag_refer_sub_v(x)
455
457
462#define SIPTAG_REFER_SUB_REF(x) siptag_refer_sub_ref, siptag_refer_sub_vr(&(x))
463SOFIAPUBVAR tag_typedef_t siptag_refer_sub_ref;
464
486#define SIPTAG_REFER_SUB_STR(s) siptag_refer_sub_str, tag_str_v(s)
487
489
494#define SIPTAG_REFER_SUB_STR_REF(x) siptag_refer_sub_str_ref, tag_str_vr(&(x))
495SOFIAPUBVAR tag_typedef_t siptag_refer_sub_str_ref;
496
497#if SU_INLINE_TAG_CAST
499siptag_refer_sub_v(sip_refer_sub_t const *v)
500{ return (tag_value_t)v; }
502siptag_refer_sub_vr(sip_refer_sub_t const **vp)
503{ return (tag_value_t)vp; }
504#else
505#define siptag_refer_sub_v(v) (tag_value_t)(v)
506#define siptag_refer_sub_vr(vp) (tag_value_t)(vp)
507#endif
508
510#define SIP_HAVE_ALERT_INFO 1
511
512
513enum {
520 sip_alert_info_hash = 53913
522
534SIP_DLL extern msg_hclass_t sip_alert_info_class[];
535
536
543 char *s, isize_t slen);
544
546SOFIAPUBFUN issize_t sip_alert_info_e(char b[], isize_t bsiz,
547 msg_header_t const *h, int flags);
548
554#define sip_alert_info(sip) \
555 ((sip_alert_info_t *)msg_header_access((msg_pub_t*)(sip), sip_alert_info_class))
556
572#define SIP_ALERT_INFO_INIT() SIP_HDR_INIT(alert_info)
573
590#if SU_HAVE_INLINE
595#else
596#define sip_alert_info_init(x) \
597 SIP_HEADER_INIT(x, sip_alert_info_class, sizeof(sip_alert_info_t))
598#endif
599
613#if SU_HAVE_INLINE
615{
616 return header && header->sh_class->hc_hash == sip_alert_info_hash;
617}
618#else
619int sip_is_alert_info(sip_header_t const *header);
620#endif
621
622#define sip_alert_info_p(h) sip_is_alert_info((h))
623
624
654#if SU_HAVE_INLINE
656#endif
658 __attribute__((__malloc__));
659
660#if SU_HAVE_INLINE
667#endif
668
698#if SU_HAVE_INLINE
700#endif
702 __attribute__((__malloc__));
703
704#if SU_HAVE_INLINE
711#endif
712
729#if SU_HAVE_INLINE
731#endif
733 __attribute__((__malloc__));
734
735#if SU_HAVE_INLINE
737{
738 return (sip_alert_info_t *)sip_header_make(home, sip_alert_info_class, s);
739}
740#endif
741
761#if SU_HAVE_INLINE
763#endif
764sip_alert_info_t *sip_alert_info_format(su_home_t *home, char const *fmt, ...)
765 __attribute__((__malloc__, __format__ (printf, 2, 3)));
766
767#if SU_HAVE_INLINE
769{
770 sip_header_t *h;
771 va_list ap;
772
773 va_start(ap, fmt);
774 h = sip_header_vformat(home, sip_alert_info_class, fmt, ap);
775 va_end(ap);
776
777 return (sip_alert_info_t *)h;
778}
779#endif
780
800#define SIPTAG_ALERT_INFO(x) siptag_alert_info, siptag_alert_info_v(x)
801
803
808#define SIPTAG_ALERT_INFO_REF(x) siptag_alert_info_ref, siptag_alert_info_vr(&(x))
809SOFIAPUBVAR tag_typedef_t siptag_alert_info_ref;
810
832#define SIPTAG_ALERT_INFO_STR(s) siptag_alert_info_str, tag_str_v(s)
833
835
840#define SIPTAG_ALERT_INFO_STR_REF(x) siptag_alert_info_str_ref, tag_str_vr(&(x))
841SOFIAPUBVAR tag_typedef_t siptag_alert_info_str_ref;
842
843#if SU_INLINE_TAG_CAST
845siptag_alert_info_v(sip_alert_info_t const *v)
846{ return (tag_value_t)v; }
848siptag_alert_info_vr(sip_alert_info_t const **vp)
849{ return (tag_value_t)vp; }
850#else
851#define siptag_alert_info_v(v) (tag_value_t)(v)
852#define siptag_alert_info_vr(vp) (tag_value_t)(vp)
853#endif
854
856#define SIP_HAVE_REPLY_TO 1
857
858
859enum {
866 sip_reply_to_hash = 38016
868
880SIP_DLL extern msg_hclass_t sip_reply_to_class[];
881
882
889 char *s, isize_t slen);
890
892SOFIAPUBFUN issize_t sip_reply_to_e(char b[], isize_t bsiz,
893 msg_header_t const *h, int flags);
894
900#define sip_reply_to(sip) \
901 ((sip_reply_to_t *)msg_header_access((msg_pub_t*)(sip), sip_reply_to_class))
902
918#define SIP_REPLY_TO_INIT() SIP_HDR_INIT(reply_to)
919
936#if SU_HAVE_INLINE
941#else
942#define sip_reply_to_init(x) \
943 SIP_HEADER_INIT(x, sip_reply_to_class, sizeof(sip_reply_to_t))
944#endif
945
959#if SU_HAVE_INLINE
961{
962 return header && header->sh_class->hc_hash == sip_reply_to_hash;
963}
964#else
965int sip_is_reply_to(sip_header_t const *header);
966#endif
967
968#define sip_reply_to_p(h) sip_is_reply_to((h))
969
970
1000#if SU_HAVE_INLINE
1002#endif
1004 __attribute__((__malloc__));
1005
1006#if SU_HAVE_INLINE
1009{
1010 return (sip_reply_to_t *)
1012}
1013#endif
1014
1044#if SU_HAVE_INLINE
1046#endif
1048 __attribute__((__malloc__));
1049
1050#if SU_HAVE_INLINE
1053{
1054 return (sip_reply_to_t *)
1056}
1057#endif
1058
1075#if SU_HAVE_INLINE
1077#endif
1078sip_reply_to_t *sip_reply_to_make(su_home_t *home, char const *s)
1079 __attribute__((__malloc__));
1080
1081#if SU_HAVE_INLINE
1083{
1084 return (sip_reply_to_t *)sip_header_make(home, sip_reply_to_class, s);
1085}
1086#endif
1087
1107#if SU_HAVE_INLINE
1109#endif
1110sip_reply_to_t *sip_reply_to_format(su_home_t *home, char const *fmt, ...)
1111 __attribute__((__malloc__, __format__ (printf, 2, 3)));
1112
1113#if SU_HAVE_INLINE
1115{
1116 sip_header_t *h;
1117 va_list ap;
1118
1119 va_start(ap, fmt);
1120 h = sip_header_vformat(home, sip_reply_to_class, fmt, ap);
1121 va_end(ap);
1122
1123 return (sip_reply_to_t *)h;
1124}
1125#endif
1126
1146#define SIPTAG_REPLY_TO(x) siptag_reply_to, siptag_reply_to_v(x)
1147
1149
1154#define SIPTAG_REPLY_TO_REF(x) siptag_reply_to_ref, siptag_reply_to_vr(&(x))
1155SOFIAPUBVAR tag_typedef_t siptag_reply_to_ref;
1156
1178#define SIPTAG_REPLY_TO_STR(s) siptag_reply_to_str, tag_str_v(s)
1179
1181
1186#define SIPTAG_REPLY_TO_STR_REF(x) siptag_reply_to_str_ref, tag_str_vr(&(x))
1187SOFIAPUBVAR tag_typedef_t siptag_reply_to_str_ref;
1188
1189#if SU_INLINE_TAG_CAST
1191siptag_reply_to_v(sip_reply_to_t const *v)
1192{ return (tag_value_t)v; }
1194siptag_reply_to_vr(sip_reply_to_t const **vp)
1195{ return (tag_value_t)vp; }
1196#else
1197#define siptag_reply_to_v(v) (tag_value_t)(v)
1198#define siptag_reply_to_vr(vp) (tag_value_t)(vp)
1199#endif
1200
1202#define SIP_HAVE_REMOTE_PARTY_ID 1
1203
1204
1205enum {
1214
1227
1228
1235 char *s, isize_t slen);
1236
1238SOFIAPUBFUN issize_t sip_remote_party_id_e(char b[], isize_t bsiz,
1239 msg_header_t const *h, int flags);
1240
1246#define sip_remote_party_id(sip) \
1247 ((sip_remote_party_id_t *)msg_header_access((msg_pub_t*)(sip), sip_remote_party_id_class))
1248
1264#define SIP_REMOTE_PARTY_ID_INIT() SIP_HDR_INIT(remote_party_id)
1265
1282#if SU_HAVE_INLINE
1287#else
1288#define sip_remote_party_id_init(x) \
1289 SIP_HEADER_INIT(x, sip_remote_party_id_class, sizeof(sip_remote_party_id_t))
1290#endif
1291
1305#if SU_HAVE_INLINE
1307{
1308 return header && header->sh_class->hc_hash == sip_remote_party_id_hash;
1309}
1310#else
1311int sip_is_remote_party_id(sip_header_t const *header);
1312#endif
1313
1314#define sip_remote_party_id_p(h) sip_is_remote_party_id((h))
1315
1316
1346#if SU_HAVE_INLINE
1348#endif
1350 __attribute__((__malloc__));
1351
1352#if SU_HAVE_INLINE
1359#endif
1360
1390#if SU_HAVE_INLINE
1392#endif
1394 __attribute__((__malloc__));
1395
1396#if SU_HAVE_INLINE
1403#endif
1404
1421#if SU_HAVE_INLINE
1423#endif
1425 __attribute__((__malloc__));
1426
1427#if SU_HAVE_INLINE
1429{
1430 return (sip_remote_party_id_t *)sip_header_make(home, sip_remote_party_id_class, s);
1431}
1432#endif
1433
1453#if SU_HAVE_INLINE
1455#endif
1457 __attribute__((__malloc__, __format__ (printf, 2, 3)));
1458
1459#if SU_HAVE_INLINE
1461{
1462 sip_header_t *h;
1463 va_list ap;
1464
1465 va_start(ap, fmt);
1466 h = sip_header_vformat(home, sip_remote_party_id_class, fmt, ap);
1467 va_end(ap);
1468
1469 return (sip_remote_party_id_t *)h;
1470}
1471#endif
1472
1492#define SIPTAG_REMOTE_PARTY_ID(x) siptag_remote_party_id, siptag_remote_party_id_v(x)
1493
1495
1500#define SIPTAG_REMOTE_PARTY_ID_REF(x) siptag_remote_party_id_ref, siptag_remote_party_id_vr(&(x))
1501SOFIAPUBVAR tag_typedef_t siptag_remote_party_id_ref;
1502
1524#define SIPTAG_REMOTE_PARTY_ID_STR(s) siptag_remote_party_id_str, tag_str_v(s)
1525
1527
1532#define SIPTAG_REMOTE_PARTY_ID_STR_REF(x) siptag_remote_party_id_str_ref, tag_str_vr(&(x))
1533SOFIAPUBVAR tag_typedef_t siptag_remote_party_id_str_ref;
1534
1535#if SU_INLINE_TAG_CAST
1537siptag_remote_party_id_v(sip_remote_party_id_t const *v)
1538{ return (tag_value_t)v; }
1540siptag_remote_party_id_vr(sip_remote_party_id_t const **vp)
1541{ return (tag_value_t)vp; }
1542#else
1543#define siptag_remote_party_id_v(v) (tag_value_t)(v)
1544#define siptag_remote_party_id_vr(vp) (tag_value_t)(vp)
1545#endif
1546
1548#define SIP_HAVE_P_ASSERTED_IDENTITY 1
1549
1550
1551enum {
1560
1573
1574
1581 char *s, isize_t slen);
1582
1584SOFIAPUBFUN issize_t sip_p_asserted_identity_e(char b[], isize_t bsiz,
1585 msg_header_t const *h, int flags);
1586
1592#define sip_p_asserted_identity(sip) \
1593 ((sip_p_asserted_identity_t *)msg_header_access((msg_pub_t*)(sip), sip_p_asserted_identity_class))
1594
1610#define SIP_P_ASSERTED_IDENTITY_INIT() SIP_HDR_INIT(p_asserted_identity)
1611
1628#if SU_HAVE_INLINE
1633#else
1634#define sip_p_asserted_identity_init(x) \
1635 SIP_HEADER_INIT(x, sip_p_asserted_identity_class, sizeof(sip_p_asserted_identity_t))
1636#endif
1637
1651#if SU_HAVE_INLINE
1653{
1654 return header && header->sh_class->hc_hash == sip_p_asserted_identity_hash;
1655}
1656#else
1657int sip_is_p_asserted_identity(sip_header_t const *header);
1658#endif
1659
1660#define sip_p_asserted_identity_p(h) sip_is_p_asserted_identity((h))
1661
1662
1692#if SU_HAVE_INLINE
1694#endif
1696 __attribute__((__malloc__));
1697
1698#if SU_HAVE_INLINE
1705#endif
1706
1736#if SU_HAVE_INLINE
1738#endif
1740 __attribute__((__malloc__));
1741
1742#if SU_HAVE_INLINE
1749#endif
1750
1767#if SU_HAVE_INLINE
1769#endif
1771 __attribute__((__malloc__));
1772
1773#if SU_HAVE_INLINE
1778#endif
1779
1799#if SU_HAVE_INLINE
1801#endif
1803 __attribute__((__malloc__, __format__ (printf, 2, 3)));
1804
1805#if SU_HAVE_INLINE
1807{
1808 sip_header_t *h;
1809 va_list ap;
1810
1811 va_start(ap, fmt);
1812 h = sip_header_vformat(home, sip_p_asserted_identity_class, fmt, ap);
1813 va_end(ap);
1814
1815 return (sip_p_asserted_identity_t *)h;
1816}
1817#endif
1818
1838#define SIPTAG_P_ASSERTED_IDENTITY(x) siptag_p_asserted_identity, siptag_p_asserted_identity_v(x)
1839
1841
1846#define SIPTAG_P_ASSERTED_IDENTITY_REF(x) siptag_p_asserted_identity_ref, siptag_p_asserted_identity_vr(&(x))
1847SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity_ref;
1848
1870#define SIPTAG_P_ASSERTED_IDENTITY_STR(s) siptag_p_asserted_identity_str, tag_str_v(s)
1871
1873
1878#define SIPTAG_P_ASSERTED_IDENTITY_STR_REF(x) siptag_p_asserted_identity_str_ref, tag_str_vr(&(x))
1879SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity_str_ref;
1880
1881#if SU_INLINE_TAG_CAST
1883siptag_p_asserted_identity_v(sip_p_asserted_identity_t const *v)
1884{ return (tag_value_t)v; }
1886siptag_p_asserted_identity_vr(sip_p_asserted_identity_t const **vp)
1887{ return (tag_value_t)vp; }
1888#else
1889#define siptag_p_asserted_identity_v(v) (tag_value_t)(v)
1890#define siptag_p_asserted_identity_vr(vp) (tag_value_t)(vp)
1891#endif
1892
1894#define SIP_HAVE_P_PREFERRED_IDENTITY 1
1895
1896
1897enum {
1906
1919
1920
1927 char *s, isize_t slen);
1928
1930SOFIAPUBFUN issize_t sip_p_preferred_identity_e(char b[], isize_t bsiz,
1931 msg_header_t const *h, int flags);
1932
1938#define sip_p_preferred_identity(sip) \
1939 ((sip_p_preferred_identity_t *)msg_header_access((msg_pub_t*)(sip), sip_p_preferred_identity_class))
1940
1956#define SIP_P_PREFERRED_IDENTITY_INIT() SIP_HDR_INIT(p_preferred_identity)
1957
1974#if SU_HAVE_INLINE
1979#else
1980#define sip_p_preferred_identity_init(x) \
1981 SIP_HEADER_INIT(x, sip_p_preferred_identity_class, sizeof(sip_p_preferred_identity_t))
1982#endif
1983
1997#if SU_HAVE_INLINE
1999{
2000 return header && header->sh_class->hc_hash == sip_p_preferred_identity_hash;
2001}
2002#else
2003int sip_is_p_preferred_identity(sip_header_t const *header);
2004#endif
2005
2006#define sip_p_preferred_identity_p(h) sip_is_p_preferred_identity((h))
2007
2008
2038#if SU_HAVE_INLINE
2040#endif
2042 __attribute__((__malloc__));
2043
2044#if SU_HAVE_INLINE
2051#endif
2052
2082#if SU_HAVE_INLINE
2084#endif
2086 __attribute__((__malloc__));
2087
2088#if SU_HAVE_INLINE
2095#endif
2096
2113#if SU_HAVE_INLINE
2115#endif
2117 __attribute__((__malloc__));
2118
2119#if SU_HAVE_INLINE
2124#endif
2125
2145#if SU_HAVE_INLINE
2147#endif
2149 __attribute__((__malloc__, __format__ (printf, 2, 3)));
2150
2151#if SU_HAVE_INLINE
2153{
2154 sip_header_t *h;
2155 va_list ap;
2156
2157 va_start(ap, fmt);
2158 h = sip_header_vformat(home, sip_p_preferred_identity_class, fmt, ap);
2159 va_end(ap);
2160
2161 return (sip_p_preferred_identity_t *)h;
2162}
2163#endif
2164
2184#define SIPTAG_P_PREFERRED_IDENTITY(x) siptag_p_preferred_identity, siptag_p_preferred_identity_v(x)
2185
2187
2192#define SIPTAG_P_PREFERRED_IDENTITY_REF(x) siptag_p_preferred_identity_ref, siptag_p_preferred_identity_vr(&(x))
2193SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity_ref;
2194
2216#define SIPTAG_P_PREFERRED_IDENTITY_STR(s) siptag_p_preferred_identity_str, tag_str_v(s)
2217
2219
2224#define SIPTAG_P_PREFERRED_IDENTITY_STR_REF(x) siptag_p_preferred_identity_str_ref, tag_str_vr(&(x))
2225SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity_str_ref;
2226
2227#if SU_INLINE_TAG_CAST
2229siptag_p_preferred_identity_v(sip_p_preferred_identity_t const *v)
2230{ return (tag_value_t)v; }
2232siptag_p_preferred_identity_vr(sip_p_preferred_identity_t const **vp)
2233{ return (tag_value_t)vp; }
2234#else
2235#define siptag_p_preferred_identity_v(v) (tag_value_t)(v)
2236#define siptag_p_preferred_identity_vr(vp) (tag_value_t)(vp)
2237#endif
2238
2239#if SU_HAVE_EXPERIMENTAL
2241#define SIP_HAVE_SUPPRESS_BODY_IF_MATCH 1
2242
2243
2244enum {
2253
2266
2267
2274 char *s, isize_t slen);
2275
2277SOFIAPUBFUN issize_t sip_suppress_body_if_match_e(char b[], isize_t bsiz,
2278 msg_header_t const *h, int flags);
2279
2285#define sip_suppress_body_if_match(sip) \
2286 ((sip_suppress_body_if_match_t *)msg_header_access((msg_pub_t*)(sip), sip_suppress_body_if_match_class))
2287
2303#define SIP_SUPPRESS_BODY_IF_MATCH_INIT() SIP_HDR_INIT(suppress_body_if_match)
2304
2321#if SU_HAVE_INLINE
2326#else
2327#define sip_suppress_body_if_match_init(x) \
2328 SIP_HEADER_INIT(x, sip_suppress_body_if_match_class, sizeof(sip_suppress_body_if_match_t))
2329#endif
2330
2344#if SU_HAVE_INLINE
2346{
2347 return header && header->sh_class->hc_hash == sip_suppress_body_if_match_hash;
2348}
2349#else
2351#endif
2352
2353#define sip_suppress_body_if_match_p(h) sip_is_suppress_body_if_match((h))
2354
2355
2385#if SU_HAVE_INLINE
2387#endif
2389 __attribute__((__malloc__));
2390
2391#if SU_HAVE_INLINE
2398#endif
2399
2429#if SU_HAVE_INLINE
2431#endif
2433 __attribute__((__malloc__));
2434
2435#if SU_HAVE_INLINE
2442#endif
2443
2460#if SU_HAVE_INLINE
2462#endif
2464 __attribute__((__malloc__));
2465
2466#if SU_HAVE_INLINE
2471#endif
2472
2492#if SU_HAVE_INLINE
2494#endif
2496 __attribute__((__malloc__, __format__ (printf, 2, 3)));
2497
2498#if SU_HAVE_INLINE
2500{
2501 sip_header_t *h;
2502 va_list ap;
2503
2504 va_start(ap, fmt);
2505 h = sip_header_vformat(home, sip_suppress_body_if_match_class, fmt, ap);
2506 va_end(ap);
2507
2508 return (sip_suppress_body_if_match_t *)h;
2509}
2510#endif
2511
2531#define SIPTAG_SUPPRESS_BODY_IF_MATCH(x) siptag_suppress_body_if_match, siptag_suppress_body_if_match_v(x)
2532
2534
2539#define SIPTAG_SUPPRESS_BODY_IF_MATCH_REF(x) siptag_suppress_body_if_match_ref, siptag_suppress_body_if_match_vr(&(x))
2540SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match_ref;
2541
2563#define SIPTAG_SUPPRESS_BODY_IF_MATCH_STR(s) siptag_suppress_body_if_match_str, tag_str_v(s)
2564
2566
2571#define SIPTAG_SUPPRESS_BODY_IF_MATCH_STR_REF(x) siptag_suppress_body_if_match_str_ref, tag_str_vr(&(x))
2572SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match_str_ref;
2573
2574#if SU_INLINE_TAG_CAST
2576siptag_suppress_body_if_match_v(sip_suppress_body_if_match_t const *v)
2577{ return (tag_value_t)v; }
2579siptag_suppress_body_if_match_vr(sip_suppress_body_if_match_t const **vp)
2580{ return (tag_value_t)vp; }
2581#else
2582#define siptag_suppress_body_if_match_v(v) (tag_value_t)(v)
2583#define siptag_suppress_body_if_match_vr(vp) (tag_value_t)(vp)
2584#endif
2585
2586#endif /* SU_HAVE_EXPERIMENTAL */
2587#if SU_HAVE_EXPERIMENTAL
2589#define SIP_HAVE_SUPPRESS_NOTIFY_IF_MATCH 1
2590
2591
2592enum {
2601
2614
2615
2622 char *s, isize_t slen);
2623
2625SOFIAPUBFUN issize_t sip_suppress_notify_if_match_e(char b[], isize_t bsiz,
2626 msg_header_t const *h, int flags);
2627
2633#define sip_suppress_notify_if_match(sip) \
2634 ((sip_suppress_notify_if_match_t *)msg_header_access((msg_pub_t*)(sip), sip_suppress_notify_if_match_class))
2635
2651#define SIP_SUPPRESS_NOTIFY_IF_MATCH_INIT() SIP_HDR_INIT(suppress_notify_if_match)
2652
2669#if SU_HAVE_INLINE
2674#else
2675#define sip_suppress_notify_if_match_init(x) \
2676 SIP_HEADER_INIT(x, sip_suppress_notify_if_match_class, sizeof(sip_suppress_notify_if_match_t))
2677#endif
2678
2692#if SU_HAVE_INLINE
2694{
2695 return header && header->sh_class->hc_hash == sip_suppress_notify_if_match_hash;
2696}
2697#else
2699#endif
2700
2701#define sip_suppress_notify_if_match_p(h) sip_is_suppress_notify_if_match((h))
2702
2703
2733#if SU_HAVE_INLINE
2735#endif
2737 __attribute__((__malloc__));
2738
2739#if SU_HAVE_INLINE
2746#endif
2747
2777#if SU_HAVE_INLINE
2779#endif
2781 __attribute__((__malloc__));
2782
2783#if SU_HAVE_INLINE
2790#endif
2791
2808#if SU_HAVE_INLINE
2810#endif
2812 __attribute__((__malloc__));
2813
2814#if SU_HAVE_INLINE
2819#endif
2820
2840#if SU_HAVE_INLINE
2842#endif
2844 __attribute__((__malloc__, __format__ (printf, 2, 3)));
2845
2846#if SU_HAVE_INLINE
2848{
2849 sip_header_t *h;
2850 va_list ap;
2851
2852 va_start(ap, fmt);
2853 h = sip_header_vformat(home, sip_suppress_notify_if_match_class, fmt, ap);
2854 va_end(ap);
2855
2857}
2858#endif
2859
2879#define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH(x) siptag_suppress_notify_if_match, siptag_suppress_notify_if_match_v(x)
2880
2882
2887#define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH_REF(x) siptag_suppress_notify_if_match_ref, siptag_suppress_notify_if_match_vr(&(x))
2888SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match_ref;
2889
2911#define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH_STR(s) siptag_suppress_notify_if_match_str, tag_str_v(s)
2912
2914
2919#define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH_STR_REF(x) siptag_suppress_notify_if_match_str_ref, tag_str_vr(&(x))
2920SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match_str_ref;
2921
2922#if SU_INLINE_TAG_CAST
2924siptag_suppress_notify_if_match_v(sip_suppress_notify_if_match_t const *v)
2925{ return (tag_value_t)v; }
2927siptag_suppress_notify_if_match_vr(sip_suppress_notify_if_match_t const **vp)
2928{ return (tag_value_t)vp; }
2929#else
2930#define siptag_suppress_notify_if_match_v(v) (tag_value_t)(v)
2931#define siptag_suppress_notify_if_match_vr(vp) (tag_value_t)(vp)
2932#endif
2933
2934#endif /* SU_HAVE_EXPERIMENTAL */
2935
2936SOFIA_END_DECLS
2937
2938#endif
tag_typedef_t siptag_alert_info_str
Tag for string with Alert-Info header value.
Definition sip_tag.c:821
issize_t sip_alert_info_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP Alert-Info header.
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_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 * 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_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_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_hash
@
Definition sip_extra.h:520
msg_hclass_t sip_alert_info_class[]
Header class for Alert-Info header.
Definition sip_extra.c:252
tag_typedef_t siptag_alert_info
Tag for Alert-Info header object.
Definition sip_tag.c:817
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_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_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_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
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.
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_hash
@
Definition sip_extra.h:1558
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_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
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.
tag_typedef_t siptag_p_asserted_identity_str
Tag for string with P-Asserted-Identity header value.
Definition sip_tag.c:854
msg_hclass_t sip_p_asserted_identity_class[]
Header class for P-Asserted-Identity header.
tag_typedef_t siptag_p_asserted_identity
Tag for P-Asserted-Identity header object.
Definition sip_tag.c:850
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_hash
@
Definition sip_extra.h:1904
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_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
tag_typedef_t siptag_p_preferred_identity_str
Tag for string with P-Preferred-Identity header value.
Definition sip_tag.c:865
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.
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
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.
tag_typedef_t siptag_p_preferred_identity
Tag for P-Preferred-Identity header object.
Definition sip_tag.c:861
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_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_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
msg_hclass_t sip_p_preferred_identity_class[]
Header class for P-Preferred-Identity header.
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
issize_t sip_refer_sub_d(su_home_t *, msg_header_t *, char *s, isize_t slen)
Parse a SIP Refer-Sub header.
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_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_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_t * sip_refer_sub_init(sip_refer_sub_t x[1])
Initialize a structure sip_refer_sub_t.
Definition sip_extra.h:245
tag_typedef_t siptag_refer_sub
Tag for Refer-Sub header object.
Definition sip_tag.c:806
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
tag_typedef_t siptag_refer_sub_str
Tag for string with Refer-Sub header value.
Definition sip_tag.c:810
@ sip_refer_sub_hash
@
Definition sip_extra.h:174
issize_t sip_refer_sub_e(char b[], isize_t bsiz, msg_header_t const *h, int flags)
Print a SIP Refer-Sub header.
msg_hclass_t sip_refer_sub_class[]
Header class for Refer-Sub header.
Definition sip_refer.c:492
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.
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_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
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_hash
@
Definition sip_extra.h:1212
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_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_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
msg_hclass_t sip_remote_party_id_class[]
Header class for Remote-Party-ID header.
tag_typedef_t siptag_remote_party_id
Tag for Remote-Party-ID header object.
Definition sip_tag.c:839
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_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_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_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_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_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
tag_typedef_t siptag_reply_to_str
Tag for string with Reply-To header value.
Definition sip_tag.c:832
msg_hclass_t sip_reply_to_class[]
Header class for Reply-To header.
Definition sip_extra.c:327
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
tag_typedef_t siptag_reply_to
Tag for Reply-To header object.
Definition sip_tag.c:828
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_hash
@
Definition sip_extra.h:866
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
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 * 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_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
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_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
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.
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_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
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_suppress_body_if_match_hash
@
Definition sip_extra.h:2251
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_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
tag_typedef_t siptag_suppress_body_if_match
Tag for Suppress-Body-If-Match header object.
Definition sip_tag.c:873
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_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
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_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_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
tag_typedef_t siptag_suppress_notify_if_match_str
Tag for string with Suppress-Notify-If-Match header value.
Definition sip_tag.c:890
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 * 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_hash
@
Definition sip_extra.h:2599
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
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
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_t * msg_header_copy_as(su_home_t *home, msg_hclass_t *hc, msg_header_t const *o))
msg_header_t * msg_header_dup_as(su_home_t *home, msg_hclass_t *hc, msg_header_t const *o))
struct msg_hclass_s const msg_hclass_t
MSG_HDR_T msg_header_t
SIP objects.
msg_param_t sip_param_t
SIP parameter string.
Definition sip.h:124
union sip_header_u sip_header_t
Any SIP header - union of all possible SIP headers.
Definition sip.h:114
SIP parser library prototypes.
#define SIP_HEADER_INIT(h, sip_class, size)
Initialize a SIP header structure.
Definition sip_header.h:73
Structure for Alert-Info header.
Definition sip_extra.h:68
url_t ai_url[1]
URI to alert info.
Definition sip_extra.h:71
sip_common_t ai_common[1]
Common fragment info.
Definition sip_extra.h:69
msg_param_t const * ai_params
List of optional parameters.
Definition sip_extra.h:72
sip_alert_info_t * ai_next
Link to next Alert-Info.
Definition sip_extra.h:70
Structure for P-Asserted-Identity header.
Definition sip_extra.h:119
sip_p_asserted_identity_t * paid_next
Link to next identity.
Definition sip_extra.h:122
url_t paid_url[1]
SIP, SIPS or TEL URL.
Definition sip_extra.h:124
char const * paid_display
Display name.
Definition sip_extra.h:123
sip_common_t paid_common[1]
Common fragment info.
Definition sip_extra.h:120
Structure for P-Preferred-Identity header.
Definition sip_extra.h:133
sip_common_t ppid_common[1]
Common fragment info.
Definition sip_extra.h:134
url_t ppid_url[1]
SIP, SIPS or TEL URL.
Definition sip_extra.h:138
char const * ppid_display
Display name.
Definition sip_extra.h:137
sip_p_preferred_identity_t * ppid_next
Link to next identity.
Definition sip_extra.h:136
Structure for Refer-Sub header.
Definition sip_extra.h:55
char const * rs_value
"true" or "false"
Definition sip_extra.h:58
msg_param_t const * rs_params
List of extension parameters.
Definition sip_extra.h:59
sip_common_t rs_common[1]
Common fragment info.
Definition sip_extra.h:56
sip_error_t * rs_next
Dummy link to next.
Definition sip_extra.h:57
Structure for Remote-Party-ID header.
Definition sip_extra.h:150
url_t rpid_url[1]
URL.
Definition sip_extra.h:155
sip_common_t rpid_common[1]
Common fragment info.
Definition sip_extra.h:151
sip_remote_party_id_t * rpid_next
Link to next identity.
Definition sip_extra.h:153
char const * rpid_display
Display name.
Definition sip_extra.h:154
sip_param_t const * rpid_params
Parameters.
Definition sip_extra.h:156
char const * rpid_screen
Shortcuts to screen, party, id-type and privacy parameters.
Definition sip_extra.h:158
Structure for Reply-To header.
Definition sip_extra.h:81
sip_common_t rplyto_common[1]
Common fragment info.
Definition sip_extra.h:82
msg_param_t const * rplyto_params
List of optional parameters.
Definition sip_extra.h:86
sip_error_t * rplyto_next
Dummy link to next header.
Definition sip_extra.h:83
url_t rplyto_url[1]
Return URI.
Definition sip_extra.h:85
char const * rplyto_display
Display name.
Definition sip_extra.h:84
Structure for Suppress-Body-If-Match header.
Definition sip_extra.h:95
sip_common_t sbim_common[1]
Common fragment info.
Definition sip_extra.h:96
char const * sbim_tag
Entity-tag.
Definition sip_extra.h:98
sip_error_t * sbim_next
Dummy link to next header.
Definition sip_extra.h:97
Structure for Suppress-Notify-If-Match header.
Definition sip_extra.h:107
sip_common_t snim_common[1]
Common fragment info.
Definition sip_extra.h:108
sip_error_t * snim_next
Dummy link to next header.
Definition sip_extra.h:109
char const * snim_tag
Entity-tag.
Definition sip_extra.h:110
SU_HOME_T su_home_t
#define SOFIAPUBFUN
#define SOFIAPUBVAR
#define su_inline
struct tag_type_s const tag_typedef_t[1]
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.