sofia-sip/sip.h

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 
00133 typedef struct sip_request_s        sip_request_t;
00135 typedef struct sip_status_s         sip_status_t;
00137 typedef msg_error_t                 sip_error_t;
00138 
00140 typedef msg_unknown_t               sip_unknown_t;
00142 typedef msg_separator_t             sip_separator_t;
00144 typedef msg_payload_t               sip_payload_t;
00145 
00146 
00147 typedef struct sip_accept_s         sip_accept_t;
00148 typedef msg_accept_any_t            sip_accept_encoding_t;
00149 typedef msg_accept_any_t            sip_accept_language_t;
00150 typedef msg_list_t                  sip_allow_t;
00151 typedef struct sip_authentication_info_s
00152                                     sip_authentication_info_t;
00153 typedef sip_auth_t                  sip_authorization_t;
00154 typedef struct sip_call_id_s        sip_call_id_t;
00155 typedef struct sip_call_info_s      sip_call_info_t;
00156 typedef struct sip_contact_s        sip_contact_t;
00157 typedef struct sip_cseq_s           sip_cseq_t;
00158 typedef sip_generic_t               sip_etag_t;
00159 typedef sip_generic_t               sip_if_match_t;
00160 typedef msg_content_disposition_t   sip_content_disposition_t;
00161 typedef msg_list_t                  sip_content_encoding_t;
00162 typedef msg_list_t                  sip_content_language_t;
00163 typedef struct sip_content_length_s sip_content_length_t;
00164 typedef struct msg_content_type_s   sip_content_type_t;
00165 typedef sip_generic_t               sip_mime_version_t;
00166 typedef struct sip_date_s           sip_date_t;
00167 typedef struct sip_error_info_s     sip_error_info_t;
00168 typedef struct sip_expires_s        sip_expires_t;
00169 typedef struct sip_addr_s           sip_from_t;
00170 typedef msg_list_t                  sip_in_reply_to_t;
00171 typedef struct sip_max_forwards_s   sip_max_forwards_t;
00172 typedef struct sip_min_expires_s    sip_min_expires_t;
00173 typedef struct sip_min_se_s         sip_min_se_t;
00174 typedef sip_generic_t               sip_organization_t;
00175 typedef sip_generic_t               sip_priority_t;
00176 typedef sip_auth_t                  sip_proxy_authenticate_t;
00177 typedef struct sip_authentication_info_s
00178                                     sip_proxy_authentication_info_t;
00179 typedef sip_auth_t                  sip_proxy_authorization_t;
00180 typedef msg_list_t                  sip_proxy_require_t;
00181 typedef struct sip_rack_s           sip_rack_t;
00182 typedef struct sip_reason_s         sip_reason_t;
00183 typedef struct sip_route_s          sip_record_route_t;
00184 
00185 typedef struct sip_refer_to_s       sip_refer_to_t;
00186 typedef struct sip_referred_by_s    sip_referred_by_t;
00187 typedef struct sip_replaces_s       sip_replaces_t;
00188 
00189 typedef struct sip_request_disposition_s sip_request_disposition_t;
00190 
00191 typedef struct sip_caller_prefs_s sip_caller_prefs_t;
00192 typedef struct sip_caller_prefs_s sip_accept_contact_t;
00193 typedef struct sip_caller_prefs_s sip_reject_contact_t;
00194 
00195 typedef msg_list_t                  sip_require_t;
00196 typedef struct sip_retry_after_s    sip_retry_after_t;
00197 typedef struct sip_route_s          sip_route_t;
00198 typedef struct sip_rseq_s           sip_rseq_t;     
00199 typedef sip_generic_t               sip_server_t;
00200 typedef struct sip_session_expires_s
00201                                     sip_session_expires_t;
00202 typedef sip_generic_t               sip_subject_t;
00203 typedef struct sip_subscription_state_s
00204                                     sip_subscription_state_t;
00205 typedef msg_list_t                  sip_supported_t;
00206 typedef struct sip_timestamp_s      sip_timestamp_t;
00207 typedef struct sip_addr_s           sip_to_t;
00208 typedef msg_list_t                  sip_unsupported_t;
00209 typedef sip_generic_t               sip_user_agent_t;
00210 typedef struct sip_via_s            sip_via_t;
00211 typedef msg_warning_t               sip_warning_t;
00212 typedef sip_auth_t                  sip_www_authenticate_t;
00213 
00214 typedef struct sip_event_s          sip_event_t;
00215 typedef msg_list_t                  sip_allow_events_t;
00216 
00217 /* RFC 3323 - Privacy */
00218 typedef struct sip_privacy_s sip_privacy_t;
00219 
00220 /* RFC 3327 - Path */
00221 typedef struct sip_route_s          sip_path_t;
00222 
00223 /* RFC 3329 - Security Mechanism Agreement */
00224 typedef struct sip_security_agree_s sip_security_client_t;
00225 typedef struct sip_security_agree_s sip_security_server_t;
00226 typedef struct sip_security_agree_s sip_security_verify_t;
00227 
00228 /* RFC 3608 - Service Route */
00229 typedef struct sip_route_s          sip_service_route_t;
00230 
00231 
00239 struct sip_s {
00240   msg_common_t               sip_common[1]; 
00241   msg_pub_t                 *sip_next;
00242   void                      *sip_user;          
00243   unsigned                   sip_size;
00244   int                        sip_flags;
00245 
00246   sip_error_t               *sip_error;         
00248   /* Pseudoheaders */
00249   sip_request_t             *sip_request;       
00250   sip_status_t              *sip_status;        
00252   /* === Headers start here */
00253   sip_via_t                 *sip_via;           
00254   sip_route_t               *sip_route;         
00255   sip_record_route_t        *sip_record_route;  
00256   sip_max_forwards_t        *sip_max_forwards;  
00257   sip_proxy_require_t       *sip_proxy_require; 
00259   sip_from_t                *sip_from;          
00260   sip_to_t                  *sip_to;            
00261   sip_call_id_t             *sip_call_id;       
00262   sip_cseq_t                *sip_cseq;          
00263   sip_contact_t             *sip_contact;       
00264   sip_rseq_t                *sip_rseq;          
00265   sip_rack_t                *sip_rack;          
00267   /* Caller Preferences */
00268   sip_request_disposition_t *sip_request_disposition; 
00270   sip_accept_contact_t      *sip_accept_contact;
00271   sip_reject_contact_t      *sip_reject_contact;
00273   sip_expires_t             *sip_expires;       
00274   sip_date_t                *sip_date;          
00275   sip_retry_after_t         *sip_retry_after;   
00276   sip_timestamp_t           *sip_timestamp;     
00277   sip_min_expires_t         *sip_min_expires;   
00279   sip_subject_t             *sip_subject;       
00280   sip_priority_t            *sip_priority;      
00282   sip_call_info_t           *sip_call_info;     
00283   sip_organization_t        *sip_organization;  
00284   sip_server_t              *sip_server;        
00285   sip_user_agent_t          *sip_user_agent;    
00286   sip_in_reply_to_t         *sip_in_reply_to;   
00288   sip_accept_t              *sip_accept;        
00289   sip_accept_encoding_t     *sip_accept_encoding; 
00290   sip_accept_language_t     *sip_accept_language; 
00292   sip_allow_t               *sip_allow;         
00293   sip_require_t             *sip_require;       
00294   sip_supported_t           *sip_supported;     
00295   sip_unsupported_t         *sip_unsupported;   
00297   /* RFC 3265 */
00298   sip_event_t               *sip_event;         
00299   sip_allow_events_t        *sip_allow_events;  
00300   sip_subscription_state_t  *sip_subscription_state; 
00303   sip_proxy_authenticate_t  *sip_proxy_authenticate;
00305   sip_proxy_authentication_info_t *sip_proxy_authentication_info;
00307   sip_proxy_authorization_t *sip_proxy_authorization;
00309   sip_authorization_t       *sip_authorization;       
00311   sip_www_authenticate_t    *sip_www_authenticate;
00313   sip_authentication_info_t *sip_authentication_info;
00315   sip_error_info_t          *sip_error_info;    
00316   sip_warning_t             *sip_warning;       
00318   /* RFC 3515 */
00319   sip_refer_to_t            *sip_refer_to;      
00320   sip_referred_by_t         *sip_referred_by;   
00321   sip_replaces_t            *sip_replaces;      
00323   /* draft-ietf-sip-session-timer */
00324   sip_session_expires_t     *sip_session_expires;
00326   sip_min_se_t              *sip_min_se;        
00328   sip_path_t                *sip_path;        
00329   sip_service_route_t       *sip_service_route; 
00331   sip_reason_t              *sip_reason;        
00333   sip_security_client_t     *sip_security_client; 
00334   sip_security_server_t     *sip_security_server; 
00335   sip_security_verify_t     *sip_security_verify; 
00337   sip_privacy_t             *sip_privacy; 
00339   sip_etag_t                *sip_etag;          
00340   sip_if_match_t            *sip_if_match;      
00342   /* Entity headers */
00343   sip_mime_version_t        *sip_mime_version;  
00344   sip_content_type_t        *sip_content_type;  
00345   sip_content_encoding_t    *sip_content_encoding; 
00347   sip_content_language_t    *sip_content_language; 
00348   sip_content_disposition_t *sip_content_disposition; 
00350   sip_content_length_t      *sip_content_length;
00352   /* === Headers end here */
00353 
00354   sip_unknown_t             *sip_unknown;       
00355   sip_separator_t           *sip_separator;     
00357   sip_payload_t             *sip_payload;       
00358   msg_multipart_t           *sip_multipart;     
00359 };
00360 
00361 
00365 struct sip_request_s
00366 {
00367   sip_common_t     rq_common[1];   
00368   sip_error_t     *rq_next;        
00369   sip_method_t     rq_method;      
00370   char const      *rq_method_name; 
00371   url_t            rq_url[1];      
00372   char const      *rq_version;     
00373 };
00374 
00378 struct sip_status_s
00379 {
00380   sip_common_t   st_common[1];  
00381   sip_error_t   *st_next;       
00382   char const    *st_version;    
00383   int            st_status;     
00384   char const    *st_phrase;     
00385 };
00386 
00390 struct sip_addr_s
00391 {
00392   sip_common_t       a_common[1];   
00393   sip_error_t       *a_next;
00394   char const        *a_display;     
00395   url_t              a_url[1];      
00396   msg_param_t const *a_params;      
00397   char const        *a_comment;     
00399   char const        *a_tag;         
00400 };
00401 
00402 #define a_user a_url->url_user
00403 #define a_host a_url->url_host
00404 
00408 struct sip_accept_s
00409 {
00410   sip_common_t        ac_common[1]; 
00411   sip_accept_t       *ac_next;      
00412   char const         *ac_type;      
00413   char const         *ac_subtype;   
00414   msg_param_t const  *ac_params;    
00415   char const         *ac_q;         
00416 };
00417 
00421 struct sip_authentication_info_s
00422 {
00423   sip_common_t        ai_common[1]; 
00424   sip_error_t        *ai_next;      
00425   msg_param_t const  *ai_params;    
00426 };
00427 
00431 struct sip_call_id_s {          
00432   sip_common_t   i_common[1];       
00433   sip_call_id_t *i_next;            
00434   char const    *i_id;              
00435   uint32_t       i_hash;            
00436 };
00437 
00441 struct sip_call_info_s
00442 {
00443   sip_common_t        ci_common[1]; 
00444   sip_call_info_t    *ci_next;      
00445   url_t               ci_url[1];    
00446   msg_param_t const  *ci_params;    
00447   char const         *ci_purpose;   
00448 };
00449 
00453 struct sip_cseq_s
00454 {
00455   sip_common_t   cs_common[1];      
00456   sip_error_t   *cs_next;           
00457   uint32_t       cs_seq;            
00458   sip_method_t   cs_method;         
00459   char const    *cs_method_name;    
00460 };
00461 
00465 struct sip_contact_s
00466 {
00467   sip_common_t        m_common[1];  
00468   sip_contact_t      *m_next;       
00469   char const         *m_display;    
00470   url_t               m_url[1];     
00471   msg_param_t const  *m_params;     
00472   char const         *m_comment;    
00474   char const         *m_q;          
00475   char const         *m_expires;    
00476 };
00477 
00481 struct sip_content_length_s
00482 {
00483   sip_common_t   l_common[1];       
00484   sip_error_t   *l_next;            
00485   uint32_t       l_length;          
00486 };
00487 
00488 #if DOCUMENTATION_ONLY
00489 
00493 struct sip_content_type_s
00494 {
00495   sip_common_t        c_common[1];  
00496   sip_error_t        *c_next;       
00497   char const         *c_type;       
00498   char const         *c_subtype;    
00499   msg_param_t const  *c_params;     
00500 };
00501 #endif
00502 
00506 struct sip_date_s
00507 {
00508   sip_common_t   d_common[1];       
00509   sip_date_t    *d_next;            
00510   sip_time_t     d_time;            
00511 };
00512 
00516 struct sip_error_info_s
00517 {
00518   sip_common_t        ei_common[1]; 
00519   sip_call_info_t    *ei_next;      
00520   url_t               ei_url[1];    
00521   msg_param_t const  *ei_params;    
00522 };
00523 
00527 struct sip_event_s 
00528 {
00529   sip_common_t        o_common[1];  
00530   sip_error_t        *o_next;       
00531   char const *        o_type;       
00532   msg_param_t const  *o_params;     
00533   char const         *o_id;         
00534 };
00535 
00539 struct sip_expires_s
00540 {
00541   sip_common_t        ex_common[1]; 
00542   sip_error_t        *ex_next;      
00543   sip_time_t          ex_date;      
00544 # define ex_time ex_date
00545   sip_time_t          ex_delta;     
00546 };
00547 
00551 struct sip_max_forwards_s
00552 {
00553   sip_common_t        mf_common[1]; 
00554   sip_error_t        *mf_next;      
00555   unsigned long       mf_count;     
00556 };
00557 
00561 struct sip_min_expires_s
00562 {
00563   sip_common_t        me_common[1]; 
00564   sip_error_t        *me_next;      
00565   unsigned long       me_delta;     
00566 };
00567 
00571 struct sip_rack_s
00572 {
00573   sip_common_t        ra_common;
00574   sip_error_t        *ra_next;
00575   uint32_t            ra_response;
00576   uint32_t            ra_cseq;
00577   sip_method_t        ra_method;
00578   char const         *ra_method_name;
00579 };
00580 
00584 struct sip_refer_to_s
00585 {
00586   sip_common_t        r_common[1];  
00587   sip_error_t        *r_next;       
00588   char const         *r_display;
00589   url_t               r_url[1];     
00590   msg_param_t const  *r_params;     
00591 };
00592 
00596 struct sip_referred_by_s
00597 {
00598   sip_common_t        b_common[1];  
00599   sip_error_t        *b_next;       
00600   char const         *b_display;
00601   url_t               b_url[1];     
00602   msg_param_t const  *b_params;     
00603   char const         *b_cid;        
00604 };
00605 
00606 
00610 struct sip_replaces_s
00611 {
00612   sip_common_t        rp_common[1];   
00613   sip_error_t        *rp_next;        
00614   char const         *rp_call_id;     
00615   msg_param_t const  *rp_params;      
00616   char const         *rp_to_tag;      
00617   char const         *rp_from_tag;    
00618   unsigned            rp_early_only;  
00619 };
00620 
00621 
00625 struct sip_retry_after_s {
00626   sip_common_t        af_common[1]; 
00627   sip_error_t        *af_next;      
00628   sip_time_t          af_delta;     
00629   char const         *af_comment;   
00630   msg_param_t const  *af_params;    
00631   char const         *af_duration;  
00632 };
00633 
00637 struct sip_request_disposition_s
00638 {
00639   sip_common_t        rd_common[1]; 
00640   sip_unknown_t      *rd_next;      
00641   char const        **rd_items;     
00642 };
00643 
00647 struct sip_caller_prefs_s
00648 {
00649   sip_common_t        cp_common[1];   
00650   sip_caller_prefs_t *cp_next;        
00651   msg_param_t const  *cp_params;      
00652   char const         *cp_q;           
00653   unsigned            cp_require : 1;
00654   unsigned            cp_explicit : 1;
00655 };
00656 
00660 struct sip_reason_s
00661 {
00662   sip_common_t        re_common[1]; 
00663   sip_reason_t       *re_next;      
00664   char const         *re_protocol;  
00665   msg_param_t const  *re_params;    
00666   char const         *re_cause;     
00667   char const         *re_text;      
00668 };
00669 
00673 struct sip_route_s
00674 {
00675   sip_common_t        r_common[1];  
00676   sip_route_t        *r_next;       
00677   char const         *r_display;    
00678   url_t               r_url[1];     
00679   msg_param_t const  *r_params;     
00680 };
00681 
00685 struct sip_rseq_s
00686 {
00687   sip_common_t        rs_common;
00688   sip_error_t        *rs_next;
00689   unsigned long       rs_response;
00690 };
00691 
00695 struct sip_session_expires_s
00696 {
00697   sip_common_t        x_common[1];
00698   sip_error_t        *x_next;
00699   unsigned long       x_delta; 
00700   msg_param_t const  *x_params;
00701   char const         *x_refresher; 
00702 };
00703 
00707 struct sip_min_se_s
00708 {
00709   sip_common_t        min_common[1];
00710   sip_error_t        *min_next;
00711   unsigned long       min_delta; 
00712   msg_param_t const  *min_params; 
00713 };
00714 
00718 struct sip_subscription_state_s
00719 {
00720   sip_common_t        ss_common[1]; 
00721   sip_error_t        *ss_next;
00723   char const         *ss_substate; 
00724   msg_param_t const  *ss_params;   
00725   char const         *ss_reason;   
00726   char const         *ss_expires;  
00727   char const         *ss_retry_after; 
00728 };
00729 
00733 struct sip_timestamp_s 
00734 {
00735   sip_common_t        ts_common[1]; 
00736   sip_error_t        *ts_next;
00737   char const         *ts_stamp;     
00738   char const         *ts_delay;     
00739 };
00740 
00744 struct sip_via_s
00745 {
00746   sip_common_t        v_common[1];  
00747   sip_via_t          *v_next;       
00748   char const         *v_protocol;   
00749   char const         *v_host;       
00750   char const         *v_port;       
00751   msg_param_t const  *v_params;     
00752   char const         *v_comment;    
00753   char const         *v_ttl;        
00754   char const         *v_maddr;      
00755   char const         *v_received;   
00756   char const         *v_branch;     
00757   char const         *v_rport;      
00758   char const         *v_comp;       
00759 };
00760 
00765 struct sip_security_agree_s
00766 {
00767   sip_common_t        sa_common[1];
00768   struct sip_security_agree_s 
00769                      *sa_next;      
00770   char const         *sa_mec;       
00771   msg_param_t const  *sa_params;    
00772   char const         *sa_q;         
00773   char const         *sa_d_alg;     
00774   char const         *sa_d_qop;     
00775   char const         *sa_d_ver;     
00776 };
00777 
00781 struct sip_privacy_s
00782 {
00783   sip_common_t       priv_common[1];
00784   sip_error_t       *priv_next;     
00785   msg_param_t const *priv_values;   
00786 };
00787 
00788 /* union representing any SIP header
00789  * these are arrays of size 1 for easy casting
00790  */
00791 union sip_header_u
00792 {
00793   sip_common_t               sh_common[1]; 
00794   struct
00795   {
00796     sip_common_t             shn_common;
00797     sip_header_t            *shn_next;
00798   }                          sh_header_next[1];
00799 #define sh_next              sh_header_next->shn_next
00800 #define sh_class sh_common->h_class
00801 #define sh_succ  sh_common->h_succ
00802 #define sh_prev  sh_common->h_prev
00803 #define sh_data  sh_common->h_data
00804 #define sh_len   sh_common->h_len
00805 
00806   sip_addr_t                 sh_addr[1];
00807   sip_auth_t                 sh_auth[1];
00808   sip_generic_t              sh_generic[1];
00809 
00810   sip_request_t              sh_request[1];
00811   sip_status_t               sh_status[1];
00812 
00813   sip_error_t                sh_error[1];
00814 
00815   sip_via_t                  sh_via[1];
00816   sip_route_t                sh_route[1];
00817   sip_record_route_t         sh_record_route[1];
00818   sip_max_forwards_t         sh_max_forwards[1];
00819 
00820   sip_from_t                 sh_from[1];
00821   sip_to_t                   sh_to[1];
00822   sip_contact_t              sh_contact[1];
00823   sip_call_id_t              sh_call_id[1];
00824   sip_cseq_t                 sh_cseq[1];
00825   sip_rseq_t                 sh_rseq[1];
00826   sip_rack_t                 sh_rack[1];
00827                              
00828   sip_subject_t              sh_subject[1];
00829   sip_priority_t             sh_priority[1];
00830 
00831   sip_date_t                 sh_date[1];
00832   sip_retry_after_t          sh_retry_after[1];
00833   sip_timestamp_t            sh_timestamp[1];
00834   sip_expires_t              sh_expires[1];
00835   sip_min_expires_t          sh_min_expires[1];
00836 
00837   sip_call_info_t            sh_call_info[1];
00838   sip_organization_t         sh_organization[1];
00839   sip_server_t               sh_server[1];
00840   sip_user_agent_t           sh_user_agent[1];
00841   sip_in_reply_to_t          sh_in_reply_to[1];
00842 
00843   sip_accept_t               sh_accept[1];
00844   sip_accept_encoding_t      sh_accept_encoding[1];
00845   sip_accept_language_t      sh_accept_language[1];
00846                              
00847   sip_allow_t                sh_allow[1];
00848   sip_require_t              sh_require[1];
00849   sip_proxy_require_t        sh_proxy_require[1];
00850   sip_supported_t            sh_supported[1];
00851   sip_unsupported_t          sh_unsupported[1];
00852 
00853   sip_event_t                sh_event[1];
00854   sip_allow_events_t         sh_allow_events[1];
00855   sip_subscription_state_t   sh_subscription_state[1];
00856 
00857   sip_proxy_authenticate_t   sh_proxy_authenticate[1];
00858   sip_proxy_authentication_info_t sh_proxy_authentication_info[1];
00859   sip_proxy_authorization_t  sh_proxy_authorization[1]; 
00860                              
00861   sip_authorization_t        sh_authorization[1];
00862   sip_www_authenticate_t     sh_www_authenticate[1];
00863   sip_authentication_info_t  sh_authentication_info[1];
00864 
00865   sip_error_info_t           sh_error_info[1];
00866   sip_warning_t              sh_warning[1];
00867 
00868   sip_refer_to_t             sh_refer_to[1];
00869   sip_referred_by_t          sh_referred_by[1];
00870   sip_replaces_t             sh_replaces[1];
00871 
00872   /* Caller-Preferences */
00873   sip_caller_prefs_t         sh_caller_prefs[1];
00874   sip_request_disposition_t  sh_request_disposition[1];
00875   sip_accept_contact_t       sh_accept_contact[1];
00876   sip_reject_contact_t       sh_reject_contact[1];
00877    
00878   sip_session_expires_t      sh_session_expires[1];
00879   sip_min_se_t               sh_min_se[1];
00880 
00881   sip_path_t                 sh_path[1];
00882   sip_service_route_t        sh_service_route[1];
00883 
00884   sip_reason_t               sh_reason[1];
00885 
00886   sip_security_client_t      sh_security_client[1];
00887   sip_security_server_t      sh_security_server[1];
00888   sip_security_verify_t      sh_security_verify[1];
00889 
00890   sip_privacy_t              sh_privacy[1];
00891 
00892   sip_etag_t                 sh_etag[1];
00893   sip_if_match_t             sh_if_match[1];
00894     
00895   /* Entity headers */
00896   sip_mime_version_t         sh_mime_version[1];
00897   sip_content_type_t         sh_content_type[1];
00898   sip_content_encoding_t     sh_content_encoding[1];
00899   sip_content_language_t     sh_content_language[1];
00900   sip_content_length_t       sh_content_length[1];
00901   sip_content_disposition_t  sh_content_disposition[1];
00902 
00903   sip_unknown_t              sh_unknown[1];
00904 
00905   sip_separator_t            sh_separator[1];
00906   sip_payload_t              sh_payload[1];
00907 };
00908 
00909 SOFIA_END_DECLS
00910 
00911 #endif /* !defined(SIP_H) */

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