00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
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},
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
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