sofia-sip/sip.h

Go to the documentation of this file.
00001 /*
00002  * This file is part of the Sofia-SIP package
00003  *
00004  * Copyright (C) 2005 Nokia Corporation.
00005  *
00006  * Contact: Pekka Pessi <pekka.pessi@nokia-email.address.hidden>
00007  *
00008  * This library is free software; you can redistribute it and/or
00009  * modify it under the terms of the GNU Lesser General Public License
00010  * as published by the Free Software Foundation; either version 2.1 of
00011  * the License, or (at your option) any later version.
00012  *
00013  * This library is distributed in the hope that it will be useful, but
00014  * WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00016  * Lesser General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU Lesser General Public
00019  * License along with this library; if not, write to the Free Software
00020  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
00021  * 02110-1301 USA
00022  *
00023  */
00024 
00025 #ifndef SIP_H
00026 
00027 #define SIP_H
00028 
00038 #ifndef MSG_TYPES_H
00039 #include <sofia-sip/msg_types.h>
00040 #endif
00041 #ifndef MSG_MIME_H
00042 #include <sofia-sip/msg_mime.h>
00043 #endif
00044 
00045 SOFIA_BEGIN_DECLS
00046 
00048 typedef enum {
00049   sip_method_invalid = -1,      
00050   sip_method_unknown = 0,       
00051   sip_method_invite,            
00052   sip_method_ack,               
00053   sip_method_cancel,            
00054   sip_method_bye,               
00055   sip_method_options,           
00056   sip_method_register,          
00057   sip_method_info,              
00058   sip_method_prack,             
00059   sip_method_update,            
00060   sip_method_message,           
00061   sip_method_subscribe,         
00062   sip_method_notify,            
00063   sip_method_refer,             
00064   sip_method_publish,           
00065 } sip_method_t;
00066 
00067 #define SIP_METHOD(s)         sip_method_unknown, #s
00068 #define SIP_METHOD_ACK        sip_method_ack, "ACK"
00069 #define SIP_METHOD_CANCEL     sip_method_cancel, "CANCEL"
00070 #define SIP_METHOD_BYE        sip_method_bye, "BYE"
00071 #define SIP_METHOD_INVITE     sip_method_invite, "INVITE"
00072 #define SIP_METHOD_OPTIONS    sip_method_options, "OPTIONS"
00073 #define SIP_METHOD_REGISTER   sip_method_register, "REGISTER"
00074 #define SIP_METHOD_INFO       sip_method_info, "INFO"
00075 #define SIP_METHOD_PRACK      sip_method_prack, "PRACK"
00076 #define SIP_METHOD_UPDATE     sip_method_update, "UPDATE"
00077 #define SIP_METHOD_MESSAGE    sip_method_message, "MESSAGE"
00078 #define SIP_METHOD_SUBSCRIBE  sip_method_subscribe, "SUBSCRIBE"
00079 #define SIP_METHOD_NOTIFY     sip_method_notify, "NOTIFY"
00080 #define SIP_METHOD_REFER      sip_method_refer, "REFER"
00081 #define SIP_METHOD_PUBLISH    sip_method_publish, "PUBLISH"
00082 
00084 #define SIP_NONE ((void const *)-1L)
00085 
00087 #define SIP_PROTOCOL_TAG   ((void *)0x53495020) /* 'SIP'20 */
00088 
00089 enum {
00091  SIP_DEFAULT_PORT = 5060,
00092 #define SIP_DEFAULT_PORT SIP_DEFAULT_PORT
00093 
00095 #define SIP_DEFAULT_SERV "5060"
00096 
00098  SIPS_DEFAULT_PORT = 5061,
00099 #define SIPS_DEFAULT_PORT SIPS_DEFAULT_PORT
00100 
00101 #define SIPS_DEFAULT_SERV "5061"
00102 };
00103 
00105 typedef msg_time_t sip_time_t;
00106 
00108 #define SIP_TIME_MAX ((sip_time_t)MSG_TIME_MAX)
00109 
00111 typedef struct sip_s                sip_t;
00112 
00114 typedef union sip_header_u          sip_header_t;
00115 
00117 typedef struct msg_generic_s        sip_generic_t;
00118 #define g_value g_string
00119 
00121 typedef msg_common_t                sip_common_t;
00122 
00124 typedef msg_param_t                 sip_param_t;
00125 
00127 typedef struct sip_addr_s           sip_addr_t;
00128 
00130 typedef msg_auth_t                  sip_auth_t;
00131 
00132 typedef struct sip_request_s        sip_request_t;
00133 typedef struct sip_status_s         sip_status_t;
00134 typedef msg_error_t                 sip_error_t;
00135 typedef msg_unknown_t               sip_unknown_t;
00136 typedef msg_separator_t             sip_separator_t;
00137 typedef msg_payload_t               sip_payload_t;
00138 
00139 typedef struct sip_accept_s         sip_accept_t;
00140 typedef msg_accept_any_t            sip_accept_encoding_t;
00141 typedef msg_accept_any_t            sip_accept_language_t;
00142 typedef msg_list_t                  sip_allow_t;
00143 typedef struct sip_authentication_info_s
00144                                     sip_authentication_info_t;
00145 typedef struct msg_auth_s           sip_authorization_t;
00146 typedef struct sip_call_id_s        sip_call_id_t;
00147 typedef struct sip_call_info_s      sip_call_info_t;
00148 typedef struct sip_contact_s        sip_contact_t;
00149 typedef struct sip_cseq_s           sip_cseq_t;
00150 typedef struct msg_generic_s        sip_etag_t;
00151 typedef struct msg_generic_s        sip_if_match_t;
00152 typedef msg_content_disposition_t   sip_content_disposition_t;
00153 typedef msg_list_t                  sip_content_encoding_t;
00154 typedef msg_list_t                  sip_content_language_t;
00155 typedef struct sip_content_length_s sip_content_length_t;
00156 typedef struct msg_content_type_s   sip_content_type_t;
00157 typedef struct msg_generic_s        sip_mime_version_t;
00158 typedef struct sip_date_s           sip_date_t;
00159 typedef struct sip_error_info_s     sip_error_info_t;
00160 typedef struct sip_expires_s        sip_expires_t;
00161 typedef struct sip_addr_s           sip_from_t;
00162 typedef msg_list_t                  sip_in_reply_to_t;
00163 typedef struct sip_max_forwards_s   sip_max_forwards_t;
00164 typedef struct sip_min_expires_s    sip_min_expires_t;
00165 typedef struct sip_min_se_s         sip_min_se_t;
00166 typedef struct msg_generic_s        sip_organization_t;
00167 typedef struct msg_generic_s        sip_priority_t;
00168 typedef struct msg_auth_s           sip_proxy_authenticate_t;
00169 typedef struct sip_authentication_info_s
00170                                     sip_proxy_authentication_info_t;
00171 typedef struct msg_auth_s           sip_proxy_authorization_t;
00172 typedef msg_list_t                  sip_proxy_require_t;
00173 typedef struct sip_rack_s           sip_rack_t;
00174 typedef struct sip_reason_s         sip_reason_t;
00175 typedef struct sip_route_s          sip_record_route_t;
00176 
00177 typedef struct sip_refer_to_s       sip_refer_to_t;
00178 typedef struct sip_referred_by_s    sip_referred_by_t;
00179 typedef struct sip_replaces_s       sip_replaces_t;
00180 
00181 typedef struct sip_request_disposition_s sip_request_disposition_t;
00182 
00183 typedef struct sip_caller_prefs_s   sip_caller_prefs_t;
00184 typedef struct sip_caller_prefs_s   sip_accept_contact_t;
00185 typedef struct sip_caller_prefs_s   sip_reject_contact_t;
00186 
00187 typedef msg_list_t                  sip_require_t;
00188 typedef struct sip_retry_after_s    sip_retry_after_t;
00189 typedef struct sip_route_s          sip_route_t;
00190 typedef struct sip_rseq_s           sip_rseq_t;     
00191 typedef struct msg_generic_s        sip_server_t;
00192 typedef struct sip_session_expires_s
00193                                     sip_session_expires_t;
00194 typedef struct msg_generic_s        sip_subject_t;
00195 typedef struct sip_subscription_state_s
00196                                     sip_subscription_state_t;
00197 typedef msg_list_t                  sip_supported_t;
00198 typedef struct sip_timestamp_s      sip_timestamp_t;
00199 typedef struct sip_addr_s           sip_to_t;
00200 typedef msg_list_t                  sip_unsupported_t;
00201 typedef struct msg_generic_s        sip_user_agent_t;
00202 typedef struct sip_via_s            sip_via_t;
00203 typedef msg_warning_t               sip_warning_t;
00204 typedef struct msg_auth_s           sip_www_authenticate_t;
00205 
00206 typedef struct sip_event_s          sip_event_t;
00207 typedef msg_list_t                  sip_allow_events_t;
00208 
00209 /* RFC 3323 - @Privacy */
00210 typedef struct sip_privacy_s sip_privacy_t;
00211 
00212 /* RFC 3327 - @Path */
00213 typedef struct sip_route_s          sip_path_t;
00214 
00215 /* RFC 3329 - Security Mechanism Agreement */
00216 typedef struct sip_security_agree_s sip_security_client_t;
00217 typedef struct sip_security_agree_s sip_security_server_t;
00218 typedef struct sip_security_agree_s sip_security_verify_t;
00219 
00220 /* RFC 3608 - Service Route */
00221 typedef struct sip_route_s          sip_service_route_t;
00222 
00223 
00232 struct sip_s {
00233   msg_common_t               sip_common[1];     
00234   msg_pub_t                 *sip_next;          
00235   void                      *sip_user;          
00236   unsigned                   sip_size;          
00237   int                        sip_flags;         
00239   sip_error_t               *sip_error;         
00241   /* Pseudoheaders */
00242   sip_request_t             *sip_request;       
00243   sip_status_t              *sip_status;        
00245   /* === Headers start here */
00246   sip_via_t                 *sip_via;           
00247   sip_route_t               *sip_route;         
00248   sip_record_route_t        *sip_record_route;  
00249   sip_max_forwards_t        *sip_max_forwards;  
00250   sip_proxy_require_t       *sip_proxy_require; 
00252   sip_from_t                *sip_from;          
00253   sip_to_t                  *sip_to;            
00254   sip_call_id_t             *sip_call_id;       
00255   sip_cseq_t                *sip_cseq;          
00256   sip_contact_t             *sip_contact;       
00257   sip_rseq_t                *sip_rseq;          
00258   sip_rack_t                *sip_rack;          
00260   /* Caller Preferences */
00261   sip_request_disposition_t *sip_request_disposition; 
00263   sip_accept_contact_t      *sip_accept_contact;
00264   sip_reject_contact_t      *sip_reject_contact;
00266   sip_expires_t             *sip_expires;       
00267   sip_date_t                *sip_date;          
00268   sip_retry_after_t         *sip_retry_after;   
00269   sip_timestamp_t           *sip_timestamp;     
00270   sip_min_expires_t         *sip_min_expires;   
00272   sip_subject_t             *sip_subject;       
00273   sip_priority_t            *sip_priority;      
00275   sip_call_info_t           *sip_call_info;     
00276   sip_organization_t        *sip_organization;  
00277   sip_server_t              *sip_server;        
00278   sip_user_agent_t          *sip_user_agent;    
00279   sip_in_reply_to_t         *sip_in_reply_to;   
00281   sip_accept_t              *sip_accept;        
00282   sip_accept_encoding_t     *sip_accept_encoding; 
00283   sip_accept_language_t     *sip_accept_language; 
00285   sip_allow_t               *sip_allow;         
00286   sip_require_t             *sip_require;       
00287   sip_supported_t           *sip_supported;     
00288   sip_unsupported_t         *sip_unsupported;   
00290   /* RFC 3265 */
00291   sip_event_t               *sip_event;         
00292   sip_allow_events_t        *sip_allow_events;  
00293   sip_subscription_state_t  *sip_subscription_state; 
00296   sip_proxy_authenticate_t  *sip_proxy_authenticate;
00298   sip_proxy_authentication_info_t *sip_proxy_authentication_info;
00300   sip_proxy_authorization_t *sip_proxy_authorization;
00302   sip_authorization_t       *sip_authorization;       
00304   sip_www_authenticate_t    *sip_www_authenticate;
00306   sip_authentication_info_t *sip_authentication_info;
00308   sip_error_info_t          *sip_error_info;    
00309   sip_warning_t             *sip_warning;       
00311   /* RFC 3515 */
00312   sip_refer_to_t            *sip_refer_to;      
00313   sip_referred_by_t         *sip_referred_by;   
00314   sip_replaces_t            *sip_replaces;      
00316   /* draft-ietf-sip-session-timer */
00317   sip_session_expires_t     *sip_session_expires;
00319   sip_min_se_t              *sip_min_se;        
00321   sip_path_t                *sip_path;        
00322   sip_service_route_t       *sip_service_route; 
00324   sip_reason_t              *sip_reason;        
00326   sip_security_client_t     *sip_security_client; 
00327   sip_security_server_t     *sip_security_server; 
00328   sip_security_verify_t     *sip_security_verify; 
00330   sip_privacy_t             *sip_privacy; 
00332   sip_etag_t                *sip_etag;          
00333   sip_if_match_t            *sip_if_match;      
00335   /* Entity headers */
00336   sip_mime_version_t        *sip_mime_version;  
00337   sip_content_type_t        *sip_content_type;  
00338   sip_content_encoding_t    *sip_content_encoding; 
00340   sip_content_language_t    *sip_content_language; 
00341   sip_content_disposition_t *sip_content_disposition; 
00343   sip_content_length_t      *sip_content_length;
00345   /* === Headers end here */
00346 
00347   sip_unknown_t             *sip_unknown;       
00348   sip_separator_t           *sip_separator;     
00350   sip_payload_t             *sip_payload;       
00351   msg_multipart_t           *sip_multipart;     
00352 };
00353 
00354 
00358 struct sip_request_s
00359 {
00360   sip_common_t     rq_common[1];   
00361   sip_error_t     *rq_next;        
00362   sip_method_t     rq_method;      
00363   char const      *rq_method_name; 
00364   url_t            rq_url[1];      
00365   char const      *rq_version;     
00366 };
00367 
00371 struct sip_status_s
00372 {
00373   sip_common_t   st_common[1];  
00374   sip_error_t   *st_next;       
00375   char const    *st_version;    
00376   int            st_status;     
00377   char const    *st_phrase;     
00378 };
00379 
00383 struct sip_addr_s
00384 {
00385   sip_common_t       a_common[1];   
00386   sip_error_t       *a_next;
00387   char const        *a_display;     
00388   url_t              a_url[1];      
00389   msg_param_t const *a_params;      
00390   char const        *a_comment;     
00392   char const        *a_tag;         
00393 };
00394 
00395 #define a_user a_url->url_user
00396 #define a_host a_url->url_host
00397 
00401 struct sip_accept_s
00402 {
00403   sip_common_t        ac_common[1]; 
00404   sip_accept_t       *ac_next;      
00405   char const         *ac_type;      
00406   char const         *ac_subtype;   
00407   msg_param_t const  *ac_params;    
00408   char const         *ac_q;         
00409 };
00410 
00414 struct sip_authentication_info_s
00415 {
00416   sip_common_t        ai_common[1]; 
00417   sip_error_t        *ai_next;      
00418   msg_param_t const  *ai_params;    
00419 };
00420 
00424 struct sip_call_id_s {          
00425   sip_common_t   i_common[1];       
00426   sip_call_id_t *i_next;            
00427   char const    *i_id;              
00428   uint32_t       i_hash;            
00429 };
00430 
00434 struct sip_call_info_s
00435 {
00436   sip_common_t        ci_common[1]; 
00437   sip_call_info_t    *ci_next;      
00438   url_t               ci_url[1];    
00439   msg_param_t const  *ci_params;    
00440   char const         *ci_purpose;   
00441 };
00442 
00446 struct sip_cseq_s
00447 {
00448   sip_common_t   cs_common[1];      
00449   sip_error_t   *cs_next;           
00450   uint32_t       cs_seq;            
00451   sip_method_t   cs_method;         
00452   char const    *cs_method_name;    
00453 };
00454 
00458 struct sip_contact_s
00459 {
00460   sip_common_t        m_common[1];  
00461   sip_contact_t      *m_next;       
00462   char const         *m_display;    
00463   url_t               m_url[1];     
00464   msg_param_t const  *m_params;     
00465   char const         *m_comment;    
00467   char const         *m_q;          
00468   char const         *m_expires;    
00469 };
00470 
00474 struct sip_content_length_s
00475 {
00476   sip_common_t   l_common[1];       
00477   sip_error_t   *l_next;            
00478   uint32_t       l_length;          
00479 };
00480 
00481 #if DOCUMENTATION_ONLY
00482 
00486 struct sip_content_type_s
00487 {
00488   sip_common_t        c_common[1];  
00489   sip_error_t        *c_next;       
00490   char const         *c_type;       
00491   char const         *c_subtype;    
00492   msg_param_t const  *c_params;     
00493 };
00494 #endif
00495 
00499 struct sip_date_s
00500 {
00501   sip_common_t   d_common[1];       
00502   sip_date_t    *d_next;            
00503   sip_time_t     d_time;            
00504 };
00505 
00509 struct sip_error_info_s
00510 {
00511   sip_common_t        ei_common[1]; 
00512   sip_call_info_t    *ei_next;      
00513   url_t               ei_url[1];    
00514   msg_param_t const  *ei_params;    
00515 };
00516 
00520 struct sip_event_s 
00521 {
00522   sip_common_t        o_common[1];  
00523   sip_error_t        *o_next;       
00524   char const *        o_type;       
00525   msg_param_t const  *o_params;     
00526   char const         *o_id;         
00527 };
00528 
00532 struct sip_expires_s
00533 {
00534   sip_common_t        ex_common[1]; 
00535   sip_error_t        *ex_next;      
00536   sip_time_t          ex_date;      
00537 # define ex_time ex_date
00538   sip_time_t          ex_delta;     
00539 };
00540 
00544 struct sip_max_forwards_s
00545 {
00546   sip_common_t        mf_common[1]; 
00547   sip_error_t        *mf_next;      
00548   unsigned long       mf_count;     
00549 };
00550 
00554 struct sip_min_expires_s
00555 {
00556   sip_common_t        me_common[1]; 
00557   sip_error_t        *me_next;      
00558   unsigned long       me_delta;     
00559 };
00560 
00564 struct sip_rack_s
00565 {
00566   sip_common_t        ra_common;        
00567   sip_error_t        *ra_next;          
00568   uint32_t            ra_response;      
00569   uint32_t            ra_cseq;          
00570   sip_method_t        ra_method;        
00571   char const         *ra_method_name;   
00572 };
00573 
00577 struct sip_refer_to_s
00578 {
00579   sip_common_t        r_common[1];  
00580   sip_error_t        *r_next;       
00581   char const         *r_display;
00582   url_t               r_url[1];     
00583   msg_param_t const  *r_params;     
00584 };
00585 
00589 struct sip_referred_by_s
00590 {
00591   sip_common_t        b_common[1];  
00592   sip_error_t        *b_next;       
00593   char const         *b_display;
00594   url_t               b_url[1];     
00595   msg_param_t const  *b_params;     
00596   char const         *b_cid;        
00597 };
00598 
00599 
00603 struct sip_replaces_s
00604 {
00605   sip_common_t        rp_common[1];   
00606   sip_error_t        *rp_next;        
00607   char const         *rp_call_id;     
00608   msg_param_t const  *rp_params;      
00609   char const         *rp_to_tag;      
00610   char const         *rp_from_tag;    
00611   unsigned            rp_early_only;  
00612 };
00613 
00614 
00618 struct sip_retry_after_s {
00619   sip_common_t        af_common[1]; 
00620   sip_error_t        *af_next;      
00621   sip_time_t          af_delta;     
00622   char const         *af_comment;   
00623   msg_param_t const  *af_params;    
00624   char const         *af_duration;  
00625 };
00626 
00630 struct sip_request_disposition_s
00631 {
00632   sip_common_t        rd_common[1]; 
00633   sip_error_t        *rd_next;      
00634   msg_param_t        *rd_items;     
00635 };
00636 
00640 struct sip_caller_prefs_s
00641 {
00642   sip_common_t        cp_common[1];   
00643   sip_caller_prefs_t *cp_next;        
00644   msg_param_t const  *cp_params;      
00645   char const         *cp_q;           
00646   unsigned            cp_require :1;  
00647   unsigned            cp_explicit :1; 
00648 };
00649 
00653 struct sip_reason_s
00654 {
00655   sip_common_t        re_common[1]; 
00656   sip_reason_t       *re_next;      
00657   char const         *re_protocol;  
00658   msg_param_t const  *re_params;    
00659   char const         *re_cause;     
00660   char const         *re_text;      
00661 };
00662 
00666 struct sip_route_s
00667 {
00668   sip_common_t        r_common[1];  
00669   sip_route_t        *r_next;       
00670   char const         *r_display;    
00671   url_t               r_url[1];     
00672   msg_param_t const  *r_params;     
00673 };
00674 
00678 struct sip_rseq_s
00679 {
00680   sip_common_t        rs_common[1];     
00681   sip_error_t        *rs_next;          
00682   unsigned long       rs_response;      
00683 };
00684 
00688 struct sip_session_expires_s
00689 {
00690   sip_common_t        x_common[1];      
00691   sip_error_t        *x_next;           
00692   unsigned long       x_delta;          
00693   msg_param_t const  *x_params;         
00694   char const         *x_refresher;      
00696 };
00697 
00701 struct sip_min_se_s
00702 {
00703   sip_common_t        min_common[1];    
00704   sip_error_t        *min_next;         
00705   unsigned long       min_delta;        
00706   msg_param_t const  *min_params;       
00707 };
00708 
00712 struct sip_subscription_state_s
00713 {
00714   sip_common_t        ss_common[1];   
00715   sip_error_t        *ss_next;        
00717   char const         *ss_substate; 
00718   msg_param_t const  *ss_params;      
00719   char const         *ss_reason;      
00720   char const         *ss_expires;     
00721   char const         *ss_retry_after; 
00722 };
00723 
00727 struct sip_timestamp_s 
00728 {
00729   sip_common_t        ts_common[1]; 
00730   sip_error_t        *ts_next;      
00731   char const         *ts_stamp;     
00732   char const         *ts_delay;     
00733 };
00734 
00738 struct sip_via_s
00739 {
00740   sip_common_t        v_common[1];  
00741   sip_via_t          *v_next;       
00742   char const         *v_protocol;   
00743   char const         *v_host;       
00744   char const         *v_port;       
00745   msg_param_t const  *v_params;     
00746   char const         *v_comment;    
00747   char const         *v_ttl;        
00748   char const         *v_maddr;      
00749   char const         *v_received;   
00750   char const         *v_branch;     
00751   char const         *v_rport;      
00752   char const         *v_comp;       
00753 };
00754 
00759 struct sip_security_agree_s
00760 {
00761   sip_common_t        sa_common[1]; 
00762   struct sip_security_agree_s 
00763                      *sa_next;      
00764   char const         *sa_mec;       
00765   msg_param_t const  *sa_params;    
00766   char const         *sa_q;         
00767   char const         *sa_d_alg;     
00768   char const         *sa_d_qop;     
00769   char const         *sa_d_ver;     
00770 };
00771 
00775 struct sip_privacy_s
00776 {
00777   sip_common_t       priv_common[1];
00778   sip_error_t       *priv_next;     
00779   msg_param_t const *priv_values;   
00780 };
00781 
00782 /* union representing any SIP header
00783  * these are arrays of size 1 for easy casting
00784  */
00785 union sip_header_u
00786 {
00787   sip_common_t               sh_common[1]; 
00788   struct
00789   {
00790     sip_common_t             shn_common;
00791     sip_header_t            *shn_next;
00792   }                          sh_header_next[1];
00793 #define sh_next              sh_header_next->shn_next
00794 #define sh_class sh_common->h_class
00795 #define sh_succ  sh_common->h_succ
00796 #define sh_prev  sh_common->h_prev
00797 #define sh_data  sh_common->h_data
00798 #define sh_len   sh_common->h_len
00799 
00800   sip_addr_t                 sh_addr[1];
00801   sip_auth_t                 sh_auth[1];
00802   sip_generic_t              sh_generic[1];
00803 
00804   sip_request_t              sh_request[1];
00805   sip_status_t               sh_status[1];
00806 
00807   sip_error_t                sh_error[1];
00808 
00809   sip_via_t                  sh_via[1];
00810   sip_route_t                sh_route[1];
00811   sip_record_route_t         sh_record_route[1];
00812   sip_max_forwards_t         sh_max_forwards[1];
00813 
00814   sip_from_t                 sh_from[1];
00815   sip_to_t                   sh_to[1];
00816   sip_contact_t              sh_contact[1];
00817   sip_call_id_t              sh_call_id[1];
00818   sip_cseq_t                 sh_cseq[1];
00819   sip_rseq_t                 sh_rseq[1];
00820   sip_rack_t                 sh_rack[1];
00821                              
00822   sip_subject_t              sh_subject[1];
00823   sip_priority_t             sh_priority[1];
00824 
00825   sip_date_t                 sh_date[1];
00826   sip_retry_after_t          sh_retry_after[1];
00827   sip_timestamp_t            sh_timestamp[1];
00828   sip_expires_t              sh_expires[1];
00829   sip_min_expires_t          sh_min_expires[1];
00830 
00831   sip_call_info_t            sh_call_info[1];
00832   sip_organization_t         sh_organization[1];
00833   sip_server_t               sh_server[1];
00834   sip_user_agent_t           sh_user_agent[1];
00835   sip_in_reply_to_t          sh_in_reply_to[1];
00836 
00837   sip_accept_t               sh_accept[1];
00838   sip_accept_encoding_t      sh_accept_encoding[1];
00839   sip_accept_language_t      sh_accept_language[1];
00840                              
00841   sip_allow_t                sh_allow[1];
00842   sip_require_t              sh_require[1];
00843   sip_proxy_require_t        sh_proxy_require[1];
00844   sip_supported_t            sh_supported[1];
00845   sip_unsupported_t          sh_unsupported[1];
00846 
00847   sip_event_t                sh_event[1];
00848   sip_allow_events_t         sh_allow_events[1];
00849   sip_subscription_state_t   sh_subscription_state[1];
00850 
00851   sip_proxy_authenticate_t   sh_proxy_authenticate[1];
00852   sip_proxy_authentication_info_t sh_proxy_authentication_info[1];
00853   sip_proxy_authorization_t  sh_proxy_authorization[1]; 
00854                              
00855   sip_authorization_t        sh_authorization[1];
00856   sip_www_authenticate_t     sh_www_authenticate[1];
00857   sip_authentication_info_t  sh_authentication_info[1];
00858 
00859   sip_error_info_t           sh_error_info[1];
00860   sip_warning_t              sh_warning[1];
00861 
00862   sip_refer_to_t             sh_refer_to[1];
00863   sip_referred_by_t          sh_referred_by[1];
00864   sip_replaces_t             sh_replaces[1];
00865 
00866   /* Caller-Preferences */
00867   sip_caller_prefs_t         sh_caller_prefs[1];
00868   sip_request_disposition_t  sh_request_disposition[1];
00869   sip_accept_contact_t       sh_accept_contact[1];
00870   sip_reject_contact_t       sh_reject_contact[1];
00871    
00872   sip_session_expires_t      sh_session_expires[1];
00873   sip_min_se_t               sh_min_se[1];
00874 
00875   sip_path_t                 sh_path[1];
00876   sip_service_route_t        sh_service_route[1];
00877 
00878   sip_reason_t               sh_reason[1];
00879 
00880   sip_security_client_t      sh_security_client[1];
00881   sip_security_server_t      sh_security_server[1];
00882   sip_security_verify_t      sh_security_verify[1];
00883 
00884   sip_privacy_t              sh_privacy[1];
00885 
00886   sip_etag_t                 sh_etag[1];
00887   sip_if_match_t             sh_if_match[1];
00888     
00889   /* Entity headers */
00890   sip_mime_version_t         sh_mime_version[1];
00891   sip_content_type_t         sh_content_type[1];
00892   sip_content_encoding_t     sh_content_encoding[1];
00893   sip_content_language_t     sh_content_language[1];
00894   sip_content_length_t       sh_content_length[1];
00895   sip_content_disposition_t  sh_content_disposition[1];
00896 
00897   sip_unknown_t              sh_unknown[1];
00898 
00899   sip_separator_t            sh_separator[1];
00900   sip_payload_t              sh_payload[1];
00901 };
00902 
00903 SOFIA_END_DECLS
00904 
00905 #endif /* !defined(SIP_H) */

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