• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Data Structures
  • Files
  • Directories
  • File List
  • Globals

select_core.h

00001 /*
00002  * $Id$
00003  *
00004  * Copyright (C) 2005-2006 iptelorg GmbH
00005  *
00006  * This file is part of ser, a free SIP server.
00007  *
00008  * ser is free software; you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation; either version 2 of the License, or
00011  * (at your option) any later version
00012  *
00013  * For a license to use the ser software under conditions
00014  * other than those described here, or to purchase support for this
00015  * software, please contact iptel.org by e-mail at the following addresses:
00016  *    info@iptel.org
00017  *
00018  * ser is distributed in the hope that it will be useful,
00019  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00020  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00021  * GNU General Public License for more details.
00022  *
00023  * You should have received a copy of the GNU General Public License 
00024  * along with this program; if not, write to the Free Software 
00025  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00026  *
00027  * History:
00028  * --------
00029  *  2005-12-19  select framework, basic core functions (mma)
00030  *  2006-01-19  multiple nested calls, IS_ALIAS -> NESTED flag renamed (mma)
00031  *  2007-01-26  date, identity, identity_info support added (gergo)
00032  */
00033 
00034  
00035 #ifndef _SELECT_CORE_H
00036 #define _SELECT_CORE_H
00037 
00038 #include "str.h"
00039 #include "parser/msg_parser.h"
00040 #include "select.h"
00041 
00042 enum {
00043         SEL_PARAM_TAG, 
00044         SEL_PARAM_Q, SEL_PARAM_EXPIRES, SEL_PARAM_METHODS, SEL_PARAM_RECEIVED, SEL_PARAM_INSTANCE, 
00045         SEL_PARAM_BRANCH, SEL_PARAM_RPORT, SEL_PARAM_I, SEL_PARAM_ALIAS
00046        };
00047 
00048 enum {
00049         SEL_AUTH_PROXY,
00050         SEL_AUTH_WWW,
00051         SEL_AUTH_USERNAME,
00052         SEL_AUTH_USER,
00053         SEL_AUTH_DOMAIN,
00054         SEL_AUTH_REALM,
00055         SEL_AUTH_NONCE,
00056         SEL_AUTH_URI,
00057         SEL_AUTH_CNONCE,
00058         SEL_AUTH_NC,
00059         SEL_AUTH_RESPONSE,
00060         SEL_AUTH_OPAQUE,
00061         SEL_AUTH_ALG,
00062         SEL_AUTH_QOP
00063 };
00064 
00065 enum {
00066         SEL_SRC  = 1<<0,
00067         SEL_DST  = 1<<1,
00068         SEL_RCV  = 1<<2,
00069         SEL_PROTO= 1<<5,
00070         SEL_IP   = 1<<6,
00071         SEL_PORT = 1<<7,
00072         SEL_IP_PORT = SEL_IP | SEL_PORT,
00073 };
00074 
00075 enum {
00076         SEL_NOW_GMT = 1,
00077         SEL_NOW_LOCAL = 2
00078 };
00079 
00080 enum {
00081         SEL_BRANCH_URI = 1<<0,
00082         SEL_BRANCH_Q = 1<<1,
00083         SEL_BRANCH_DST_URI = 1<<2
00084 };
00085 
00086 SELECT_F(select_ruri)
00087 SELECT_F(select_dst_uri)
00088 SELECT_F(select_next_hop)
00089 SELECT_F(select_next_hop_src_ip)
00090 SELECT_F(select_from)
00091 SELECT_F(select_from_uri)
00092 SELECT_F(select_from_tag)
00093 SELECT_F(select_from_name)
00094 SELECT_F(select_from_params)
00095 SELECT_F(select_to)
00096 SELECT_F(select_to_uri)
00097 SELECT_F(select_to_tag)
00098 SELECT_F(select_to_name)
00099 SELECT_F(select_to_params)
00100 SELECT_F(select_refer_to)
00101 SELECT_F(select_refer_to_uri)
00102 SELECT_F(select_refer_to_tag)
00103 SELECT_F(select_refer_to_name)
00104 SELECT_F(select_refer_to_params)
00105 SELECT_F(select_rpid)
00106 SELECT_F(select_rpid_uri)
00107 SELECT_F(select_rpid_tag)
00108 SELECT_F(select_rpid_name)
00109 SELECT_F(select_rpid_params)
00110 SELECT_F(select_contact)
00111 SELECT_F(select_contact_uri)
00112 SELECT_F(select_contact_name)
00113 SELECT_F(select_contact_params)
00114 SELECT_F(select_contact_params_spec)
00115 SELECT_F(select_via)
00116 SELECT_F(select_via_name)
00117 SELECT_F(select_via_version)
00118 SELECT_F(select_via_transport)
00119 SELECT_F(select_via_host)
00120 SELECT_F(select_via_port)
00121 SELECT_F(select_via_comment)
00122 SELECT_F(select_via_params)
00123 SELECT_F(select_via_params_spec)
00124 
00125 SELECT_F(select_msg)
00126 SELECT_F(select_msg_first_line)
00127 SELECT_F(select_msg_flags)
00128 SELECT_F(select_msg_type)
00129 SELECT_F(select_msg_len)
00130 SELECT_F(select_msg_id)
00131 SELECT_F(select_msg_id_hex)
00132 SELECT_F(select_msg_body)
00133 SELECT_F(select_msg_body_sdp)
00134 SELECT_F(select_sdp_line)
00135 SELECT_F(select_msg_header)
00136 SELECT_F(select_anyheader)
00137 SELECT_F(select_anyheader_params)
00138 SELECT_F(select_msg_request)
00139 SELECT_F(select_msg_request_method)
00140 SELECT_F(select_msg_request_uri)
00141 SELECT_F(select_msg_request_version)
00142 SELECT_F(select_msg_response)
00143 SELECT_F(select_msg_response_version)
00144 SELECT_F(select_msg_response_status)
00145 SELECT_F(select_msg_response_reason)
00146 SELECT_F(select_version)
00147 
00148 SELECT_F(select_any_nameaddr)
00149 SELECT_F(select_nameaddr_name)
00150 SELECT_F(select_nameaddr_uri)
00151 SELECT_F(select_nameaddr_params)
00152 SELECT_F(select_any_params)
00153         
00154 SELECT_F(select_any_uri)
00155 SELECT_F(select_uri_type)
00156 SELECT_F(select_uri_user)
00157 SELECT_F(select_uri_rn_user)
00158 SELECT_F(select_uri_pwd)
00159 SELECT_F(select_uri_host)
00160 SELECT_F(select_uri_port)
00161 SELECT_F(select_uri_hostport)
00162 SELECT_F(select_uri_params)
00163 SELECT_F(select_uri_proto)
00164 
00165 SELECT_F(select_event)
00166 
00167 SELECT_F(select_rr)
00168 SELECT_F(select_rr_uri)
00169 SELECT_F(select_rr_name)
00170 SELECT_F(select_rr_params)
00171 
00172 SELECT_F(select_cseq)
00173 SELECT_F(select_cseq_method)
00174 SELECT_F(select_cseq_num)
00175 
00176 SELECT_F(select_auth)
00177 SELECT_F(select_auth_param)
00178 SELECT_F(select_auth_username)
00179 SELECT_F(select_auth_username_comp)
00180 
00181 SELECT_F(select_src)
00182 SELECT_F(select_dst)
00183 SELECT_F(select_rcv)
00184 SELECT_F(select_ip_port)
00185 
00186 SELECT_F(select_call_id)
00187 SELECT_F(select_expires)
00188 SELECT_F(select_max_forwards)
00189 SELECT_F(select_content_type)
00190 SELECT_F(select_content_length)
00191 SELECT_F(select_subject)
00192 SELECT_F(select_organization)
00193 SELECT_F(select_priority)
00194 SELECT_F(select_session_expires)
00195 SELECT_F(select_min_se)
00196 SELECT_F(select_user_agent)
00197 SELECT_F(select_sip_if_match)
00198 
00199 SELECT_F(select_sys)
00200 SELECT_F(select_sys_pid)
00201 SELECT_F(select_sys_server_id)
00202 SELECT_F(select_sys_unique)
00203 SELECT_F(select_sys_now)
00204 SELECT_F(select_sys_now_fmt)
00205 
00206 SELECT_F(select_branch)
00207 SELECT_F(select_branch_count)
00208 SELECT_F(select_branch_uri)
00209 SELECT_F(select_branch_dst_uri)
00210 SELECT_F(select_branch_uriq)
00211 SELECT_F(select_branch_q)
00212 
00213 SELECT_F(select_date)
00214 SELECT_F(select_identity)
00215 SELECT_F(select_identity_info)
00216 
00217 SELECT_F(select_cfg_var)
00218 SELECT_F(select_cfg_var1)
00219 SELECT_F(cfg_selected_inst)
00220 
00221 static select_row_t select_core[] = {
00222         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("ruri"), select_ruri, 0}, /* not the same as request.uri because it is involved by new_uri */
00223         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("request_uri"), select_ruri, 0},
00224         { select_ruri, SEL_PARAM_STR, STR_NULL, select_any_uri, NESTED},
00225         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("dst_uri"), select_dst_uri, 0},
00226         { select_dst_uri, SEL_PARAM_STR, STR_NULL, select_any_uri, NESTED},
00227         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("next_hop"), select_next_hop, 0},
00228         { select_next_hop, SEL_PARAM_STR, STR_STATIC_INIT("src_ip"), select_next_hop_src_ip, 0},
00229         { select_next_hop, SEL_PARAM_STR, STR_NULL, select_any_uri, NESTED},
00230         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("from"), select_from, 0},
00231         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("f"), select_from, 0},
00232         { select_from, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_from_uri, 0},
00233         { select_from, SEL_PARAM_STR, STR_STATIC_INIT("tag"), select_from_tag, 0},
00234         { select_from, SEL_PARAM_STR, STR_STATIC_INIT("name"), select_from_name, 0},
00235         { select_from, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_from_params, CONSUME_NEXT_STR},
00236         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("to"), select_to, 0},
00237         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("t"), select_to, 0},
00238         { select_to, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_to_uri, 0},
00239         { select_to, SEL_PARAM_STR, STR_STATIC_INIT("tag"), select_to_tag, 0},
00240         { select_to, SEL_PARAM_STR, STR_STATIC_INIT("name"), select_to_name, 0},
00241         { select_to, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_to_params, CONSUME_NEXT_STR},
00242         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("refer_to"), select_refer_to, 0},
00243         { select_refer_to, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_refer_to_uri, 0},
00244         { select_refer_to, SEL_PARAM_STR, STR_STATIC_INIT("tag"), select_refer_to_tag, 0},
00245         { select_refer_to, SEL_PARAM_STR, STR_STATIC_INIT("name"), select_refer_to_name, 0},
00246         { select_refer_to, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_refer_to_params, CONSUME_NEXT_STR},
00247         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("remote_party_id"), select_rpid, 0},
00248         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("rpid"), select_rpid, 0},
00249         { select_rpid, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_rpid_uri, 0},
00250         { select_rpid, SEL_PARAM_STR, STR_STATIC_INIT("tag"), select_rpid_tag, 0},
00251         { select_rpid, SEL_PARAM_STR, STR_STATIC_INIT("name"), select_rpid_name, 0},
00252         { select_rpid, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_rpid_params, CONSUME_NEXT_STR},
00253         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("contact"), select_contact, 0},
00254         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("m"), select_contact, 0},
00255         { select_contact, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_contact_uri, 0},
00256         { select_contact, SEL_PARAM_STR, STR_STATIC_INIT("name"), select_contact_name, 0}, 
00257         { select_contact, SEL_PARAM_STR, STR_STATIC_INIT("q"), select_contact_params_spec, DIVERSION | SEL_PARAM_Q}, 
00258         { select_contact, SEL_PARAM_STR, STR_STATIC_INIT("expires"), select_contact_params_spec, DIVERSION | SEL_PARAM_EXPIRES}, 
00259         { select_contact, SEL_PARAM_STR, STR_STATIC_INIT("methods"), select_contact_params_spec, DIVERSION | SEL_PARAM_METHODS}, 
00260         { select_contact, SEL_PARAM_STR, STR_STATIC_INIT("received"), select_contact_params_spec, DIVERSION | SEL_PARAM_RECEIVED}, 
00261         { select_contact, SEL_PARAM_STR, STR_STATIC_INIT("instance"), select_contact_params_spec, DIVERSION | SEL_PARAM_INSTANCE},      
00262         { select_contact, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_contact_params, CONSUME_NEXT_STR},
00263         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("via"), select_via, OPTIONAL | CONSUME_NEXT_INT},
00264         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("v"), select_via, OPTIONAL | CONSUME_NEXT_INT},
00265         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("name"), select_via_name, 0},
00266         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("version"), select_via_version, 0},
00267         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("transport"), select_via_transport, 0},
00268         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("host"), select_via_host, 0},
00269         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("port"), select_via_port, 0},
00270         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("comment"), select_via_comment, 0},
00271         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("branch"), select_via_params_spec, DIVERSION | SEL_PARAM_BRANCH},
00272         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("received"), select_via_params_spec, DIVERSION | SEL_PARAM_RECEIVED},
00273         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("rport"), select_via_params_spec, DIVERSION | SEL_PARAM_RPORT},
00274         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("i"), select_via_params_spec, DIVERSION | SEL_PARAM_I},
00275         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("alias"), select_via_params_spec, DIVERSION | SEL_PARAM_ALIAS},
00276         { select_via, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_via_params, CONSUME_NEXT_STR},
00277         
00278         { select_from_uri, SEL_PARAM_INT, STR_NULL, select_any_uri, NESTED},
00279         { select_to_uri, SEL_PARAM_INT, STR_NULL, select_any_uri, NESTED},
00280         { select_refer_to_uri, SEL_PARAM_INT, STR_NULL, select_any_uri, NESTED},
00281         { select_rpid_uri, SEL_PARAM_INT, STR_NULL, select_any_uri, NESTED},
00282         { select_contact_uri, SEL_PARAM_INT, STR_NULL, select_any_uri, NESTED},
00283         { select_rr_uri, SEL_PARAM_INT, STR_NULL, select_any_uri, NESTED},
00284         { select_any_uri, SEL_PARAM_STR, STR_STATIC_INIT("type"), select_uri_type, 0},
00285         { select_any_uri, SEL_PARAM_STR, STR_STATIC_INIT("user"), select_uri_user, 0},
00286         { select_any_uri, SEL_PARAM_STR, STR_STATIC_INIT("rn_user"), select_uri_rn_user, 0},
00287         { select_any_uri, SEL_PARAM_STR, STR_STATIC_INIT("pwd"), select_uri_pwd, 0},
00288         { select_any_uri, SEL_PARAM_STR, STR_STATIC_INIT("host"), select_uri_host, 0},
00289         { select_any_uri, SEL_PARAM_STR, STR_STATIC_INIT("port"), select_uri_port, 0},
00290         { select_any_uri, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_uri_params, CONSUME_NEXT_STR | OPTIONAL | FIXUP_CALL },
00291         { select_any_uri, SEL_PARAM_STR, STR_STATIC_INIT("hostport"), select_uri_hostport, 0},
00292         { select_any_uri, SEL_PARAM_STR, STR_STATIC_INIT("transport"), select_uri_proto, 0},
00293 
00294         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("event"), select_event, 0},
00295 
00296         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("record_route"), select_rr, 0},
00297         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("rr"), select_rr, 0},
00298         { select_rr, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_rr_uri, 0},
00299         { select_rr, SEL_PARAM_STR, STR_STATIC_INIT("name"), select_rr_name, 0}, 
00300         { select_rr, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_rr_params, CONSUME_NEXT_STR},
00301 
00302         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("cseq"), select_cseq, 0},
00303         { select_cseq, SEL_PARAM_STR, STR_STATIC_INIT("num"), select_cseq_num, 0},
00304         { select_cseq, SEL_PARAM_STR, STR_STATIC_INIT("method"), select_cseq_method, 0},
00305 
00306         { select_any_nameaddr, SEL_PARAM_STR, STR_STATIC_INIT("name"), select_nameaddr_name, 0},
00307         { select_any_nameaddr, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_nameaddr_uri, 0},
00308         { select_any_nameaddr, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_nameaddr_params, OPTIONAL | CONSUME_NEXT_STR},
00309         { select_nameaddr_uri, SEL_PARAM_INT, STR_NULL, select_any_uri, NESTED},
00310 
00311         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("msg"), select_msg, 0},
00312         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("message"), select_msg, 0},
00313         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("first_line"), select_msg_first_line, 0},
00314         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("flags"), select_msg_flags, 0},
00315         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("len"), select_msg_len, 0},
00316         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("id"), select_msg_id, 0},
00317         { select_msg_id, SEL_PARAM_STR, STR_STATIC_INIT("hex"), select_msg_id_hex, 0},
00318         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("type"), select_msg_type, 0},
00319         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("header"), select_msg_header, 0},
00320         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("h"), select_msg_header, 0},
00321         { select_msg_header, SEL_PARAM_STR, STR_NULL, select_anyheader, OPTIONAL | CONSUME_NEXT_INT | FIXUP_CALL},
00322         { select_anyheader, SEL_PARAM_STR, STR_STATIC_INIT("nameaddr"), select_any_nameaddr, NESTED | CONSUME_NEXT_STR},
00323         { select_anyheader, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_anyheader_params, NESTED},
00324         { select_anyheader_params, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_any_params, CONSUME_NEXT_STR},
00325         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("body"), select_msg_body, 0},
00326         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("content"), select_msg_body, 0},
00327         { select_msg_body, SEL_PARAM_STR, STR_STATIC_INIT("sdp"), select_msg_body_sdp, 0},
00328         { select_msg_body_sdp, SEL_PARAM_STR, STR_STATIC_INIT("line"), select_sdp_line, CONSUME_NEXT_STR | FIXUP_CALL},
00329         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("request"), select_msg_request, 0},
00330         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("req"), select_msg_request, 0},
00331         { select_msg_request, SEL_PARAM_STR, STR_STATIC_INIT("method"), select_msg_request_method, 0},
00332         { select_msg_request, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_msg_request_uri, 0},
00333         { select_msg_request_uri, SEL_PARAM_STR, STR_NULL, select_any_uri, NESTED},
00334         { select_msg_request, SEL_PARAM_STR, STR_STATIC_INIT("version"), select_msg_request_version, 0},
00335         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("response"), select_msg_response, 0},
00336         { select_msg, SEL_PARAM_STR, STR_STATIC_INIT("res"), select_msg_response, 0},
00337         { select_msg_response, SEL_PARAM_STR, STR_STATIC_INIT("version"), select_msg_response_version, 0},
00338         { select_msg_response, SEL_PARAM_STR, STR_STATIC_INIT("status"), select_msg_response_status, 0},
00339         { select_msg_response, SEL_PARAM_STR, STR_STATIC_INIT("code"), select_msg_response_status, 0},
00340         { select_msg_response, SEL_PARAM_STR, STR_STATIC_INIT("reason"), select_msg_response_reason, 0},
00341         /*short aliases*/
00342         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("method"), select_msg_request_method, 0},
00343         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("version"), select_version, 0},
00344         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("status"), select_msg_response_status, 0},
00345         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("code"), select_msg_response_status, 0},
00346         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("reason"), select_msg_response_reason, 0},
00347 
00348         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("proxy_authorization"), select_auth, CONSUME_NEXT_STR | DIVERSION | SEL_AUTH_PROXY | FIXUP_CALL},
00349         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("authorization"), select_auth, CONSUME_NEXT_STR | DIVERSION | SEL_AUTH_WWW | FIXUP_CALL}, 
00350         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("username"), select_auth_username, DIVERSION | SEL_AUTH_USERNAME},
00351         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("realm"), select_auth_param, DIVERSION | SEL_AUTH_REALM},
00352         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("nonce"), select_auth_param, DIVERSION | SEL_AUTH_NONCE},
00353         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_auth_param, DIVERSION | SEL_AUTH_URI},
00354         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("cnonce"), select_auth_param, DIVERSION | SEL_AUTH_CNONCE},
00355         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("nc"), select_auth_param, DIVERSION | SEL_AUTH_NC},
00356         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("response"), select_auth_param, DIVERSION | SEL_AUTH_RESPONSE},
00357         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("opaque"), select_auth_param, DIVERSION | SEL_AUTH_OPAQUE},
00358         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("algorithm"), select_auth_param, DIVERSION | SEL_AUTH_ALG},
00359         { select_auth, SEL_PARAM_STR, STR_STATIC_INIT("qop"), select_auth_param, DIVERSION | SEL_AUTH_QOP},
00360         { select_auth_username, SEL_PARAM_STR, STR_STATIC_INIT("user"), select_auth_username_comp, DIVERSION | SEL_AUTH_USER},
00361         { select_auth_username, SEL_PARAM_STR, STR_STATIC_INIT("domain"), select_auth_username_comp, DIVERSION | SEL_AUTH_DOMAIN},
00362 
00363         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("src"), select_src, SEL_PARAM_EXPECTED},
00364         { select_src, SEL_PARAM_STR, STR_STATIC_INIT("ip"), select_ip_port, DIVERSION | SEL_SRC | SEL_IP},
00365         { select_src, SEL_PARAM_STR, STR_STATIC_INIT("port"), select_ip_port, DIVERSION | SEL_SRC | SEL_PORT},
00366         { select_src, SEL_PARAM_STR, STR_STATIC_INIT("ip_port"), select_ip_port, DIVERSION | SEL_SRC | SEL_IP_PORT},
00367         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("dst"), select_dst, SEL_PARAM_EXPECTED},
00368         { select_dst, SEL_PARAM_STR, STR_STATIC_INIT("ip"), select_ip_port, DIVERSION | SEL_DST | SEL_IP},
00369         { select_dst, SEL_PARAM_STR, STR_STATIC_INIT("port"), select_ip_port, DIVERSION | SEL_DST | SEL_PORT},
00370         { select_dst, SEL_PARAM_STR, STR_STATIC_INIT("ip_port"), select_ip_port, DIVERSION | SEL_DST | SEL_IP_PORT},
00371         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("received"), select_rcv, SEL_PARAM_EXPECTED},
00372         { select_rcv, SEL_PARAM_STR, STR_STATIC_INIT("proto"), select_ip_port, DIVERSION | SEL_RCV | SEL_PROTO},
00373         { select_rcv, SEL_PARAM_STR, STR_STATIC_INIT("ip"), select_ip_port, DIVERSION | SEL_RCV | SEL_IP},
00374         { select_rcv, SEL_PARAM_STR, STR_STATIC_INIT("port"), select_ip_port, DIVERSION | SEL_RCV | SEL_PORT},
00375         { select_rcv, SEL_PARAM_STR, STR_STATIC_INIT("ip_port"), select_ip_port, DIVERSION | SEL_RCV | SEL_IP_PORT},
00376         { select_rcv, SEL_PARAM_STR, STR_STATIC_INIT("proto_ip_port"), select_ip_port, DIVERSION | SEL_RCV | SEL_PROTO | SEL_IP_PORT},
00377 
00378         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("call_id"), select_call_id, 0},
00379         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("expires"), select_expires, 0},
00380         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("max_forwards"), select_max_forwards, 0},
00381         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("content_type"), select_content_type, 0},
00382         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("content_length"), select_content_length, 0},
00383         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("subject"), select_subject, 0},
00384         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("organization"), select_organization, 0},
00385         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("priority"), select_priority, 0},
00386         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("session_expires"), select_session_expires, 0},
00387         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("min_se"), select_min_se, 0},
00388         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("user_agent"), select_user_agent, 0},
00389         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("sip_if_match"), select_sip_if_match, 0},
00390 
00391         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("sys"), select_sys, SEL_PARAM_EXPECTED},
00392         { select_sys, SEL_PARAM_STR, STR_STATIC_INIT("pid"), select_sys_pid, 0},
00393         { select_sys, SEL_PARAM_STR, STR_STATIC_INIT("unique"), select_sys_unique, 0},
00394         { select_sys, SEL_PARAM_STR, STR_STATIC_INIT("now"), select_sys_now, 0},
00395         { select_sys_now, SEL_PARAM_STR, STR_STATIC_INIT("local"), select_sys_now_fmt, OPTIONAL | CONSUME_NEXT_STR | DIVERSION | SEL_NOW_LOCAL},
00396         { select_sys_now, SEL_PARAM_STR, STR_STATIC_INIT("gmt"), select_sys_now_fmt, OPTIONAL | CONSUME_NEXT_STR | DIVERSION | SEL_NOW_GMT},
00397         { select_sys_now, SEL_PARAM_STR, STR_STATIC_INIT("utc"), select_sys_now_fmt, OPTIONAL | CONSUME_NEXT_STR | DIVERSION | SEL_NOW_GMT},
00398         { select_sys, SEL_PARAM_STR, STR_STATIC_INIT("server_id"), select_sys_server_id, 0},
00399 
00400         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("branch"), select_branch, SEL_PARAM_EXPECTED},
00401         { select_branch, SEL_PARAM_STR, STR_STATIC_INIT("count"), select_branch_count, 0},
00402         { select_branch, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_branch_uri, OPTIONAL | CONSUME_NEXT_INT | DIVERSION | SEL_BRANCH_URI },
00403         { select_branch, SEL_PARAM_STR, STR_STATIC_INIT("dst_uri"), select_branch_dst_uri, OPTIONAL | CONSUME_NEXT_INT | DIVERSION | SEL_BRANCH_DST_URI},
00404         { select_branch_uri, SEL_PARAM_STR, STR_NULL, select_any_uri, NESTED},
00405         { select_branch_dst_uri, SEL_PARAM_STR, STR_NULL, select_any_uri, NESTED},
00406         { select_branch, SEL_PARAM_STR, STR_STATIC_INIT("uriq"), select_branch_uriq, OPTIONAL | CONSUME_NEXT_INT | DIVERSION | SEL_BRANCH_URI | SEL_BRANCH_Q},
00407         { select_branch_uriq, SEL_PARAM_STR, STR_NULL, select_any_nameaddr, NESTED},
00408         { select_branch, SEL_PARAM_STR, STR_STATIC_INIT("q"), select_branch_q, OPTIONAL | CONSUME_NEXT_INT | DIVERSION | SEL_BRANCH_Q},
00409 
00410         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("date"), select_date, 0},
00411         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("identity"), select_identity, 0},
00412         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("identity_info"), select_identity_info, 0},
00413 
00414         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("cfg_get"), select_cfg_var1, SEL_PARAM_EXPECTED | CONSUME_NEXT_STR},
00415         { select_cfg_var1, SEL_PARAM_STR, STR_NULL, select_cfg_var, FIXUP_CALL },
00416         { NULL, SEL_PARAM_STR, STR_STATIC_INIT("cfg_selected"), cfg_selected_inst, CONSUME_NEXT_STR | FIXUP_CALL },
00417 
00418         { select_cfg_var, SEL_PARAM_STR, STR_STATIC_INIT("nameaddr"), select_any_nameaddr, NESTED | CONSUME_NEXT_STR},
00419         { select_cfg_var, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_any_uri, NESTED | CONSUME_NEXT_STR},
00420         { select_cfg_var, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_anyheader_params, NESTED},
00421 
00422         { NULL, SEL_PARAM_INT, STR_NULL, NULL, 0}
00423 };
00424 
00425 static select_table_t select_core_table = {select_core, NULL};
00426 
00427 #endif // _SELECT_CORE_H

Generated on Tue May 22 2012 13:10:15 for SIP Router by  doxygen 1.7.1