sip 1.12.11devel
|
00001 /* -*- C -*- 00002 * 00003 * This file is part of the Sofia-SIP package 00004 * 00005 * Copyright (C) 2006 Nokia Corporation. 00006 * 00007 * Contact: Pekka Pessi <pekka.pessi@nokia-email.address.hidden> 00008 * 00009 * This library is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU Lesser General Public License 00011 * as published by the Free Software Foundation; either version 2.1 of 00012 * the License, or (at your option) any later version. 00013 * 00014 * This library is distributed in the hope that it will be useful, but 00015 * WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 * Lesser General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU Lesser General Public 00020 * License along with this library; if not, write to the Free Software 00021 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 00022 * 02110-1301 USA 00023 * 00024 */ 00025 00026 #ifndef SIP_EXTRA_H 00027 00028 #define SIP_EXTRA_H 00029 00039 #ifndef SIP_H 00040 #include <sofia-sip/sip.h> 00041 #endif 00042 00043 #ifndef SIP_HEADER_H 00044 #include <sofia-sip/sip_header.h> 00045 #endif 00046 00047 SOFIA_BEGIN_DECLS 00048 00049 typedef struct sip_refer_sub_s sip_refer_sub_t; 00050 00054 struct sip_refer_sub_s 00055 { 00056 sip_common_t rs_common[1]; 00057 sip_error_t *rs_next; 00058 char const *rs_value; 00059 msg_param_t const *rs_params; 00060 }; 00061 00062 typedef struct sip_alert_info_s sip_alert_info_t; 00063 00067 struct sip_alert_info_s 00068 { 00069 sip_common_t ai_common[1]; 00070 sip_alert_info_t *ai_next; 00071 url_t ai_url[1]; 00072 msg_param_t const *ai_params; 00073 }; 00074 00075 typedef struct sip_reply_to_s sip_reply_to_t; 00076 00080 struct sip_reply_to_s 00081 { 00082 sip_common_t rplyto_common[1]; 00083 sip_error_t *rplyto_next; 00084 char const *rplyto_display; 00085 url_t rplyto_url[1]; 00086 msg_param_t const *rplyto_params; 00087 }; 00088 00089 typedef struct sip_suppress_body_if_match_s sip_suppress_body_if_match_t; 00090 00094 struct sip_suppress_body_if_match_s 00095 { 00096 sip_common_t sbim_common[1]; 00097 sip_error_t *sbim_next; 00098 char const *sbim_tag; 00099 }; 00100 00101 typedef struct sip_suppress_notify_if_match_s sip_suppress_notify_if_match_t; 00102 00106 struct sip_suppress_notify_if_match_s 00107 { 00108 sip_common_t snim_common[1]; 00109 sip_error_t *snim_next; 00110 char const *snim_tag; 00111 }; 00112 00113 typedef struct sip_p_asserted_identity_s sip_p_asserted_identity_t; 00114 00118 struct sip_p_asserted_identity_s 00119 { 00120 sip_common_t paid_common[1]; 00121 sip_p_asserted_identity_t 00122 *paid_next; 00123 char const *paid_display; 00124 url_t paid_url[1]; 00125 }; 00126 00127 typedef struct sip_p_preferred_identity_s sip_p_preferred_identity_t; 00128 00132 struct sip_p_preferred_identity_s 00133 { 00134 sip_common_t ppid_common[1]; 00135 sip_p_preferred_identity_t 00136 *ppid_next; 00137 char const *ppid_display; 00138 url_t ppid_url[1]; 00139 }; 00140 00141 00142 int sip_p_initialize_remote_party_id_headers(msg_mclass_t *mclass); 00143 00144 typedef struct sip_remote_party_id_s sip_remote_party_id_t; 00145 00149 struct sip_remote_party_id_s 00150 { 00151 sip_common_t rpid_common[1]; 00152 sip_remote_party_id_t 00153 *rpid_next; 00154 char const *rpid_display; 00155 url_t rpid_url[1]; 00156 sip_param_t const *rpid_params; 00158 char const *rpid_screen, *rpid_party, *rpid_id_type, *rpid_privacy; 00159 }; 00160 00161 00162 00164 #define SIP_HAVE_REFER_SUB 1 00165 00166 00167 enum { 00174 sip_refer_sub_hash = 14607 00175 }; 00176 00188 SIP_DLL extern msg_hclass_t sip_refer_sub_class[]; 00189 00190 00196 SOFIAPUBFUN issize_t sip_refer_sub_d(su_home_t *, msg_header_t *, 00197 char *s, isize_t slen); 00198 00200 SOFIAPUBFUN issize_t sip_refer_sub_e(char b[], isize_t bsiz, 00201 msg_header_t const *h, int flags); 00202 00208 #define sip_refer_sub(sip) \ 00209 ((sip_refer_sub_t *)msg_header_access((msg_pub_t*)(sip), sip_refer_sub_class)) 00210 00226 #define SIP_REFER_SUB_INIT() SIP_HDR_INIT(refer_sub) 00227 00244 #if SU_HAVE_INLINE 00245 su_inline sip_refer_sub_t *sip_refer_sub_init(sip_refer_sub_t x[1]) 00246 { 00247 return SIP_HEADER_INIT(x, sip_refer_sub_class, sizeof(sip_refer_sub_t)); 00248 } 00249 #else 00250 #define sip_refer_sub_init(x) \ 00251 SIP_HEADER_INIT(x, sip_refer_sub_class, sizeof(sip_refer_sub_t)) 00252 #endif 00253 00267 #if SU_HAVE_INLINE 00268 su_inline int sip_is_refer_sub(sip_header_t const *header) 00269 { 00270 return header && header->sh_class->hc_hash == sip_refer_sub_hash; 00271 } 00272 #else 00273 int sip_is_refer_sub(sip_header_t const *header); 00274 #endif 00275 00276 #define sip_refer_sub_p(h) sip_is_refer_sub((h)) 00277 00278 00308 #if SU_HAVE_INLINE 00309 su_inline 00310 #endif 00311 sip_refer_sub_t *sip_refer_sub_dup(su_home_t *home, sip_refer_sub_t const *hdr) 00312 __attribute__((__malloc__)); 00313 00314 #if SU_HAVE_INLINE 00315 su_inline 00316 sip_refer_sub_t *sip_refer_sub_dup(su_home_t *home, sip_refer_sub_t const *hdr) 00317 { 00318 return (sip_refer_sub_t *) 00319 msg_header_dup_as(home, sip_refer_sub_class, (msg_header_t const *)hdr); 00320 } 00321 #endif 00322 00352 #if SU_HAVE_INLINE 00353 su_inline 00354 #endif 00355 sip_refer_sub_t *sip_refer_sub_copy(su_home_t *home, sip_refer_sub_t const *hdr) 00356 __attribute__((__malloc__)); 00357 00358 #if SU_HAVE_INLINE 00359 su_inline 00360 sip_refer_sub_t *sip_refer_sub_copy(su_home_t *home, sip_refer_sub_t const *hdr) 00361 { 00362 return (sip_refer_sub_t *) 00363 msg_header_copy_as(home, sip_refer_sub_class, (msg_header_t const *)hdr); 00364 } 00365 #endif 00366 00383 #if SU_HAVE_INLINE 00384 su_inline 00385 #endif 00386 sip_refer_sub_t *sip_refer_sub_make(su_home_t *home, char const *s) 00387 __attribute__((__malloc__)); 00388 00389 #if SU_HAVE_INLINE 00390 su_inline sip_refer_sub_t *sip_refer_sub_make(su_home_t *home, char const *s) 00391 { 00392 return (sip_refer_sub_t *)sip_header_make(home, sip_refer_sub_class, s); 00393 } 00394 #endif 00395 00415 #if SU_HAVE_INLINE 00416 su_inline 00417 #endif 00418 sip_refer_sub_t *sip_refer_sub_format(su_home_t *home, char const *fmt, ...) 00419 __attribute__((__malloc__, __format__ (printf, 2, 3))); 00420 00421 #if SU_HAVE_INLINE 00422 su_inline sip_refer_sub_t *sip_refer_sub_format(su_home_t *home, char const *fmt, ...) 00423 { 00424 sip_header_t *h; 00425 va_list ap; 00426 00427 va_start(ap, fmt); 00428 h = sip_header_vformat(home, sip_refer_sub_class, fmt, ap); 00429 va_end(ap); 00430 00431 return (sip_refer_sub_t *)h; 00432 } 00433 #endif 00434 00454 #define SIPTAG_REFER_SUB(x) siptag_refer_sub, siptag_refer_sub_v(x) 00455 00456 SOFIAPUBVAR tag_typedef_t siptag_refer_sub; 00457 00462 #define SIPTAG_REFER_SUB_REF(x) siptag_refer_sub_ref, siptag_refer_sub_vr(&(x)) 00463 SOFIAPUBVAR tag_typedef_t siptag_refer_sub_ref; 00464 00486 #define SIPTAG_REFER_SUB_STR(s) siptag_refer_sub_str, tag_str_v(s) 00487 00488 SOFIAPUBVAR tag_typedef_t siptag_refer_sub_str; 00489 00494 #define SIPTAG_REFER_SUB_STR_REF(x) siptag_refer_sub_str_ref, tag_str_vr(&(x)) 00495 SOFIAPUBVAR tag_typedef_t siptag_refer_sub_str_ref; 00496 00497 #if SU_INLINE_TAG_CAST 00498 su_inline tag_value_t 00499 siptag_refer_sub_v(sip_refer_sub_t const *v) 00500 { return (tag_value_t)v; } 00501 su_inline tag_value_t 00502 siptag_refer_sub_vr(sip_refer_sub_t const **vp) 00503 { return (tag_value_t)vp; } 00504 #else 00505 #define siptag_refer_sub_v(v) (tag_value_t)(v) 00506 #define siptag_refer_sub_vr(vp) (tag_value_t)(vp) 00507 #endif 00508 00510 #define SIP_HAVE_ALERT_INFO 1 00511 00512 00513 enum { 00520 sip_alert_info_hash = 53913 00521 }; 00522 00534 SIP_DLL extern msg_hclass_t sip_alert_info_class[]; 00535 00536 00542 SOFIAPUBFUN issize_t sip_alert_info_d(su_home_t *, msg_header_t *, 00543 char *s, isize_t slen); 00544 00546 SOFIAPUBFUN issize_t sip_alert_info_e(char b[], isize_t bsiz, 00547 msg_header_t const *h, int flags); 00548 00554 #define sip_alert_info(sip) \ 00555 ((sip_alert_info_t *)msg_header_access((msg_pub_t*)(sip), sip_alert_info_class)) 00556 00572 #define SIP_ALERT_INFO_INIT() SIP_HDR_INIT(alert_info) 00573 00590 #if SU_HAVE_INLINE 00591 su_inline sip_alert_info_t *sip_alert_info_init(sip_alert_info_t x[1]) 00592 { 00593 return SIP_HEADER_INIT(x, sip_alert_info_class, sizeof(sip_alert_info_t)); 00594 } 00595 #else 00596 #define sip_alert_info_init(x) \ 00597 SIP_HEADER_INIT(x, sip_alert_info_class, sizeof(sip_alert_info_t)) 00598 #endif 00599 00613 #if SU_HAVE_INLINE 00614 su_inline int sip_is_alert_info(sip_header_t const *header) 00615 { 00616 return header && header->sh_class->hc_hash == sip_alert_info_hash; 00617 } 00618 #else 00619 int sip_is_alert_info(sip_header_t const *header); 00620 #endif 00621 00622 #define sip_alert_info_p(h) sip_is_alert_info((h)) 00623 00624 00654 #if SU_HAVE_INLINE 00655 su_inline 00656 #endif 00657 sip_alert_info_t *sip_alert_info_dup(su_home_t *home, sip_alert_info_t const *hdr) 00658 __attribute__((__malloc__)); 00659 00660 #if SU_HAVE_INLINE 00661 su_inline 00662 sip_alert_info_t *sip_alert_info_dup(su_home_t *home, sip_alert_info_t const *hdr) 00663 { 00664 return (sip_alert_info_t *) 00665 msg_header_dup_as(home, sip_alert_info_class, (msg_header_t const *)hdr); 00666 } 00667 #endif 00668 00698 #if SU_HAVE_INLINE 00699 su_inline 00700 #endif 00701 sip_alert_info_t *sip_alert_info_copy(su_home_t *home, sip_alert_info_t const *hdr) 00702 __attribute__((__malloc__)); 00703 00704 #if SU_HAVE_INLINE 00705 su_inline 00706 sip_alert_info_t *sip_alert_info_copy(su_home_t *home, sip_alert_info_t const *hdr) 00707 { 00708 return (sip_alert_info_t *) 00709 msg_header_copy_as(home, sip_alert_info_class, (msg_header_t const *)hdr); 00710 } 00711 #endif 00712 00729 #if SU_HAVE_INLINE 00730 su_inline 00731 #endif 00732 sip_alert_info_t *sip_alert_info_make(su_home_t *home, char const *s) 00733 __attribute__((__malloc__)); 00734 00735 #if SU_HAVE_INLINE 00736 su_inline sip_alert_info_t *sip_alert_info_make(su_home_t *home, char const *s) 00737 { 00738 return (sip_alert_info_t *)sip_header_make(home, sip_alert_info_class, s); 00739 } 00740 #endif 00741 00761 #if SU_HAVE_INLINE 00762 su_inline 00763 #endif 00764 sip_alert_info_t *sip_alert_info_format(su_home_t *home, char const *fmt, ...) 00765 __attribute__((__malloc__, __format__ (printf, 2, 3))); 00766 00767 #if SU_HAVE_INLINE 00768 su_inline sip_alert_info_t *sip_alert_info_format(su_home_t *home, char const *fmt, ...) 00769 { 00770 sip_header_t *h; 00771 va_list ap; 00772 00773 va_start(ap, fmt); 00774 h = sip_header_vformat(home, sip_alert_info_class, fmt, ap); 00775 va_end(ap); 00776 00777 return (sip_alert_info_t *)h; 00778 } 00779 #endif 00780 00800 #define SIPTAG_ALERT_INFO(x) siptag_alert_info, siptag_alert_info_v(x) 00801 00802 SOFIAPUBVAR tag_typedef_t siptag_alert_info; 00803 00808 #define SIPTAG_ALERT_INFO_REF(x) siptag_alert_info_ref, siptag_alert_info_vr(&(x)) 00809 SOFIAPUBVAR tag_typedef_t siptag_alert_info_ref; 00810 00832 #define SIPTAG_ALERT_INFO_STR(s) siptag_alert_info_str, tag_str_v(s) 00833 00834 SOFIAPUBVAR tag_typedef_t siptag_alert_info_str; 00835 00840 #define SIPTAG_ALERT_INFO_STR_REF(x) siptag_alert_info_str_ref, tag_str_vr(&(x)) 00841 SOFIAPUBVAR tag_typedef_t siptag_alert_info_str_ref; 00842 00843 #if SU_INLINE_TAG_CAST 00844 su_inline tag_value_t 00845 siptag_alert_info_v(sip_alert_info_t const *v) 00846 { return (tag_value_t)v; } 00847 su_inline tag_value_t 00848 siptag_alert_info_vr(sip_alert_info_t const **vp) 00849 { return (tag_value_t)vp; } 00850 #else 00851 #define siptag_alert_info_v(v) (tag_value_t)(v) 00852 #define siptag_alert_info_vr(vp) (tag_value_t)(vp) 00853 #endif 00854 00856 #define SIP_HAVE_REPLY_TO 1 00857 00858 00859 enum { 00866 sip_reply_to_hash = 38016 00867 }; 00868 00880 SIP_DLL extern msg_hclass_t sip_reply_to_class[]; 00881 00882 00888 SOFIAPUBFUN issize_t sip_reply_to_d(su_home_t *, msg_header_t *, 00889 char *s, isize_t slen); 00890 00892 SOFIAPUBFUN issize_t sip_reply_to_e(char b[], isize_t bsiz, 00893 msg_header_t const *h, int flags); 00894 00900 #define sip_reply_to(sip) \ 00901 ((sip_reply_to_t *)msg_header_access((msg_pub_t*)(sip), sip_reply_to_class)) 00902 00918 #define SIP_REPLY_TO_INIT() SIP_HDR_INIT(reply_to) 00919 00936 #if SU_HAVE_INLINE 00937 su_inline sip_reply_to_t *sip_reply_to_init(sip_reply_to_t x[1]) 00938 { 00939 return SIP_HEADER_INIT(x, sip_reply_to_class, sizeof(sip_reply_to_t)); 00940 } 00941 #else 00942 #define sip_reply_to_init(x) \ 00943 SIP_HEADER_INIT(x, sip_reply_to_class, sizeof(sip_reply_to_t)) 00944 #endif 00945 00959 #if SU_HAVE_INLINE 00960 su_inline int sip_is_reply_to(sip_header_t const *header) 00961 { 00962 return header && header->sh_class->hc_hash == sip_reply_to_hash; 00963 } 00964 #else 00965 int sip_is_reply_to(sip_header_t const *header); 00966 #endif 00967 00968 #define sip_reply_to_p(h) sip_is_reply_to((h)) 00969 00970 01000 #if SU_HAVE_INLINE 01001 su_inline 01002 #endif 01003 sip_reply_to_t *sip_reply_to_dup(su_home_t *home, sip_reply_to_t const *hdr) 01004 __attribute__((__malloc__)); 01005 01006 #if SU_HAVE_INLINE 01007 su_inline 01008 sip_reply_to_t *sip_reply_to_dup(su_home_t *home, sip_reply_to_t const *hdr) 01009 { 01010 return (sip_reply_to_t *) 01011 msg_header_dup_as(home, sip_reply_to_class, (msg_header_t const *)hdr); 01012 } 01013 #endif 01014 01044 #if SU_HAVE_INLINE 01045 su_inline 01046 #endif 01047 sip_reply_to_t *sip_reply_to_copy(su_home_t *home, sip_reply_to_t const *hdr) 01048 __attribute__((__malloc__)); 01049 01050 #if SU_HAVE_INLINE 01051 su_inline 01052 sip_reply_to_t *sip_reply_to_copy(su_home_t *home, sip_reply_to_t const *hdr) 01053 { 01054 return (sip_reply_to_t *) 01055 msg_header_copy_as(home, sip_reply_to_class, (msg_header_t const *)hdr); 01056 } 01057 #endif 01058 01075 #if SU_HAVE_INLINE 01076 su_inline 01077 #endif 01078 sip_reply_to_t *sip_reply_to_make(su_home_t *home, char const *s) 01079 __attribute__((__malloc__)); 01080 01081 #if SU_HAVE_INLINE 01082 su_inline sip_reply_to_t *sip_reply_to_make(su_home_t *home, char const *s) 01083 { 01084 return (sip_reply_to_t *)sip_header_make(home, sip_reply_to_class, s); 01085 } 01086 #endif 01087 01107 #if SU_HAVE_INLINE 01108 su_inline 01109 #endif 01110 sip_reply_to_t *sip_reply_to_format(su_home_t *home, char const *fmt, ...) 01111 __attribute__((__malloc__, __format__ (printf, 2, 3))); 01112 01113 #if SU_HAVE_INLINE 01114 su_inline sip_reply_to_t *sip_reply_to_format(su_home_t *home, char const *fmt, ...) 01115 { 01116 sip_header_t *h; 01117 va_list ap; 01118 01119 va_start(ap, fmt); 01120 h = sip_header_vformat(home, sip_reply_to_class, fmt, ap); 01121 va_end(ap); 01122 01123 return (sip_reply_to_t *)h; 01124 } 01125 #endif 01126 01146 #define SIPTAG_REPLY_TO(x) siptag_reply_to, siptag_reply_to_v(x) 01147 01148 SOFIAPUBVAR tag_typedef_t siptag_reply_to; 01149 01154 #define SIPTAG_REPLY_TO_REF(x) siptag_reply_to_ref, siptag_reply_to_vr(&(x)) 01155 SOFIAPUBVAR tag_typedef_t siptag_reply_to_ref; 01156 01178 #define SIPTAG_REPLY_TO_STR(s) siptag_reply_to_str, tag_str_v(s) 01179 01180 SOFIAPUBVAR tag_typedef_t siptag_reply_to_str; 01181 01186 #define SIPTAG_REPLY_TO_STR_REF(x) siptag_reply_to_str_ref, tag_str_vr(&(x)) 01187 SOFIAPUBVAR tag_typedef_t siptag_reply_to_str_ref; 01188 01189 #if SU_INLINE_TAG_CAST 01190 su_inline tag_value_t 01191 siptag_reply_to_v(sip_reply_to_t const *v) 01192 { return (tag_value_t)v; } 01193 su_inline tag_value_t 01194 siptag_reply_to_vr(sip_reply_to_t const **vp) 01195 { return (tag_value_t)vp; } 01196 #else 01197 #define siptag_reply_to_v(v) (tag_value_t)(v) 01198 #define siptag_reply_to_vr(vp) (tag_value_t)(vp) 01199 #endif 01200 01202 #define SIP_HAVE_REMOTE_PARTY_ID 1 01203 01204 01205 enum { 01212 sip_remote_party_id_hash = 59907 01213 }; 01214 01226 SIP_DLL extern msg_hclass_t sip_remote_party_id_class[]; 01227 01228 01234 SOFIAPUBFUN issize_t sip_remote_party_id_d(su_home_t *, msg_header_t *, 01235 char *s, isize_t slen); 01236 01238 SOFIAPUBFUN issize_t sip_remote_party_id_e(char b[], isize_t bsiz, 01239 msg_header_t const *h, int flags); 01240 01246 #define sip_remote_party_id(sip) \ 01247 ((sip_remote_party_id_t *)msg_header_access((msg_pub_t*)(sip), sip_remote_party_id_class)) 01248 01264 #define SIP_REMOTE_PARTY_ID_INIT() SIP_HDR_INIT(remote_party_id) 01265 01282 #if SU_HAVE_INLINE 01283 su_inline sip_remote_party_id_t *sip_remote_party_id_init(sip_remote_party_id_t x[1]) 01284 { 01285 return SIP_HEADER_INIT(x, sip_remote_party_id_class, sizeof(sip_remote_party_id_t)); 01286 } 01287 #else 01288 #define sip_remote_party_id_init(x) \ 01289 SIP_HEADER_INIT(x, sip_remote_party_id_class, sizeof(sip_remote_party_id_t)) 01290 #endif 01291 01305 #if SU_HAVE_INLINE 01306 su_inline int sip_is_remote_party_id(sip_header_t const *header) 01307 { 01308 return header && header->sh_class->hc_hash == sip_remote_party_id_hash; 01309 } 01310 #else 01311 int sip_is_remote_party_id(sip_header_t const *header); 01312 #endif 01313 01314 #define sip_remote_party_id_p(h) sip_is_remote_party_id((h)) 01315 01316 01346 #if SU_HAVE_INLINE 01347 su_inline 01348 #endif 01349 sip_remote_party_id_t *sip_remote_party_id_dup(su_home_t *home, sip_remote_party_id_t const *hdr) 01350 __attribute__((__malloc__)); 01351 01352 #if SU_HAVE_INLINE 01353 su_inline 01354 sip_remote_party_id_t *sip_remote_party_id_dup(su_home_t *home, sip_remote_party_id_t const *hdr) 01355 { 01356 return (sip_remote_party_id_t *) 01357 msg_header_dup_as(home, sip_remote_party_id_class, (msg_header_t const *)hdr); 01358 } 01359 #endif 01360 01390 #if SU_HAVE_INLINE 01391 su_inline 01392 #endif 01393 sip_remote_party_id_t *sip_remote_party_id_copy(su_home_t *home, sip_remote_party_id_t const *hdr) 01394 __attribute__((__malloc__)); 01395 01396 #if SU_HAVE_INLINE 01397 su_inline 01398 sip_remote_party_id_t *sip_remote_party_id_copy(su_home_t *home, sip_remote_party_id_t const *hdr) 01399 { 01400 return (sip_remote_party_id_t *) 01401 msg_header_copy_as(home, sip_remote_party_id_class, (msg_header_t const *)hdr); 01402 } 01403 #endif 01404 01421 #if SU_HAVE_INLINE 01422 su_inline 01423 #endif 01424 sip_remote_party_id_t *sip_remote_party_id_make(su_home_t *home, char const *s) 01425 __attribute__((__malloc__)); 01426 01427 #if SU_HAVE_INLINE 01428 su_inline sip_remote_party_id_t *sip_remote_party_id_make(su_home_t *home, char const *s) 01429 { 01430 return (sip_remote_party_id_t *)sip_header_make(home, sip_remote_party_id_class, s); 01431 } 01432 #endif 01433 01453 #if SU_HAVE_INLINE 01454 su_inline 01455 #endif 01456 sip_remote_party_id_t *sip_remote_party_id_format(su_home_t *home, char const *fmt, ...) 01457 __attribute__((__malloc__, __format__ (printf, 2, 3))); 01458 01459 #if SU_HAVE_INLINE 01460 su_inline sip_remote_party_id_t *sip_remote_party_id_format(su_home_t *home, char const *fmt, ...) 01461 { 01462 sip_header_t *h; 01463 va_list ap; 01464 01465 va_start(ap, fmt); 01466 h = sip_header_vformat(home, sip_remote_party_id_class, fmt, ap); 01467 va_end(ap); 01468 01469 return (sip_remote_party_id_t *)h; 01470 } 01471 #endif 01472 01492 #define SIPTAG_REMOTE_PARTY_ID(x) siptag_remote_party_id, siptag_remote_party_id_v(x) 01493 01494 SOFIAPUBVAR tag_typedef_t siptag_remote_party_id; 01495 01500 #define SIPTAG_REMOTE_PARTY_ID_REF(x) siptag_remote_party_id_ref, siptag_remote_party_id_vr(&(x)) 01501 SOFIAPUBVAR tag_typedef_t siptag_remote_party_id_ref; 01502 01524 #define SIPTAG_REMOTE_PARTY_ID_STR(s) siptag_remote_party_id_str, tag_str_v(s) 01525 01526 SOFIAPUBVAR tag_typedef_t siptag_remote_party_id_str; 01527 01532 #define SIPTAG_REMOTE_PARTY_ID_STR_REF(x) siptag_remote_party_id_str_ref, tag_str_vr(&(x)) 01533 SOFIAPUBVAR tag_typedef_t siptag_remote_party_id_str_ref; 01534 01535 #if SU_INLINE_TAG_CAST 01536 su_inline tag_value_t 01537 siptag_remote_party_id_v(sip_remote_party_id_t const *v) 01538 { return (tag_value_t)v; } 01539 su_inline tag_value_t 01540 siptag_remote_party_id_vr(sip_remote_party_id_t const **vp) 01541 { return (tag_value_t)vp; } 01542 #else 01543 #define siptag_remote_party_id_v(v) (tag_value_t)(v) 01544 #define siptag_remote_party_id_vr(vp) (tag_value_t)(vp) 01545 #endif 01546 01548 #define SIP_HAVE_P_ASSERTED_IDENTITY 1 01549 01550 01551 enum { 01558 sip_p_asserted_identity_hash = 16399 01559 }; 01560 01572 SIP_DLL extern msg_hclass_t sip_p_asserted_identity_class[]; 01573 01574 01580 SOFIAPUBFUN issize_t sip_p_asserted_identity_d(su_home_t *, msg_header_t *, 01581 char *s, isize_t slen); 01582 01584 SOFIAPUBFUN issize_t sip_p_asserted_identity_e(char b[], isize_t bsiz, 01585 msg_header_t const *h, int flags); 01586 01592 #define sip_p_asserted_identity(sip) \ 01593 ((sip_p_asserted_identity_t *)msg_header_access((msg_pub_t*)(sip), sip_p_asserted_identity_class)) 01594 01610 #define SIP_P_ASSERTED_IDENTITY_INIT() SIP_HDR_INIT(p_asserted_identity) 01611 01628 #if SU_HAVE_INLINE 01629 su_inline sip_p_asserted_identity_t *sip_p_asserted_identity_init(sip_p_asserted_identity_t x[1]) 01630 { 01631 return SIP_HEADER_INIT(x, sip_p_asserted_identity_class, sizeof(sip_p_asserted_identity_t)); 01632 } 01633 #else 01634 #define sip_p_asserted_identity_init(x) \ 01635 SIP_HEADER_INIT(x, sip_p_asserted_identity_class, sizeof(sip_p_asserted_identity_t)) 01636 #endif 01637 01651 #if SU_HAVE_INLINE 01652 su_inline int sip_is_p_asserted_identity(sip_header_t const *header) 01653 { 01654 return header && header->sh_class->hc_hash == sip_p_asserted_identity_hash; 01655 } 01656 #else 01657 int sip_is_p_asserted_identity(sip_header_t const *header); 01658 #endif 01659 01660 #define sip_p_asserted_identity_p(h) sip_is_p_asserted_identity((h)) 01661 01662 01692 #if SU_HAVE_INLINE 01693 su_inline 01694 #endif 01695 sip_p_asserted_identity_t *sip_p_asserted_identity_dup(su_home_t *home, sip_p_asserted_identity_t const *hdr) 01696 __attribute__((__malloc__)); 01697 01698 #if SU_HAVE_INLINE 01699 su_inline 01700 sip_p_asserted_identity_t *sip_p_asserted_identity_dup(su_home_t *home, sip_p_asserted_identity_t const *hdr) 01701 { 01702 return (sip_p_asserted_identity_t *) 01703 msg_header_dup_as(home, sip_p_asserted_identity_class, (msg_header_t const *)hdr); 01704 } 01705 #endif 01706 01736 #if SU_HAVE_INLINE 01737 su_inline 01738 #endif 01739 sip_p_asserted_identity_t *sip_p_asserted_identity_copy(su_home_t *home, sip_p_asserted_identity_t const *hdr) 01740 __attribute__((__malloc__)); 01741 01742 #if SU_HAVE_INLINE 01743 su_inline 01744 sip_p_asserted_identity_t *sip_p_asserted_identity_copy(su_home_t *home, sip_p_asserted_identity_t const *hdr) 01745 { 01746 return (sip_p_asserted_identity_t *) 01747 msg_header_copy_as(home, sip_p_asserted_identity_class, (msg_header_t const *)hdr); 01748 } 01749 #endif 01750 01767 #if SU_HAVE_INLINE 01768 su_inline 01769 #endif 01770 sip_p_asserted_identity_t *sip_p_asserted_identity_make(su_home_t *home, char const *s) 01771 __attribute__((__malloc__)); 01772 01773 #if SU_HAVE_INLINE 01774 su_inline sip_p_asserted_identity_t *sip_p_asserted_identity_make(su_home_t *home, char const *s) 01775 { 01776 return (sip_p_asserted_identity_t *)sip_header_make(home, sip_p_asserted_identity_class, s); 01777 } 01778 #endif 01779 01799 #if SU_HAVE_INLINE 01800 su_inline 01801 #endif 01802 sip_p_asserted_identity_t *sip_p_asserted_identity_format(su_home_t *home, char const *fmt, ...) 01803 __attribute__((__malloc__, __format__ (printf, 2, 3))); 01804 01805 #if SU_HAVE_INLINE 01806 su_inline sip_p_asserted_identity_t *sip_p_asserted_identity_format(su_home_t *home, char const *fmt, ...) 01807 { 01808 sip_header_t *h; 01809 va_list ap; 01810 01811 va_start(ap, fmt); 01812 h = sip_header_vformat(home, sip_p_asserted_identity_class, fmt, ap); 01813 va_end(ap); 01814 01815 return (sip_p_asserted_identity_t *)h; 01816 } 01817 #endif 01818 01838 #define SIPTAG_P_ASSERTED_IDENTITY(x) siptag_p_asserted_identity, siptag_p_asserted_identity_v(x) 01839 01840 SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity; 01841 01846 #define SIPTAG_P_ASSERTED_IDENTITY_REF(x) siptag_p_asserted_identity_ref, siptag_p_asserted_identity_vr(&(x)) 01847 SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity_ref; 01848 01870 #define SIPTAG_P_ASSERTED_IDENTITY_STR(s) siptag_p_asserted_identity_str, tag_str_v(s) 01871 01872 SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity_str; 01873 01878 #define SIPTAG_P_ASSERTED_IDENTITY_STR_REF(x) siptag_p_asserted_identity_str_ref, tag_str_vr(&(x)) 01879 SOFIAPUBVAR tag_typedef_t siptag_p_asserted_identity_str_ref; 01880 01881 #if SU_INLINE_TAG_CAST 01882 su_inline tag_value_t 01883 siptag_p_asserted_identity_v(sip_p_asserted_identity_t const *v) 01884 { return (tag_value_t)v; } 01885 su_inline tag_value_t 01886 siptag_p_asserted_identity_vr(sip_p_asserted_identity_t const **vp) 01887 { return (tag_value_t)vp; } 01888 #else 01889 #define siptag_p_asserted_identity_v(v) (tag_value_t)(v) 01890 #define siptag_p_asserted_identity_vr(vp) (tag_value_t)(vp) 01891 #endif 01892 01894 #define SIP_HAVE_P_PREFERRED_IDENTITY 1 01895 01896 01897 enum { 01904 sip_p_preferred_identity_hash = 44591 01905 }; 01906 01918 SIP_DLL extern msg_hclass_t sip_p_preferred_identity_class[]; 01919 01920 01926 SOFIAPUBFUN issize_t sip_p_preferred_identity_d(su_home_t *, msg_header_t *, 01927 char *s, isize_t slen); 01928 01930 SOFIAPUBFUN issize_t sip_p_preferred_identity_e(char b[], isize_t bsiz, 01931 msg_header_t const *h, int flags); 01932 01938 #define sip_p_preferred_identity(sip) \ 01939 ((sip_p_preferred_identity_t *)msg_header_access((msg_pub_t*)(sip), sip_p_preferred_identity_class)) 01940 01956 #define SIP_P_PREFERRED_IDENTITY_INIT() SIP_HDR_INIT(p_preferred_identity) 01957 01974 #if SU_HAVE_INLINE 01975 su_inline sip_p_preferred_identity_t *sip_p_preferred_identity_init(sip_p_preferred_identity_t x[1]) 01976 { 01977 return SIP_HEADER_INIT(x, sip_p_preferred_identity_class, sizeof(sip_p_preferred_identity_t)); 01978 } 01979 #else 01980 #define sip_p_preferred_identity_init(x) \ 01981 SIP_HEADER_INIT(x, sip_p_preferred_identity_class, sizeof(sip_p_preferred_identity_t)) 01982 #endif 01983 01997 #if SU_HAVE_INLINE 01998 su_inline int sip_is_p_preferred_identity(sip_header_t const *header) 01999 { 02000 return header && header->sh_class->hc_hash == sip_p_preferred_identity_hash; 02001 } 02002 #else 02003 int sip_is_p_preferred_identity(sip_header_t const *header); 02004 #endif 02005 02006 #define sip_p_preferred_identity_p(h) sip_is_p_preferred_identity((h)) 02007 02008 02038 #if SU_HAVE_INLINE 02039 su_inline 02040 #endif 02041 sip_p_preferred_identity_t *sip_p_preferred_identity_dup(su_home_t *home, sip_p_preferred_identity_t const *hdr) 02042 __attribute__((__malloc__)); 02043 02044 #if SU_HAVE_INLINE 02045 su_inline 02046 sip_p_preferred_identity_t *sip_p_preferred_identity_dup(su_home_t *home, sip_p_preferred_identity_t const *hdr) 02047 { 02048 return (sip_p_preferred_identity_t *) 02049 msg_header_dup_as(home, sip_p_preferred_identity_class, (msg_header_t const *)hdr); 02050 } 02051 #endif 02052 02082 #if SU_HAVE_INLINE 02083 su_inline 02084 #endif 02085 sip_p_preferred_identity_t *sip_p_preferred_identity_copy(su_home_t *home, sip_p_preferred_identity_t const *hdr) 02086 __attribute__((__malloc__)); 02087 02088 #if SU_HAVE_INLINE 02089 su_inline 02090 sip_p_preferred_identity_t *sip_p_preferred_identity_copy(su_home_t *home, sip_p_preferred_identity_t const *hdr) 02091 { 02092 return (sip_p_preferred_identity_t *) 02093 msg_header_copy_as(home, sip_p_preferred_identity_class, (msg_header_t const *)hdr); 02094 } 02095 #endif 02096 02113 #if SU_HAVE_INLINE 02114 su_inline 02115 #endif 02116 sip_p_preferred_identity_t *sip_p_preferred_identity_make(su_home_t *home, char const *s) 02117 __attribute__((__malloc__)); 02118 02119 #if SU_HAVE_INLINE 02120 su_inline sip_p_preferred_identity_t *sip_p_preferred_identity_make(su_home_t *home, char const *s) 02121 { 02122 return (sip_p_preferred_identity_t *)sip_header_make(home, sip_p_preferred_identity_class, s); 02123 } 02124 #endif 02125 02145 #if SU_HAVE_INLINE 02146 su_inline 02147 #endif 02148 sip_p_preferred_identity_t *sip_p_preferred_identity_format(su_home_t *home, char const *fmt, ...) 02149 __attribute__((__malloc__, __format__ (printf, 2, 3))); 02150 02151 #if SU_HAVE_INLINE 02152 su_inline sip_p_preferred_identity_t *sip_p_preferred_identity_format(su_home_t *home, char const *fmt, ...) 02153 { 02154 sip_header_t *h; 02155 va_list ap; 02156 02157 va_start(ap, fmt); 02158 h = sip_header_vformat(home, sip_p_preferred_identity_class, fmt, ap); 02159 va_end(ap); 02160 02161 return (sip_p_preferred_identity_t *)h; 02162 } 02163 #endif 02164 02184 #define SIPTAG_P_PREFERRED_IDENTITY(x) siptag_p_preferred_identity, siptag_p_preferred_identity_v(x) 02185 02186 SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity; 02187 02192 #define SIPTAG_P_PREFERRED_IDENTITY_REF(x) siptag_p_preferred_identity_ref, siptag_p_preferred_identity_vr(&(x)) 02193 SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity_ref; 02194 02216 #define SIPTAG_P_PREFERRED_IDENTITY_STR(s) siptag_p_preferred_identity_str, tag_str_v(s) 02217 02218 SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity_str; 02219 02224 #define SIPTAG_P_PREFERRED_IDENTITY_STR_REF(x) siptag_p_preferred_identity_str_ref, tag_str_vr(&(x)) 02225 SOFIAPUBVAR tag_typedef_t siptag_p_preferred_identity_str_ref; 02226 02227 #if SU_INLINE_TAG_CAST 02228 su_inline tag_value_t 02229 siptag_p_preferred_identity_v(sip_p_preferred_identity_t const *v) 02230 { return (tag_value_t)v; } 02231 su_inline tag_value_t 02232 siptag_p_preferred_identity_vr(sip_p_preferred_identity_t const **vp) 02233 { return (tag_value_t)vp; } 02234 #else 02235 #define siptag_p_preferred_identity_v(v) (tag_value_t)(v) 02236 #define siptag_p_preferred_identity_vr(vp) (tag_value_t)(vp) 02237 #endif 02238 02239 #if SU_HAVE_EXPERIMENTAL 02240 02241 #define SIP_HAVE_SUPPRESS_BODY_IF_MATCH 1 02242 02243 02244 enum { 02251 sip_suppress_body_if_match_hash = 49874 02252 }; 02253 02265 SIP_DLL extern msg_hclass_t sip_suppress_body_if_match_class[]; 02266 02267 02273 SOFIAPUBFUN issize_t sip_suppress_body_if_match_d(su_home_t *, msg_header_t *, 02274 char *s, isize_t slen); 02275 02277 SOFIAPUBFUN issize_t sip_suppress_body_if_match_e(char b[], isize_t bsiz, 02278 msg_header_t const *h, int flags); 02279 02285 #define sip_suppress_body_if_match(sip) \ 02286 ((sip_suppress_body_if_match_t *)msg_header_access((msg_pub_t*)(sip), sip_suppress_body_if_match_class)) 02287 02303 #define SIP_SUPPRESS_BODY_IF_MATCH_INIT() SIP_HDR_INIT(suppress_body_if_match) 02304 02321 #if SU_HAVE_INLINE 02322 su_inline sip_suppress_body_if_match_t *sip_suppress_body_if_match_init(sip_suppress_body_if_match_t x[1]) 02323 { 02324 return SIP_HEADER_INIT(x, sip_suppress_body_if_match_class, sizeof(sip_suppress_body_if_match_t)); 02325 } 02326 #else 02327 #define sip_suppress_body_if_match_init(x) \ 02328 SIP_HEADER_INIT(x, sip_suppress_body_if_match_class, sizeof(sip_suppress_body_if_match_t)) 02329 #endif 02330 02344 #if SU_HAVE_INLINE 02345 su_inline int sip_is_suppress_body_if_match(sip_header_t const *header) 02346 { 02347 return header && header->sh_class->hc_hash == sip_suppress_body_if_match_hash; 02348 } 02349 #else 02350 int sip_is_suppress_body_if_match(sip_header_t const *header); 02351 #endif 02352 02353 #define sip_suppress_body_if_match_p(h) sip_is_suppress_body_if_match((h)) 02354 02355 02385 #if SU_HAVE_INLINE 02386 su_inline 02387 #endif 02388 sip_suppress_body_if_match_t *sip_suppress_body_if_match_dup(su_home_t *home, sip_suppress_body_if_match_t const *hdr) 02389 __attribute__((__malloc__)); 02390 02391 #if SU_HAVE_INLINE 02392 su_inline 02393 sip_suppress_body_if_match_t *sip_suppress_body_if_match_dup(su_home_t *home, sip_suppress_body_if_match_t const *hdr) 02394 { 02395 return (sip_suppress_body_if_match_t *) 02396 msg_header_dup_as(home, sip_suppress_body_if_match_class, (msg_header_t const *)hdr); 02397 } 02398 #endif 02399 02429 #if SU_HAVE_INLINE 02430 su_inline 02431 #endif 02432 sip_suppress_body_if_match_t *sip_suppress_body_if_match_copy(su_home_t *home, sip_suppress_body_if_match_t const *hdr) 02433 __attribute__((__malloc__)); 02434 02435 #if SU_HAVE_INLINE 02436 su_inline 02437 sip_suppress_body_if_match_t *sip_suppress_body_if_match_copy(su_home_t *home, sip_suppress_body_if_match_t const *hdr) 02438 { 02439 return (sip_suppress_body_if_match_t *) 02440 msg_header_copy_as(home, sip_suppress_body_if_match_class, (msg_header_t const *)hdr); 02441 } 02442 #endif 02443 02460 #if SU_HAVE_INLINE 02461 su_inline 02462 #endif 02463 sip_suppress_body_if_match_t *sip_suppress_body_if_match_make(su_home_t *home, char const *s) 02464 __attribute__((__malloc__)); 02465 02466 #if SU_HAVE_INLINE 02467 su_inline sip_suppress_body_if_match_t *sip_suppress_body_if_match_make(su_home_t *home, char const *s) 02468 { 02469 return (sip_suppress_body_if_match_t *)sip_header_make(home, sip_suppress_body_if_match_class, s); 02470 } 02471 #endif 02472 02492 #if SU_HAVE_INLINE 02493 su_inline 02494 #endif 02495 sip_suppress_body_if_match_t *sip_suppress_body_if_match_format(su_home_t *home, char const *fmt, ...) 02496 __attribute__((__malloc__, __format__ (printf, 2, 3))); 02497 02498 #if SU_HAVE_INLINE 02499 su_inline sip_suppress_body_if_match_t *sip_suppress_body_if_match_format(su_home_t *home, char const *fmt, ...) 02500 { 02501 sip_header_t *h; 02502 va_list ap; 02503 02504 va_start(ap, fmt); 02505 h = sip_header_vformat(home, sip_suppress_body_if_match_class, fmt, ap); 02506 va_end(ap); 02507 02508 return (sip_suppress_body_if_match_t *)h; 02509 } 02510 #endif 02511 02531 #define SIPTAG_SUPPRESS_BODY_IF_MATCH(x) siptag_suppress_body_if_match, siptag_suppress_body_if_match_v(x) 02532 02533 SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match; 02534 02539 #define SIPTAG_SUPPRESS_BODY_IF_MATCH_REF(x) siptag_suppress_body_if_match_ref, siptag_suppress_body_if_match_vr(&(x)) 02540 SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match_ref; 02541 02563 #define SIPTAG_SUPPRESS_BODY_IF_MATCH_STR(s) siptag_suppress_body_if_match_str, tag_str_v(s) 02564 02565 SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match_str; 02566 02571 #define SIPTAG_SUPPRESS_BODY_IF_MATCH_STR_REF(x) siptag_suppress_body_if_match_str_ref, tag_str_vr(&(x)) 02572 SOFIAPUBVAR tag_typedef_t siptag_suppress_body_if_match_str_ref; 02573 02574 #if SU_INLINE_TAG_CAST 02575 su_inline tag_value_t 02576 siptag_suppress_body_if_match_v(sip_suppress_body_if_match_t const *v) 02577 { return (tag_value_t)v; } 02578 su_inline tag_value_t 02579 siptag_suppress_body_if_match_vr(sip_suppress_body_if_match_t const **vp) 02580 { return (tag_value_t)vp; } 02581 #else 02582 #define siptag_suppress_body_if_match_v(v) (tag_value_t)(v) 02583 #define siptag_suppress_body_if_match_vr(vp) (tag_value_t)(vp) 02584 #endif 02585 02586 #endif /* SU_HAVE_EXPERIMENTAL */ 02587 #if SU_HAVE_EXPERIMENTAL 02588 02589 #define SIP_HAVE_SUPPRESS_NOTIFY_IF_MATCH 1 02590 02591 02592 enum { 02599 sip_suppress_notify_if_match_hash = 51341 02600 }; 02601 02613 SIP_DLL extern msg_hclass_t sip_suppress_notify_if_match_class[]; 02614 02615 02621 SOFIAPUBFUN issize_t sip_suppress_notify_if_match_d(su_home_t *, msg_header_t *, 02622 char *s, isize_t slen); 02623 02625 SOFIAPUBFUN issize_t sip_suppress_notify_if_match_e(char b[], isize_t bsiz, 02626 msg_header_t const *h, int flags); 02627 02633 #define sip_suppress_notify_if_match(sip) \ 02634 ((sip_suppress_notify_if_match_t *)msg_header_access((msg_pub_t*)(sip), sip_suppress_notify_if_match_class)) 02635 02651 #define SIP_SUPPRESS_NOTIFY_IF_MATCH_INIT() SIP_HDR_INIT(suppress_notify_if_match) 02652 02669 #if SU_HAVE_INLINE 02670 su_inline sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_init(sip_suppress_notify_if_match_t x[1]) 02671 { 02672 return SIP_HEADER_INIT(x, sip_suppress_notify_if_match_class, sizeof(sip_suppress_notify_if_match_t)); 02673 } 02674 #else 02675 #define sip_suppress_notify_if_match_init(x) \ 02676 SIP_HEADER_INIT(x, sip_suppress_notify_if_match_class, sizeof(sip_suppress_notify_if_match_t)) 02677 #endif 02678 02692 #if SU_HAVE_INLINE 02693 su_inline int sip_is_suppress_notify_if_match(sip_header_t const *header) 02694 { 02695 return header && header->sh_class->hc_hash == sip_suppress_notify_if_match_hash; 02696 } 02697 #else 02698 int sip_is_suppress_notify_if_match(sip_header_t const *header); 02699 #endif 02700 02701 #define sip_suppress_notify_if_match_p(h) sip_is_suppress_notify_if_match((h)) 02702 02703 02733 #if SU_HAVE_INLINE 02734 su_inline 02735 #endif 02736 sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_dup(su_home_t *home, sip_suppress_notify_if_match_t const *hdr) 02737 __attribute__((__malloc__)); 02738 02739 #if SU_HAVE_INLINE 02740 su_inline 02741 sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_dup(su_home_t *home, sip_suppress_notify_if_match_t const *hdr) 02742 { 02743 return (sip_suppress_notify_if_match_t *) 02744 msg_header_dup_as(home, sip_suppress_notify_if_match_class, (msg_header_t const *)hdr); 02745 } 02746 #endif 02747 02777 #if SU_HAVE_INLINE 02778 su_inline 02779 #endif 02780 sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_copy(su_home_t *home, sip_suppress_notify_if_match_t const *hdr) 02781 __attribute__((__malloc__)); 02782 02783 #if SU_HAVE_INLINE 02784 su_inline 02785 sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_copy(su_home_t *home, sip_suppress_notify_if_match_t const *hdr) 02786 { 02787 return (sip_suppress_notify_if_match_t *) 02788 msg_header_copy_as(home, sip_suppress_notify_if_match_class, (msg_header_t const *)hdr); 02789 } 02790 #endif 02791 02808 #if SU_HAVE_INLINE 02809 su_inline 02810 #endif 02811 sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_make(su_home_t *home, char const *s) 02812 __attribute__((__malloc__)); 02813 02814 #if SU_HAVE_INLINE 02815 su_inline sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_make(su_home_t *home, char const *s) 02816 { 02817 return (sip_suppress_notify_if_match_t *)sip_header_make(home, sip_suppress_notify_if_match_class, s); 02818 } 02819 #endif 02820 02840 #if SU_HAVE_INLINE 02841 su_inline 02842 #endif 02843 sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_format(su_home_t *home, char const *fmt, ...) 02844 __attribute__((__malloc__, __format__ (printf, 2, 3))); 02845 02846 #if SU_HAVE_INLINE 02847 su_inline sip_suppress_notify_if_match_t *sip_suppress_notify_if_match_format(su_home_t *home, char const *fmt, ...) 02848 { 02849 sip_header_t *h; 02850 va_list ap; 02851 02852 va_start(ap, fmt); 02853 h = sip_header_vformat(home, sip_suppress_notify_if_match_class, fmt, ap); 02854 va_end(ap); 02855 02856 return (sip_suppress_notify_if_match_t *)h; 02857 } 02858 #endif 02859 02879 #define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH(x) siptag_suppress_notify_if_match, siptag_suppress_notify_if_match_v(x) 02880 02881 SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match; 02882 02887 #define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH_REF(x) siptag_suppress_notify_if_match_ref, siptag_suppress_notify_if_match_vr(&(x)) 02888 SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match_ref; 02889 02911 #define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH_STR(s) siptag_suppress_notify_if_match_str, tag_str_v(s) 02912 02913 SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match_str; 02914 02919 #define SIPTAG_SUPPRESS_NOTIFY_IF_MATCH_STR_REF(x) siptag_suppress_notify_if_match_str_ref, tag_str_vr(&(x)) 02920 SOFIAPUBVAR tag_typedef_t siptag_suppress_notify_if_match_str_ref; 02921 02922 #if SU_INLINE_TAG_CAST 02923 su_inline tag_value_t 02924 siptag_suppress_notify_if_match_v(sip_suppress_notify_if_match_t const *v) 02925 { return (tag_value_t)v; } 02926 su_inline tag_value_t 02927 siptag_suppress_notify_if_match_vr(sip_suppress_notify_if_match_t const **vp) 02928 { return (tag_value_t)vp; } 02929 #else 02930 #define siptag_suppress_notify_if_match_v(v) (tag_value_t)(v) 02931 #define siptag_suppress_notify_if_match_vr(vp) (tag_value_t)(vp) 02932 #endif 02933 02934 #endif /* SU_HAVE_EXPERIMENTAL */ 02935 02936 SOFIA_END_DECLS 02937 02938 #endif