sip  1.13.16
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
44 #include <sofia-sip/sip_header.h>
45 #endif
46 
47 SOFIA_BEGIN_DECLS
48 
49 typedef struct sip_refer_sub_s sip_refer_sub_t;
50 
55 {
58  char const *rs_value;
59  msg_param_t const *rs_params;
60 };
61 
62 typedef struct sip_alert_info_s sip_alert_info_t;
63 
68 {
72  msg_param_t const *ai_params;
73 };
74 
75 typedef struct sip_reply_to_s sip_reply_to_t;
76 
81 {
84  char const *rplyto_display;
86  msg_param_t const *rplyto_params;
87 };
88 
90 
95 {
98  char const *sbim_tag;
99 };
100 
102 
107 {
110  char const *snim_tag;
111 };
112 
114 
119 {
123  char const *paid_display;
125 };
126 
128 
133 {
137  char const *ppid_display;
139 };
140 
141 
142 int 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 
167 enum {
174  sip_refer_sub_hash = 14607
175 };
176 
188 SIP_DLL extern msg_hclass_t sip_refer_sub_class[];
189 
190 
197  char *s, isize_t slen);
198 
200 SOFIAPUBFUN 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
246 {
248 }
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
273 int 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
309 su_inline
310 #endif
312  __attribute__((__malloc__));
313 
314 #if SU_HAVE_INLINE
315 su_inline
317 {
318  return (sip_refer_sub_t *)
320 }
321 #endif
322 
352 #if SU_HAVE_INLINE
353 su_inline
354 #endif
356  __attribute__((__malloc__));
357 
358 #if SU_HAVE_INLINE
359 su_inline
361 {
362  return (sip_refer_sub_t *)
364 }
365 #endif
366 
383 #if SU_HAVE_INLINE
384 su_inline
385 #endif
386 sip_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
416 su_inline
417 #endif
418 sip_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))
463 SOFIAPUBVAR 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))
495 SOFIAPUBVAR tag_typedef_t siptag_refer_sub_str_ref;
496 
497 #if SU_INLINE_TAG_CAST
499 siptag_refer_sub_v(sip_refer_sub_t const *v)
500 { return (tag_value_t)v; }
502 siptag_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 
513 enum {
520  sip_alert_info_hash = 53913
521 };
522 
534 SIP_DLL extern msg_hclass_t sip_alert_info_class[];
535 
536 
543  char *s, isize_t slen);
544 
546 SOFIAPUBFUN 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
592 {
594 }
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
619 int 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
655 su_inline
656 #endif
658  __attribute__((__malloc__));
659 
660 #if SU_HAVE_INLINE
661 su_inline
663 {
664  return (sip_alert_info_t *)
666 }
667 #endif
668 
698 #if SU_HAVE_INLINE
699 su_inline
700 #endif
702  __attribute__((__malloc__));
703 
704 #if SU_HAVE_INLINE
705 su_inline
707 {
708  return (sip_alert_info_t *)
710 }
711 #endif
712 
729 #if SU_HAVE_INLINE
730 su_inline
731 #endif
732 sip_alert_info_t *sip_alert_info_make(su_home_t *home, char const *s)
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
762 su_inline
763 #endif
764 sip_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))
809 SOFIAPUBVAR 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))
841 SOFIAPUBVAR tag_typedef_t siptag_alert_info_str_ref;
842 
843 #if SU_INLINE_TAG_CAST
845 siptag_alert_info_v(sip_alert_info_t const *v)
846 { return (tag_value_t)v; }
848 siptag_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 
859 enum {
866  sip_reply_to_hash = 38016
867 };
868 
880 SIP_DLL extern msg_hclass_t sip_reply_to_class[];
881 
882 
889  char *s, isize_t slen);
890 
892 SOFIAPUBFUN 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
938 {
940 }
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
965 int 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
1001 su_inline
1002 #endif
1004  __attribute__((__malloc__));
1005 
1006 #if SU_HAVE_INLINE
1007 su_inline
1009 {
1010  return (sip_reply_to_t *)
1011  msg_header_dup_as(home, sip_reply_to_class, (msg_header_t const *)hdr);
1012 }
1013 #endif
1014 
1044 #if SU_HAVE_INLINE
1045 su_inline
1046 #endif
1048  __attribute__((__malloc__));
1049 
1050 #if SU_HAVE_INLINE
1051 su_inline
1053 {
1054  return (sip_reply_to_t *)
1055  msg_header_copy_as(home, sip_reply_to_class, (msg_header_t const *)hdr);
1056 }
1057 #endif
1058 
1075 #if SU_HAVE_INLINE
1076 su_inline
1077 #endif
1078 sip_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
1108 su_inline
1109 #endif
1110 sip_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))
1155 SOFIAPUBVAR 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))
1187 SOFIAPUBVAR tag_typedef_t siptag_reply_to_str_ref;
1188 
1189 #if SU_INLINE_TAG_CAST
1191 siptag_reply_to_v(sip_reply_to_t const *v)
1192 { return (tag_value_t)v; }
1194 siptag_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 
1205 enum {
1212  sip_remote_party_id_hash = 59907
1213 };
1214 
1226 SIP_DLL extern msg_hclass_t sip_remote_party_id_class[];
1227 
1228 
1235  char *s, isize_t slen);
1236 
1238 SOFIAPUBFUN 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
1284 {
1286 }
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
1311 int 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
1347 su_inline
1348 #endif
1350  __attribute__((__malloc__));
1351 
1352 #if SU_HAVE_INLINE
1353 su_inline
1355 {
1356  return (sip_remote_party_id_t *)
1358 }
1359 #endif
1360 
1390 #if SU_HAVE_INLINE
1391 su_inline
1392 #endif
1394  __attribute__((__malloc__));
1395 
1396 #if SU_HAVE_INLINE
1397 su_inline
1399 {
1400  return (sip_remote_party_id_t *)
1402 }
1403 #endif
1404 
1421 #if SU_HAVE_INLINE
1422 su_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
1454 su_inline
1455 #endif
1456 sip_remote_party_id_t *sip_remote_party_id_format(su_home_t *home, char const *fmt, ...)
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))
1501 SOFIAPUBVAR 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))
1533 SOFIAPUBVAR tag_typedef_t siptag_remote_party_id_str_ref;
1534 
1535 #if SU_INLINE_TAG_CAST
1537 siptag_remote_party_id_v(sip_remote_party_id_t const *v)
1538 { return (tag_value_t)v; }
1540 siptag_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 
1551 enum {
1559 };
1560 
1573 
1574 
1581  char *s, isize_t slen);
1582 
1584 SOFIAPUBFUN 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
1630 {
1632 }
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
1657 int 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
1693 su_inline
1694 #endif
1696  __attribute__((__malloc__));
1697 
1698 #if SU_HAVE_INLINE
1699 su_inline
1701 {
1702  return (sip_p_asserted_identity_t *)
1704 }
1705 #endif
1706 
1736 #if SU_HAVE_INLINE
1737 su_inline
1738 #endif
1740  __attribute__((__malloc__));
1741 
1742 #if SU_HAVE_INLINE
1743 su_inline
1745 {
1746  return (sip_p_asserted_identity_t *)
1748 }
1749 #endif
1750 
1767 #if SU_HAVE_INLINE
1768 su_inline
1769 #endif
1771  __attribute__((__malloc__));
1772 
1773 #if SU_HAVE_INLINE
1775 {
1776  return (sip_p_asserted_identity_t *)sip_header_make(home, sip_p_asserted_identity_class, s);
1777 }
1778 #endif
1779 
1799 #if SU_HAVE_INLINE
1800 su_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))
1847 SOFIAPUBVAR 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))
1879 SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity_str_ref;
1880 
1881 #if SU_INLINE_TAG_CAST
1883 siptag_p_asserted_identity_v(sip_p_asserted_identity_t const *v)
1884 { return (tag_value_t)v; }
1886 siptag_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 
1897 enum {
1905 };
1906 
1919 
1920 
1927  char *s, isize_t slen);
1928 
1930 SOFIAPUBFUN 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
1976 {
1978 }
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
2003 int 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
2039 su_inline
2040 #endif
2042  __attribute__((__malloc__));
2043 
2044 #if SU_HAVE_INLINE
2045 su_inline
2047 {
2048  return (sip_p_preferred_identity_t *)
2050 }
2051 #endif
2052 
2082 #if SU_HAVE_INLINE
2083 su_inline
2084 #endif
2086  __attribute__((__malloc__));
2087 
2088 #if SU_HAVE_INLINE
2089 su_inline
2091 {
2092  return (sip_p_preferred_identity_t *)
2094 }
2095 #endif
2096 
2113 #if SU_HAVE_INLINE
2114 su_inline
2115 #endif
2117  __attribute__((__malloc__));
2118 
2119 #if SU_HAVE_INLINE
2121 {
2122  return (sip_p_preferred_identity_t *)sip_header_make(home, sip_p_preferred_identity_class, s);
2123 }
2124 #endif
2125 
2145 #if SU_HAVE_INLINE
2146 su_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))
2193 SOFIAPUBVAR 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))
2225 SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity_str_ref;
2226 
2227 #if SU_INLINE_TAG_CAST
2229 siptag_p_preferred_identity_v(sip_p_preferred_identity_t const *v)
2230 { return (tag_value_t)v; }
2232 siptag_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 
2244 enum {
2252 };
2253 
2266 
2267 
2274  char *s, isize_t slen);
2275 
2277 SOFIAPUBFUN 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
2323 {
2325 }
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
2350 int sip_is_suppress_body_if_match(sip_header_t const *header);
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
2386 su_inline
2387 #endif
2389  __attribute__((__malloc__));
2390 
2391 #if SU_HAVE_INLINE
2392 su_inline
2394 {
2395  return (sip_suppress_body_if_match_t *)
2397 }
2398 #endif
2399 
2429 #if SU_HAVE_INLINE
2430 su_inline
2431 #endif
2433  __attribute__((__malloc__));
2434 
2435 #if SU_HAVE_INLINE
2436 su_inline
2438 {
2439  return (sip_suppress_body_if_match_t *)
2441 }
2442 #endif
2443 
2460 #if SU_HAVE_INLINE
2461 su_inline
2462 #endif
2464  __attribute__((__malloc__));
2465 
2466 #if SU_HAVE_INLINE
2468 {
2469  return (sip_suppress_body_if_match_t *)sip_header_make(home, sip_suppress_body_if_match_class, s);
2470 }
2471 #endif
2472 
2492 #if SU_HAVE_INLINE
2493 su_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))
2540 SOFIAPUBVAR 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))
2572 SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match_str_ref;
2573 
2574 #if SU_INLINE_TAG_CAST
2576 siptag_suppress_body_if_match_v(sip_suppress_body_if_match_t const *v)
2577 { return (tag_value_t)v; }
2579 siptag_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 
2592 enum {
2600 };
2601 
2614 
2615 
2622  char *s, isize_t slen);
2623 
2625 SOFIAPUBFUN 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
2671 {
2673 }
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
2734 su_inline
2735 #endif
2737  __attribute__((__malloc__));
2738 
2739 #if SU_HAVE_INLINE
2740 su_inline
2742 {
2745 }
2746 #endif
2747 
2777 #if SU_HAVE_INLINE
2778 su_inline
2779 #endif
2781  __attribute__((__malloc__));
2782 
2783 #if SU_HAVE_INLINE
2784 su_inline
2786 {
2789 }
2790 #endif
2791 
2808 #if SU_HAVE_INLINE
2809 su_inline
2810 #endif
2812  __attribute__((__malloc__));
2813 
2814 #if SU_HAVE_INLINE
2816 {
2817  return (sip_suppress_notify_if_match_t *)sip_header_make(home, sip_suppress_notify_if_match_class, s);
2818 }
2819 #endif
2820 
2840 #if SU_HAVE_INLINE
2841 su_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 
2856  return (sip_suppress_notify_if_match_t *)h;
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))
2888 SOFIAPUBVAR 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))
2920 SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match_str_ref;
2921 
2922 #if SU_INLINE_TAG_CAST
2924 siptag_suppress_notify_if_match_v(sip_suppress_notify_if_match_t const *v)
2925 { return (tag_value_t)v; }
2927 siptag_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 
2936 SOFIA_END_DECLS
2937 
2938 #endif
tag_typedef_t siptag_alert_info_str
Tag for string with Alert-Info header value.
Definition: sip_tag.c:832
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_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:256
tag_typedef_t siptag_alert_info
Tag for Alert-Info header object.
Definition: sip_tag.c:828
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_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_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:865
msg_hclass_t sip_p_asserted_identity_class[]
Header class for P-Asserted-Identity header.
Definition: sip_extra.c:1306
tag_typedef_t siptag_p_asserted_identity
Tag for P-Asserted-Identity header object.
Definition: sip_tag.c:861
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:876
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:872
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_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.
Definition: sip_extra.c:1417
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_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
tag_typedef_t siptag_refer_sub
Tag for Refer-Sub header object.
Definition: sip_tag.c:817
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
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:821
@ 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:854
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.
Definition: sip_extra.c:1159
tag_typedef_t siptag_remote_party_id
Tag for Remote-Party-ID header object.
Definition: sip_tag.c:850
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_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
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
tag_typedef_t siptag_reply_to_str
Tag for string with Reply-To header value.
Definition: sip_tag.c:843
msg_hclass_t sip_reply_to_class[]
Header class for Reply-To header.
Definition: sip_extra.c:333
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:839
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.
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:990
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:888
@ 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:884
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
msg_hclass_t sip_suppress_notify_if_match_class[]
Header class for Suppress-Notify-If-Match header.
Definition: sip_extra.c:1064
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:897
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
tag_typedef_t siptag_suppress_notify_if_match_str
Tag for string with Suppress-Notify-If-Match header value.
Definition: sip_tag.c:901
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
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:132
union sip_header_u sip_header_t
Any SIP header - union of all possible SIP headers.
Definition: sip.h:122
SIP parser library prototypes.
#define SIP_HEADER_INIT(h, sip_class, size)
Initialize a SIP header structure.
Definition: sip_header.h:82
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
sip_reply_to_t * rplyto_next
Dummy link to next header.
Definition: sip_extra.h:83
msg_param_t const * rplyto_params
List of optional parameters.
Definition: sip_extra.h:86
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.13.16 - Copyright (C) 2006 Nokia Corporation. All rights reserved. Licensed under the terms of the GNU Lesser General Public License.