diff --git a/scenarios/invite_emergency/0001_test.yml.tt2 b/scenarios/invite_emergency/0001_test.yml.tt2 new file mode 100644 index 00000000..96c56d3f --- /dev/null +++ b/scenarios/invite_emergency/0001_test.yml.tt2 @@ -0,0 +1,60 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_INVITE: + - start|ROUTE_LOAD_CALLEE_DOMAIN_PREF: + - start|ROUTE_CLEAR_CALLEE_DOMAIN_PREF: + - return|ROUTE_CLEAR_CALLEE_DOMAIN_PREF: + - return|ROUTE_LOAD_CALLEE_DOMAIN_PREF: + - start|ROUTE_FIND_CALLER: + - start|ROUTE_AUTH: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'INVITE sip:112@spce.test SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Contact: sip:testuser1002@127.126.0.1:\d+' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'P-NGCP-Src-Ip: 127.126.0.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:127.0.0.1:5060' + - 'P-LB-Uptime: \d+' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'SIP/2.0 407 Proxy Authentication Required', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'Proxy-Authenticate: Digest realm="spce.test", nonce=".+"', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] diff --git a/scenarios/invite_emergency/0003_test.yml.tt2 b/scenarios/invite_emergency/0003_test.yml.tt2 new file mode 100644 index 00000000..6a6986af --- /dev/null +++ b/scenarios/invite_emergency/0003_test.yml.tt2 @@ -0,0 +1,223 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_INVITE: + - start|ROUTE_LOAD_CALLEE_DOMAIN_PREF: + - start|ROUTE_CLEAR_CALLEE_DOMAIN_PREF: + - return|ROUTE_CLEAR_CALLEE_DOMAIN_PREF: + - return|ROUTE_LOAD_CALLEE_DOMAIN_PREF: + - start|ROUTE_FIND_CALLER: + - start|ROUTE_AUTH: + - start|ROUTE_AUTH_HELPER: + - return|ROUTE_AUTH_HELPER: + - start|ROUTE_ADD_CALLINFO_REPLY: + - start|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - return|ROUTE_ADD_CALLINFO_REPLY: + - return|ROUTE_AUTH: + - return|ROUTE_FIND_CALLER: + - start|ROUTE_LOAD_CALLER_PREF: + - start|ROUTE_CLEAR_CALLER_PREF: + - return|ROUTE_CLEAR_CALLER_PREF: + - start|ROUTE_CHECK_UA: + - return|ROUTE_CHECK_UA: + - start|ROUTE_LOAD_CALLER_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLER_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLER_PREF: + - start|ROUTE_DLG_MANAGE: + - return|ROUTE_DLG_MANAGE: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_GET_CALLER_CLI: + - return|ROUTE_GET_CALLER_CLI: + - start|ROUTE_GET_FORWARDER_CLI: + - return|ROUTE_GET_FORWARDER_CLI: + - start|ROUTE_APPLY_CALLER_RWR: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_CALLER_RWR: + - start|ROUTE_CLIR: + - return|ROUTE_CLIR: + - start|ROUTE_CALLER_BLOCK_CLI: + - return|ROUTE_CALLER_BLOCK_CLI: + - start|ROUTE_CHECK_USERPROV_CLI: + - start|ROUTE_CHECK_CLI_ALLOWED: + - return|ROUTE_CHECK_CLI_ALLOWED: + - return|ROUTE_CHECK_USERPROV_CLI: + - start|ROUTE_FIND_CALLEE: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - start|ROUTE_EMERGENCY: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_CHECK_PBX: + - return|ROUTE_CHECK_PBX: + - start|ROUTE_PSTN: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_PSTN_SELECT_PEER: + $avp(lua_dlg_profile): [ + "outgoing", + "emergency" + ] + - start|ROUTE_CHECK_PEER_PROBE: + - return|ROUTE_CHECK_PEER_PROBE: + - start|ROUTE_CLEAR_PEER_OUT_PREF: + - return|ROUTE_CLEAR_PEER_OUT_PREF: + - start|ROUTE_LOAD_PEER_OUT_PREF: + - return|ROUTE_LOAD_PEER_OUT_PREF: + - return|ROUTE_PSTN_SELECT_PEER: + - start|ROUTE_OUTBOUND: + $avp(lua_dlg_profile): [ + "relay", + "peerout:[% peer_00_host0.id %]", + "peer:[% peer_00_host0.id %]", + "outgoing", + "emergency" + ] + - start|ROUTE_ACC_CALLER: + - start|ROUTE_SET_ACC_CALLER_CALL_COUNTERS: + - return|ROUTE_SET_ACC_CALLER_CALL_COUNTERS: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_ACC_CALLER: + - start|ROUTE_ACC_CALLEE: + - start|ROUTE_SET_ACC_CALLEE_CALL_COUNTERS: + - return|ROUTE_SET_ACC_CALLEE_CALL_COUNTERS: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_ACC_CALLEE: + - start|ROUTE_ADD_AOC_HEADER: + - return|ROUTE_ADD_AOC_HEADER: + - start|BRANCH_ROUTE_SBC: + - start|ROUTE_SET_BRANCH_HDRS: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - return|ROUTE_SET_BRANCH_HDRS: + - start|ROUTE_BRANCH_ACC_RTP: + - return|ROUTE_BRANCH_ACC_RTP: + - start|ROUTE_FILTER_PRACK: + - return|ROUTE_FILTER_PRACK: + - start|ROUTE_PREPARE_SST: + - return|ROUTE_PREPARE_SST: + - start|ROUTE_PREPARE_MOH: + - return|ROUTE_PREPARE_MOH: + - start|ROUTE_SET_CALLER_CLI: + - start|ROUTE_APPLY_CALLER_RWR_FIRST: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_CALLER_RWR_FIRST: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_SET_CALLER_CLI: + - start|ROUTE_SET_CALLEE: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_SET_CALLEE: + - start|ROUTE_ADD_CALLINFO: + - start|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - start|ROUTE_ADD_CALLINFO_CALLEE_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLEE_PRIMARY: + - return|ROUTE_ADD_CALLINFO: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - return|BRANCH_ROUTE_SBC: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: + $avp(lua_dlg_profile): [ + "relay", + "peerout:[% peer_00_host0.id %]", + "peer:[% peer_00_host0.id %]", + "outgoing", + "emergency" + ] +sip_in: + - 'INVITE sip:112@spce.test SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Contact: sip:testuser1002@127.126.0.1:\d+' + - 'Proxy-Authorization: Digest username="testuser1002",realm="spce.test",uri="sip:127.0.0.1:5060",nonce=".+",response=".+",algorithm=MD5' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'P-NGCP-Src-Ip: 127.126.0.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:127.0.0.1:5060' + - 'P-LB-Uptime: \d+' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'SIP/2.0 101 Connecting', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'P-NGCP-Authorization: testuser1002@spce.test', + 'P-NGCP-Authorized: 1', + 'P-NGCP-Caller-Info: ;ip=127.126.0.1;port=\d+;primary=4311002', + 'P-Caller-UUID: [% spce_test.testuser1002.uuid %]', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'INVITE sip:E1112@127.0.2.1:\d+;transport=udp SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'Contact: sip:testuser1002@127.126.0.1:\d+', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-LB-Uptime: \d+', + 'P-Asserted-Identity: ', + 'P-Caller-UUID: [% spce_test.testuser1002.uuid %]', + 'P-Callee-UUID: 0', + 'P-Called-Party-ID: ', + 'P-App-Param: ;calltimer=21600;aleg_sst_enable=no;sst_enable=no;hold_alter_b2b_bleg=no;hold_alter_b2b_aleg=no', + 'P-App-Name: sbc', + 'P-NGCP-Caller-Info: ;ip=127.126.0.1;port=\d+;primary=4311002', + 'P-NGCP-Callee-Info: ;ip=127.0.2.1;port=\d+', + 'P-D-Uri: sip:127.0.0.1:5060;received=sip:127.0.2.1:\d+%3blr%3btransport%3dudp', + 'P-Proxy-Uri: sip:127.0.0.1:5062', + ] diff --git a/scenarios/invite_emergency/0005_test.yml.tt2 b/scenarios/invite_emergency/0005_test.yml.tt2 new file mode 100644 index 00000000..a9f2f01b --- /dev/null +++ b/scenarios/invite_emergency/0005_test.yml.tt2 @@ -0,0 +1,50 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_LEG_B: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'INVITE sip:E1112@127.0.2.1:\d+;transport=udp SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'P-LB-Uptime: \d+' + - 'P-Asserted-Identity: ' + - 'P-Caller-UUID: [% spce_test.testuser1002.uuid %]' + - 'P-NGCP-Caller-Info: ;ip=127.126.0.1;port=\d+;primary=4311002' + - 'P-NGCP-Callee-Info: ;ip=127.0.2.1;port=\d+' + - 'P-D-Uri: sip:127.0.0.1:5060;received=sip:127.0.2.1:\d+%3blr%3btransport%3dudp' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'Contact: ' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'INVITE sip:E1112@127.0.2.1:\d+;transport=udp SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-LB-Uptime: \d+', + 'P-Asserted-Identity: ', + 'P-Caller-UUID: [% spce_test.testuser1002.uuid %]', + 'P-NGCP-Caller-Info: ;ip=127.126.0.1;port=\d+;primary=4311002', + 'P-NGCP-Callee-Info: ;ip=127.0.2.1;port=\d+', + 'P-D-Uri: sip:127.0.0.1:5060;received=sip:127.0.2.1:\d+%3blr%3btransport%3dudp', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'Contact: ', + ] diff --git a/scenarios/invite_emergency/0007_test.yml.tt2 b/scenarios/invite_emergency/0007_test.yml.tt2 new file mode 100644 index 00000000..15dda26d --- /dev/null +++ b/scenarios/invite_emergency/0007_test.yml.tt2 @@ -0,0 +1,27 @@ +flow: + - start|DEFAULT_ONREPLY: + - return|DEFAULT_ONREPLY: +sip_in: + - 'SIP/2.0 180 Ringing' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Content-Length: 0' + - 'P-NGCP-Src-Ip: 127.0.2.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' +sip_out: + - [ + 'SIP/2.0 180 Ringing', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Length: 0', + 'P-NGCP-Src-Ip: 127.0.2.1', + 'P-NGCP-Src-Port: \d+', + 'P-NGCP-Src-Proto: udp', + 'P-NGCP-Src-Af: 4', + ] diff --git a/scenarios/invite_emergency/0008_test.yml.tt2 b/scenarios/invite_emergency/0008_test.yml.tt2 new file mode 100644 index 00000000..e3f377fc --- /dev/null +++ b/scenarios/invite_emergency/0008_test.yml.tt2 @@ -0,0 +1,31 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 180 Ringing' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Content-Length: 0' +sip_out: + - [ + 'SIP/2.0 180 Ringing', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Length: 0', + 'P-Out-Socket: udp:127.0.0.1:5060', + ] diff --git a/scenarios/invite_emergency/0009_test.yml.tt2 b/scenarios/invite_emergency/0009_test.yml.tt2 new file mode 100644 index 00000000..cec2c5e7 --- /dev/null +++ b/scenarios/invite_emergency/0009_test.yml.tt2 @@ -0,0 +1,31 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|dialog:start: + - return|dialog:start: + - return|dialog:start: +sip_in: + - 'SIP/2.0 200 OK' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'P-NGCP-Src-Ip: 127.0.2.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' +sip_out: + - [ + 'SIP/2.0 200 OK', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-NGCP-Src-Ip: 127.0.2.1', + 'P-NGCP-Src-Port: \d+', + 'P-NGCP-Src-Proto: udp', + 'P-NGCP-Src-Af: 4', + ] diff --git a/scenarios/invite_emergency/0010_test.yml.tt2 b/scenarios/invite_emergency/0010_test.yml.tt2 new file mode 100644 index 00000000..c886d819 --- /dev/null +++ b/scenarios/invite_emergency/0010_test.yml.tt2 @@ -0,0 +1,44 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|REPLY_ROUTE_RTPENGINE: + - return|REPLY_ROUTE_RTPENGINE: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - start|dialog:start: + - return|dialog:start: + $avp(lua_dlg_profile): [ + "relay", + "peerout:[% peer_00_host0.id %]", + "peer:[% peer_00_host0.id %]", + "outgoing", + "emergency" + ] + - return|dialog:start: +sip_in: + - 'SIP/2.0 200 OK' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' +sip_out: + - [ + 'SIP/2.0 200 OK', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-Out-Socket: udp:127.0.0.1:5060', + ] diff --git a/scenarios/invite_emergency/0011_test.yml.tt2 b/scenarios/invite_emergency/0011_test.yml.tt2 new file mode 100644 index 00000000..4b1ef185 --- /dev/null +++ b/scenarios/invite_emergency/0011_test.yml.tt2 @@ -0,0 +1,53 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_RESTORE_CLUSTERSET: + - start|ROUTE_WITHINDLG_RTPENGINE: + - return|ROUTE_WITHINDLG_RTPENGINE: + - start|ROUTE_OUTBOUND: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ ACK' + - 'Contact: sip:testuser1002@127.126.0.1:\d+' + - 'Content-Length: 0' + - 'P-NGCP-Src-Ip: 127.126.0.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:127.0.0.1:5060' + - 'P-LB-Uptime: \d+' +sip_out: + - [ + 'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ ACK', + 'Contact: sip:testuser1002@127.126.0.1:\d+', + 'Content-Length: 0', + 'P-NGCP-Src-Ip: 127.126.0.1', + 'P-NGCP-Src-Port: \d+', + 'P-NGCP-Src-Proto: udp', + 'P-NGCP-Src-Af: 4', + 'P-Sock-Info: udp:127.0.0.1:5060', + 'P-LB-Uptime: \d+', + ] diff --git a/scenarios/invite_emergency/0012_test.yml.tt2 b/scenarios/invite_emergency/0012_test.yml.tt2 new file mode 100644 index 00000000..8b545226 --- /dev/null +++ b/scenarios/invite_emergency/0012_test.yml.tt2 @@ -0,0 +1,37 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|ROUTE_OUTBOUND: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'ACK sip:127.0.2.1:\d+;transport=UDP SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ ACK' + - 'Content-Length: 0' + - 'Contact: ' +sip_out: + - [ + 'ACK sip:127.0.2.1:\d+;transport=UDP SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ ACK', + 'Content-Length: 0', + 'Contact: ', + ] diff --git a/scenarios/invite_emergency/0013_test.yml.tt2 b/scenarios/invite_emergency/0013_test.yml.tt2 new file mode 100644 index 00000000..b176074d --- /dev/null +++ b/scenarios/invite_emergency/0013_test.yml.tt2 @@ -0,0 +1,64 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|dialog:end: + - return|dialog:end: + $avp(lua_dlg_profile): None + - return|dialog:end: + - start|ROUTE_STOP_RTPPROXY: + - start|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_STOP_RTPPROXY: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|ROUTE_OUTBOUND: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'BYE sip:127.0.0.1:508[08];prxroute=1 SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'Contact: sip:testuser1002@127.126.0.1:\d+' + - 'Content-Length: 0' + - 'P-NGCP-Src-Ip: 127.126.0.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:127.0.0.1:5060' + - 'P-LB-Uptime: \d+' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'BYE sip:127.0.0.1:508[08];prxroute=1 SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'Contact: sip:testuser1002@127.126.0.1:\d+', + 'Content-Length: 0', + 'P-LB-Uptime: \d+', + 'P-Asserted-Identity: ', + ] diff --git a/scenarios/invite_emergency/0014_test.yml.tt2 b/scenarios/invite_emergency/0014_test.yml.tt2 new file mode 100644 index 00000000..cd24df62 --- /dev/null +++ b/scenarios/invite_emergency/0014_test.yml.tt2 @@ -0,0 +1,52 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|dialog:end: + - return|dialog:end: + - return|dialog:end: + - start|ROUTE_STOP_RTPPROXY: + - return|ROUTE_STOP_RTPPROXY: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|ROUTE_OUTBOUND: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'BYE sip:127.0.2.1:\d+;transport=UDP SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'P-LB-Uptime: \d+' + - 'P-Asserted-Identity: ' + - 'Content-Length: 0' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'BYE sip:127.0.2.1:\d+;transport=UDP SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'P-LB-Uptime: \d+', + 'P-Asserted-Identity: ', + 'Content-Length: 0', + ] diff --git a/scenarios/invite_emergency/0015_test.yml.tt2 b/scenarios/invite_emergency/0015_test.yml.tt2 new file mode 100644 index 00000000..a0fe5f8a --- /dev/null +++ b/scenarios/invite_emergency/0015_test.yml.tt2 @@ -0,0 +1,38 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 200 OK' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'Contact: ' + - 'Content-Length: \s+0' + - 'P-NGCP-Src-Ip: 127.0.2.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' +sip_out: + - [ + 'SIP/2.0 200 OK', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'Contact: ', + 'Content-Length: \s+0', + 'P-NGCP-Src-Ip: 127.0.2.1', + 'P-NGCP-Src-Port: \d+', + 'P-NGCP-Src-Proto: udp', + 'P-NGCP-Src-Af: 4', + ] diff --git a/scenarios/invite_emergency/0016_test.yml.tt2 b/scenarios/invite_emergency/0016_test.yml.tt2 new file mode 100644 index 00000000..a0adecbd --- /dev/null +++ b/scenarios/invite_emergency/0016_test.yml.tt2 @@ -0,0 +1,29 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 200 OK' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'Content-Length: 0' +sip_out: + - [ + 'SIP/2.0 200 OK', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'Content-Length: 0', + 'P-Out-Socket: udp:127.0.0.1:5060', + ] diff --git a/scenarios/invite_emergency/cdr_test.yml.tt2 b/scenarios/invite_emergency/cdr_test.yml.tt2 new file mode 100644 index 00000000..2fae4fa9 --- /dev/null +++ b/scenarios/invite_emergency/cdr_test.yml.tt2 @@ -0,0 +1,12 @@ +--- +cdr: + - source_user: 'testuser1002' + source_domain: 'spce.test' + source_cli: '4311002' + destination_user: 'emergency_112' + destination_domain: '127.0.2.1' + destination_user_dialed: '112' + destination_user_out: 'E1112' + call_type: 'call' + call_status: 'ok' + call_code: '200' \ No newline at end of file diff --git a/scenarios/invite_emergency/media181sec.pcap b/scenarios/invite_emergency/media181sec.pcap new file mode 120000 index 00000000..d95ed875 --- /dev/null +++ b/scenarios/invite_emergency/media181sec.pcap @@ -0,0 +1 @@ +../media181sec.pcap \ No newline at end of file diff --git a/scenarios/invite_emergency/peer.yml b/scenarios/invite_emergency/peer.yml new file mode 100644 index 00000000..4a462cc2 --- /dev/null +++ b/scenarios/invite_emergency/peer.yml @@ -0,0 +1,27 @@ +--- +peer_00: + contact: + company: peer_00 + email: peer_00@host0.not + contract: + billing_profile_id: 1 + status: active + type: sippeering + groups: + - name: peer_00_group + priority: 1 + description: + rules: + - group_id: peer_00_group + callee_prefix: "" + callee_pattern: '' + caller_pattern: '^sip:.+@spce.test' + description: "" + hosts: + - group_id: peer_00_group + name: peer_00_host0 + ip: 127.0.2.1 + port: 51602 + host: + transport: 1 + weight: 1 diff --git a/scenarios/invite_emergency/prefs.json b/scenarios/invite_emergency/prefs.json new file mode 100644 index 00000000..4df20d76 --- /dev/null +++ b/scenarios/invite_emergency/prefs.json @@ -0,0 +1,10 @@ +{ + "@spce.test": { + "emergency_prefix": "E", + "rewrite_rule_set": "rw_00" + }, + "peer_00_host0": { + "rewrite_rule_set": "rw_01", + "concurrent_max": 0 + } +} diff --git a/scenarios/invite_emergency/rewrite.yml b/scenarios/invite_emergency/rewrite.yml new file mode 100644 index 00000000..15e56e2e --- /dev/null +++ b/scenarios/invite_emergency/rewrite.yml @@ -0,0 +1,15 @@ +--- +rw_00: + - direction: in + field: callee + match_pattern: '^(911|112)$' + replace_pattern: 'emergency_\1' + priority: 1 + description: Tag Emergency Numbers +rw_01: + - direction: out + field: callee + match_pattern: '^emergency_(.+)$' + replace_pattern: '${caller_emergency_prefix}${caller_ac}\1' + priority: 1 + description: Normalize Emergency Numbers diff --git a/scenarios/invite_emergency/scenario.yml b/scenarios/invite_emergency/scenario.yml new file mode 100644 index 00000000..7e61bf29 --- /dev/null +++ b/scenarios/invite_emergency/scenario.yml @@ -0,0 +1,35 @@ +--- +test_uuid: invite_emergency +description: simple emergency call to a peer +domains: + 'spce.test': + reseller_id: 1 +customers: + 'customer.test': + contacts: + - email: "customer.test@spce.test" + reseller_id: 1 + details: + status: 'active' + type: 'sipaccount' + billing_profile_id: 1 + reseller_id: 1 +subscribers: + spce.test: + testuser1002: + customer: 'customer.test' + password: testuser + cc: 43 + ac: 1 + sn: 1002 +scenarios: + - ip: 127.126.0.1 + username: testuser1002 + domain: spce.test + responders: + - ip: 127.0.2.1 + number: 112 + username: 112 + domain: spce.test + peer_host: peer_00_host0 + register: 'no' diff --git a/scenarios/invite_emergency/sipp_scenario00.xml b/scenarios/invite_emergency/sipp_scenario00.xml new file mode 100644 index 00000000..750a70e4 --- /dev/null +++ b/scenarios/invite_emergency/sipp_scenario00.xml @@ -0,0 +1,146 @@ + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 1 INVITE + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 8 + a=rtpmap:8 PCMA/8000 + a=ptime:50 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 1 ACK + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 2 INVITE + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + [field1 file="caller.csv" line=0] + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 8 + a=rtpmap:8 PCMA/8000 + a=ptime:50 + + ]]> + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + [routes] + CSeq: 2 ACK + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 3 BYE + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + [routes] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + diff --git a/scenarios/invite_emergency/sipp_scenario_responder00.xml b/scenarios/invite_emergency/sipp_scenario_responder00.xml new file mode 100644 index 00000000..da77f415 --- /dev/null +++ b/scenarios/invite_emergency/sipp_scenario_responder00.xml @@ -0,0 +1,78 @@ + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 8 + a=rtpmap:8 PCMA/8000 + a=ptime:50 + + ]]> + + + + + + + + + + + Content-Length: [len] + + ]]> + + + + + + + diff --git a/scenarios/invite_emergency_cirpack/0001_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0001_test.yml.tt2 new file mode 100644 index 00000000..96c56d3f --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0001_test.yml.tt2 @@ -0,0 +1,60 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_INVITE: + - start|ROUTE_LOAD_CALLEE_DOMAIN_PREF: + - start|ROUTE_CLEAR_CALLEE_DOMAIN_PREF: + - return|ROUTE_CLEAR_CALLEE_DOMAIN_PREF: + - return|ROUTE_LOAD_CALLEE_DOMAIN_PREF: + - start|ROUTE_FIND_CALLER: + - start|ROUTE_AUTH: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'INVITE sip:112@spce.test SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Contact: sip:testuser1002@127.126.0.1:\d+' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'P-NGCP-Src-Ip: 127.126.0.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:127.0.0.1:5060' + - 'P-LB-Uptime: \d+' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'SIP/2.0 407 Proxy Authentication Required', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'Proxy-Authenticate: Digest realm="spce.test", nonce=".+"', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] diff --git a/scenarios/invite_emergency_cirpack/0003_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0003_test.yml.tt2 new file mode 100644 index 00000000..6a6986af --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0003_test.yml.tt2 @@ -0,0 +1,223 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_INVITE: + - start|ROUTE_LOAD_CALLEE_DOMAIN_PREF: + - start|ROUTE_CLEAR_CALLEE_DOMAIN_PREF: + - return|ROUTE_CLEAR_CALLEE_DOMAIN_PREF: + - return|ROUTE_LOAD_CALLEE_DOMAIN_PREF: + - start|ROUTE_FIND_CALLER: + - start|ROUTE_AUTH: + - start|ROUTE_AUTH_HELPER: + - return|ROUTE_AUTH_HELPER: + - start|ROUTE_ADD_CALLINFO_REPLY: + - start|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - return|ROUTE_ADD_CALLINFO_REPLY: + - return|ROUTE_AUTH: + - return|ROUTE_FIND_CALLER: + - start|ROUTE_LOAD_CALLER_PREF: + - start|ROUTE_CLEAR_CALLER_PREF: + - return|ROUTE_CLEAR_CALLER_PREF: + - start|ROUTE_CHECK_UA: + - return|ROUTE_CHECK_UA: + - start|ROUTE_LOAD_CALLER_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLER_CONTRACT_PREF: + - return|ROUTE_LOAD_CALLER_PREF: + - start|ROUTE_DLG_MANAGE: + - return|ROUTE_DLG_MANAGE: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_GET_CALLER_CLI: + - return|ROUTE_GET_CALLER_CLI: + - start|ROUTE_GET_FORWARDER_CLI: + - return|ROUTE_GET_FORWARDER_CLI: + - start|ROUTE_APPLY_CALLER_RWR: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_CALLER_RWR: + - start|ROUTE_CLIR: + - return|ROUTE_CLIR: + - start|ROUTE_CALLER_BLOCK_CLI: + - return|ROUTE_CALLER_BLOCK_CLI: + - start|ROUTE_CHECK_USERPROV_CLI: + - start|ROUTE_CHECK_CLI_ALLOWED: + - return|ROUTE_CHECK_CLI_ALLOWED: + - return|ROUTE_CHECK_USERPROV_CLI: + - start|ROUTE_FIND_CALLEE: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - start|ROUTE_EMERGENCY: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_CHECK_PBX: + - return|ROUTE_CHECK_PBX: + - start|ROUTE_PSTN: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_CNT_DLG_CHECK: + - return|ROUTE_CNT_DLG_CHECK: + - start|ROUTE_PSTN_SELECT_PEER: + $avp(lua_dlg_profile): [ + "outgoing", + "emergency" + ] + - start|ROUTE_CHECK_PEER_PROBE: + - return|ROUTE_CHECK_PEER_PROBE: + - start|ROUTE_CLEAR_PEER_OUT_PREF: + - return|ROUTE_CLEAR_PEER_OUT_PREF: + - start|ROUTE_LOAD_PEER_OUT_PREF: + - return|ROUTE_LOAD_PEER_OUT_PREF: + - return|ROUTE_PSTN_SELECT_PEER: + - start|ROUTE_OUTBOUND: + $avp(lua_dlg_profile): [ + "relay", + "peerout:[% peer_00_host0.id %]", + "peer:[% peer_00_host0.id %]", + "outgoing", + "emergency" + ] + - start|ROUTE_ACC_CALLER: + - start|ROUTE_SET_ACC_CALLER_CALL_COUNTERS: + - return|ROUTE_SET_ACC_CALLER_CALL_COUNTERS: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_ACC_CALLER: + - start|ROUTE_ACC_CALLEE: + - start|ROUTE_SET_ACC_CALLEE_CALL_COUNTERS: + - return|ROUTE_SET_ACC_CALLEE_CALL_COUNTERS: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_ACC_CALLEE: + - start|ROUTE_ADD_AOC_HEADER: + - return|ROUTE_ADD_AOC_HEADER: + - start|BRANCH_ROUTE_SBC: + - start|ROUTE_SET_BRANCH_HDRS: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - return|ROUTE_SET_BRANCH_HDRS: + - start|ROUTE_BRANCH_ACC_RTP: + - return|ROUTE_BRANCH_ACC_RTP: + - start|ROUTE_FILTER_PRACK: + - return|ROUTE_FILTER_PRACK: + - start|ROUTE_PREPARE_SST: + - return|ROUTE_PREPARE_SST: + - start|ROUTE_PREPARE_MOH: + - return|ROUTE_PREPARE_MOH: + - start|ROUTE_SET_CALLER_CLI: + - start|ROUTE_APPLY_CALLER_RWR_FIRST: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_CALLER_RWR_FIRST: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - start|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_PREPARE_CALLER_CLI: + - return|ROUTE_SET_CALLER_CLI: + - start|ROUTE_SET_CALLEE: + - start|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_APPLY_REWRITE_RULE: + - return|ROUTE_SET_CALLEE: + - start|ROUTE_ADD_CALLINFO: + - start|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLER_PRIMARY: + - start|ROUTE_ADD_CALLINFO_CALLEE_PRIMARY: + - return|ROUTE_ADD_CALLINFO_CALLEE_PRIMARY: + - return|ROUTE_ADD_CALLINFO: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - return|BRANCH_ROUTE_SBC: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: + $avp(lua_dlg_profile): [ + "relay", + "peerout:[% peer_00_host0.id %]", + "peer:[% peer_00_host0.id %]", + "outgoing", + "emergency" + ] +sip_in: + - 'INVITE sip:112@spce.test SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'Contact: sip:testuser1002@127.126.0.1:\d+' + - 'Proxy-Authorization: Digest username="testuser1002",realm="spce.test",uri="sip:127.0.0.1:5060",nonce=".+",response=".+",algorithm=MD5' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'P-NGCP-Src-Ip: 127.126.0.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:127.0.0.1:5060' + - 'P-LB-Uptime: \d+' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'SIP/2.0 101 Connecting', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'P-NGCP-Authorization: testuser1002@spce.test', + 'P-NGCP-Authorized: 1', + 'P-NGCP-Caller-Info: ;ip=127.126.0.1;port=\d+;primary=4311002', + 'P-Caller-UUID: [% spce_test.testuser1002.uuid %]', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'INVITE sip:E1112@127.0.2.1:\d+;transport=udp SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'Contact: sip:testuser1002@127.126.0.1:\d+', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-LB-Uptime: \d+', + 'P-Asserted-Identity: ', + 'P-Caller-UUID: [% spce_test.testuser1002.uuid %]', + 'P-Callee-UUID: 0', + 'P-Called-Party-ID: ', + 'P-App-Param: ;calltimer=21600;aleg_sst_enable=no;sst_enable=no;hold_alter_b2b_bleg=no;hold_alter_b2b_aleg=no', + 'P-App-Name: sbc', + 'P-NGCP-Caller-Info: ;ip=127.126.0.1;port=\d+;primary=4311002', + 'P-NGCP-Callee-Info: ;ip=127.0.2.1;port=\d+', + 'P-D-Uri: sip:127.0.0.1:5060;received=sip:127.0.2.1:\d+%3blr%3btransport%3dudp', + 'P-Proxy-Uri: sip:127.0.0.1:5062', + ] diff --git a/scenarios/invite_emergency_cirpack/0005_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0005_test.yml.tt2 new file mode 100644 index 00000000..cd639a2d --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0005_test.yml.tt2 @@ -0,0 +1,54 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_LEG_B: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'INVITE sip:E1112@127.0.2.1:\d+;transport=udp SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ' + - 'CSeq: \d+ INVITE' + - 'P-LB-Uptime: \d+' + - 'P-Asserted-Identity: ' + - 'P-Caller-UUID: [% spce_test.testuser1002.uuid %]' + - 'P-NGCP-Caller-Info: ;ip=127.126.0.1;port=\d+;primary=4311002' + - 'P-NGCP-Callee-Info: ;ip=127.0.2.1;port=\d+' + - 'P-D-Uri: sip:127.0.0.1:5060;received=sip:127.0.2.1:\d+%3blr%3btransport%3dudp' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'Contact: ' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'INVITE sip:E1112@127.0.2.1:\d+;transport=udp SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ', + 'CSeq: \d+ INVITE', + 'P-LB-Uptime: \d+', + 'P-Asserted-Identity: ', + 'P-Caller-UUID: [% spce_test.testuser1002.uuid %]', + 'P-NGCP-Caller-Info: ;ip=127.126.0.1;port=\d+;primary=4311002', + 'P-NGCP-Callee-Info: ;ip=127.0.2.1;port=\d+', + 'P-D-Uri: sip:127.0.0.1:5060;received=sip:127.0.2.1:\d+%3blr%3btransport%3dudp', + 'Content-Type: multipart/mixed;boundary=\"unique-boundary-1\"', + 'Content-Length:\s+\d+', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Type: application/vnd\.cirpack\.isdn-ext', + 'Content-Disposition: signal;handling=required', + '7e Od 04 55 75 69 20 4d 61 6b 65 43 61 6c 6c', + ] diff --git a/scenarios/invite_emergency_cirpack/0007_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0007_test.yml.tt2 new file mode 100644 index 00000000..15dda26d --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0007_test.yml.tt2 @@ -0,0 +1,27 @@ +flow: + - start|DEFAULT_ONREPLY: + - return|DEFAULT_ONREPLY: +sip_in: + - 'SIP/2.0 180 Ringing' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Content-Length: 0' + - 'P-NGCP-Src-Ip: 127.0.2.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' +sip_out: + - [ + 'SIP/2.0 180 Ringing', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Length: 0', + 'P-NGCP-Src-Ip: 127.0.2.1', + 'P-NGCP-Src-Port: \d+', + 'P-NGCP-Src-Proto: udp', + 'P-NGCP-Src-Af: 4', + ] diff --git a/scenarios/invite_emergency_cirpack/0008_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0008_test.yml.tt2 new file mode 100644 index 00000000..e3f377fc --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0008_test.yml.tt2 @@ -0,0 +1,31 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 180 Ringing' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Content-Length: 0' +sip_out: + - [ + 'SIP/2.0 180 Ringing', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Length: 0', + 'P-Out-Socket: udp:127.0.0.1:5060', + ] diff --git a/scenarios/invite_emergency_cirpack/0009_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0009_test.yml.tt2 new file mode 100644 index 00000000..cec2c5e7 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0009_test.yml.tt2 @@ -0,0 +1,31 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|dialog:start: + - return|dialog:start: + - return|dialog:start: +sip_in: + - 'SIP/2.0 200 OK' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' + - 'P-NGCP-Src-Ip: 127.0.2.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' +sip_out: + - [ + 'SIP/2.0 200 OK', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-NGCP-Src-Ip: 127.0.2.1', + 'P-NGCP-Src-Port: \d+', + 'P-NGCP-Src-Proto: udp', + 'P-NGCP-Src-Af: 4', + ] diff --git a/scenarios/invite_emergency_cirpack/0010_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0010_test.yml.tt2 new file mode 100644 index 00000000..c886d819 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0010_test.yml.tt2 @@ -0,0 +1,44 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|REPLY_ROUTE_RTPENGINE: + - return|REPLY_ROUTE_RTPENGINE: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - start|dialog:start: + - return|dialog:start: + $avp(lua_dlg_profile): [ + "relay", + "peerout:[% peer_00_host0.id %]", + "peer:[% peer_00_host0.id %]", + "outgoing", + "emergency" + ] + - return|dialog:start: +sip_in: + - 'SIP/2.0 200 OK' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ INVITE' + - 'Contact: ' + - 'Content-Type: application/sdp' + - 'Content-Length:\s+\d+' +sip_out: + - [ + 'SIP/2.0 200 OK', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ INVITE', + 'Contact: ', + 'Content-Type: application/sdp', + 'Content-Length:\s+\d+', + 'P-Out-Socket: udp:127.0.0.1:5060', + ] diff --git a/scenarios/invite_emergency_cirpack/0011_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0011_test.yml.tt2 new file mode 100644 index 00000000..4b1ef185 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0011_test.yml.tt2 @@ -0,0 +1,53 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_RESTORE_CLUSTERSET: + - start|ROUTE_WITHINDLG_RTPENGINE: + - return|ROUTE_WITHINDLG_RTPENGINE: + - start|ROUTE_OUTBOUND: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ ACK' + - 'Contact: sip:testuser1002@127.126.0.1:\d+' + - 'Content-Length: 0' + - 'P-NGCP-Src-Ip: 127.126.0.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:127.0.0.1:5060' + - 'P-LB-Uptime: \d+' +sip_out: + - [ + 'ACK sip:127.0.0.1:508[08];prxroute=1 SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ ACK', + 'Contact: sip:testuser1002@127.126.0.1:\d+', + 'Content-Length: 0', + 'P-NGCP-Src-Ip: 127.126.0.1', + 'P-NGCP-Src-Port: \d+', + 'P-NGCP-Src-Proto: udp', + 'P-NGCP-Src-Af: 4', + 'P-Sock-Info: udp:127.0.0.1:5060', + 'P-LB-Uptime: \d+', + ] diff --git a/scenarios/invite_emergency_cirpack/0012_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0012_test.yml.tt2 new file mode 100644 index 00000000..8b545226 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0012_test.yml.tt2 @@ -0,0 +1,37 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|ROUTE_OUTBOUND: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'ACK sip:127.0.2.1:\d+;transport=UDP SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ ACK' + - 'Content-Length: 0' + - 'Contact: ' +sip_out: + - [ + 'ACK sip:127.0.2.1:\d+;transport=UDP SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ ACK', + 'Content-Length: 0', + 'Contact: ', + ] diff --git a/scenarios/invite_emergency_cirpack/0013_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0013_test.yml.tt2 new file mode 100644 index 00000000..b176074d --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0013_test.yml.tt2 @@ -0,0 +1,64 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|dialog:end: + - return|dialog:end: + $avp(lua_dlg_profile): None + - return|dialog:end: + - start|ROUTE_STOP_RTPPROXY: + - start|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_RESTORE_CLUSTERSET: + - return|ROUTE_STOP_RTPPROXY: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|ROUTE_OUTBOUND: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'BYE sip:127.0.0.1:508[08];prxroute=1 SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'Contact: sip:testuser1002@127.126.0.1:\d+' + - 'Content-Length: 0' + - 'P-NGCP-Src-Ip: 127.126.0.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' + - 'P-Sock-Info: udp:127.0.0.1:5060' + - 'P-LB-Uptime: \d+' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'P-Out-Socket: udp:127.0.0.1:5060', + 'P-NGCP-Auth-IP: 127.126.0.1', + 'P-NGCP-Auth-UA: ', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'BYE sip:127.0.0.1:508[08];prxroute=1 SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'Contact: sip:testuser1002@127.126.0.1:\d+', + 'Content-Length: 0', + 'P-LB-Uptime: \d+', + 'P-Asserted-Identity: ', + ] diff --git a/scenarios/invite_emergency_cirpack/0014_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0014_test.yml.tt2 new file mode 100644 index 00000000..cd24df62 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0014_test.yml.tt2 @@ -0,0 +1,52 @@ +flow: + - start|DEFAULT_ROUTE: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_NET_INFO: + - return|ROUTE_NET_INFO: + - start|ROUTE_CHECK_TEL_URI: + - return|ROUTE_CHECK_TEL_URI: + - start|ROUTE_PRX_REQUEST: + - start|ROUTE_INITVARS: + - return|ROUTE_INITVARS: + - start|dialog:end: + - return|dialog:end: + - return|dialog:end: + - start|ROUTE_STOP_RTPPROXY: + - return|ROUTE_STOP_RTPPROXY: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|ROUTE_OUTBOUND: + - start|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - exit|DEFAULT_SEND: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'BYE sip:127.0.2.1:\d+;transport=UDP SIP/2.0' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'P-LB-Uptime: \d+' + - 'P-Asserted-Identity: ' + - 'Content-Length: 0' +sip_out: + - [ + 'SIP/2.0 100 Trying', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'Server: Sipwise NGCP Proxy', + 'Content-Length: 0', + ] + - [ + 'BYE sip:127.0.2.1:\d+;transport=UDP SIP/2.0', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'P-LB-Uptime: \d+', + 'P-Asserted-Identity: ', + 'Content-Length: 0', + ] diff --git a/scenarios/invite_emergency_cirpack/0015_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0015_test.yml.tt2 new file mode 100644 index 00000000..a0fe5f8a --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0015_test.yml.tt2 @@ -0,0 +1,38 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 200 OK' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'Contact: ' + - 'Content-Length: \s+0' + - 'P-NGCP-Src-Ip: 127.0.2.1' + - 'P-NGCP-Src-Port: \d+' + - 'P-NGCP-Src-Proto: udp' + - 'P-NGCP-Src-Af: 4' +sip_out: + - [ + 'SIP/2.0 200 OK', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'Contact: ', + 'Content-Length: \s+0', + 'P-NGCP-Src-Ip: 127.0.2.1', + 'P-NGCP-Src-Port: \d+', + 'P-NGCP-Src-Proto: udp', + 'P-NGCP-Src-Af: 4', + ] diff --git a/scenarios/invite_emergency_cirpack/0016_test.yml.tt2 b/scenarios/invite_emergency_cirpack/0016_test.yml.tt2 new file mode 100644 index 00000000..a0adecbd --- /dev/null +++ b/scenarios/invite_emergency_cirpack/0016_test.yml.tt2 @@ -0,0 +1,29 @@ +flow: + - start|DEFAULT_ONREPLY: + - start|REPLY_ROUTE_NAT: + - start|ROUTE_ENTRY: + - return|ROUTE_ENTRY: + - start|ROUTE_APPLY_HEADER_RULES: + - return|ROUTE_APPLY_HEADER_RULES: + - start|ROUTE_PREPARE_UA: + - return|ROUTE_PREPARE_UA: + - start|REPLY_ROUTE_NAT_CONTINUE: + - start|ROUTE_EXIT: + - start|ROUTE_RUNTIME: + - return|ROUTE_RUNTIME: + - exit|ROUTE_EXIT: +sip_in: + - 'SIP/2.0 200 OK' + - 'From: ;tag=[\w-]+' + - 'To: ;tag=[\w-]+' + - 'CSeq: \d+ BYE' + - 'Content-Length: 0' +sip_out: + - [ + 'SIP/2.0 200 OK', + 'From: ;tag=[\w-]+', + 'To: ;tag=[\w-]+', + 'CSeq: \d+ BYE', + 'Content-Length: 0', + 'P-Out-Socket: udp:127.0.0.1:5060', + ] diff --git a/scenarios/invite_emergency_cirpack/cdr_test.yml.tt2 b/scenarios/invite_emergency_cirpack/cdr_test.yml.tt2 new file mode 100644 index 00000000..2fae4fa9 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/cdr_test.yml.tt2 @@ -0,0 +1,12 @@ +--- +cdr: + - source_user: 'testuser1002' + source_domain: 'spce.test' + source_cli: '4311002' + destination_user: 'emergency_112' + destination_domain: '127.0.2.1' + destination_user_dialed: '112' + destination_user_out: 'E1112' + call_type: 'call' + call_status: 'ok' + call_code: '200' \ No newline at end of file diff --git a/scenarios/invite_emergency_cirpack/media181sec.pcap b/scenarios/invite_emergency_cirpack/media181sec.pcap new file mode 120000 index 00000000..d95ed875 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/media181sec.pcap @@ -0,0 +1 @@ +../media181sec.pcap \ No newline at end of file diff --git a/scenarios/invite_emergency_cirpack/peer.yml b/scenarios/invite_emergency_cirpack/peer.yml new file mode 100644 index 00000000..4a462cc2 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/peer.yml @@ -0,0 +1,27 @@ +--- +peer_00: + contact: + company: peer_00 + email: peer_00@host0.not + contract: + billing_profile_id: 1 + status: active + type: sippeering + groups: + - name: peer_00_group + priority: 1 + description: + rules: + - group_id: peer_00_group + callee_prefix: "" + callee_pattern: '' + caller_pattern: '^sip:.+@spce.test' + description: "" + hosts: + - group_id: peer_00_group + name: peer_00_host0 + ip: 127.0.2.1 + port: 51602 + host: + transport: 1 + weight: 1 diff --git a/scenarios/invite_emergency_cirpack/prefs.json b/scenarios/invite_emergency_cirpack/prefs.json new file mode 100644 index 00000000..c5c8452a --- /dev/null +++ b/scenarios/invite_emergency_cirpack/prefs.json @@ -0,0 +1,13 @@ +{ + "@spce.test": { + "emergency_prefix": "E", + "rewrite_rule_set": "rw_00" + }, + "testuser1002@spce.test": { + "emergency_location_object": "7e Od 04 55 75 69 20 4d 61 6b 65 43 61 6c 6c" + }, + "peer_00_host0": { + "rewrite_rule_set": "rw_01", + "concurrent_max": 0 + } +} diff --git a/scenarios/invite_emergency_cirpack/pro.yml b/scenarios/invite_emergency_cirpack/pro.yml new file mode 100644 index 00000000..e69de29b diff --git a/scenarios/invite_emergency_cirpack/rewrite.yml b/scenarios/invite_emergency_cirpack/rewrite.yml new file mode 100644 index 00000000..15e56e2e --- /dev/null +++ b/scenarios/invite_emergency_cirpack/rewrite.yml @@ -0,0 +1,15 @@ +--- +rw_00: + - direction: in + field: callee + match_pattern: '^(911|112)$' + replace_pattern: 'emergency_\1' + priority: 1 + description: Tag Emergency Numbers +rw_01: + - direction: out + field: callee + match_pattern: '^emergency_(.+)$' + replace_pattern: '${caller_emergency_prefix}${caller_ac}\1' + priority: 1 + description: Normalize Emergency Numbers diff --git a/scenarios/invite_emergency_cirpack/scenario.yml b/scenarios/invite_emergency_cirpack/scenario.yml new file mode 100644 index 00000000..4b99a184 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/scenario.yml @@ -0,0 +1,35 @@ +--- +test_uuid: invite_emergency_cirpack +description: emergency call to a peer adding geolocation with cirpack format +domains: + 'spce.test': + reseller_id: 1 +customers: + 'customer.test': + contacts: + - email: "customer.test@spce.test" + reseller_id: 1 + details: + status: 'active' + type: 'sipaccount' + billing_profile_id: 1 + reseller_id: 1 +subscribers: + spce.test: + testuser1002: + customer: 'customer.test' + password: testuser + cc: 43 + ac: 1 + sn: 1002 +scenarios: + - ip: 127.126.0.1 + username: testuser1002 + domain: spce.test + responders: + - ip: 127.0.2.1 + number: 112 + username: 112 + domain: spce.test + peer_host: peer_00_host0 + register: 'no' diff --git a/scenarios/invite_emergency_cirpack/sipp_scenario00.xml b/scenarios/invite_emergency_cirpack/sipp_scenario00.xml new file mode 100644 index 00000000..750a70e4 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/sipp_scenario00.xml @@ -0,0 +1,146 @@ + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 1 INVITE + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 8 + a=rtpmap:8 PCMA/8000 + a=ptime:50 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 1 ACK + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 2 INVITE + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + [field1 file="caller.csv" line=0] + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 8 + a=rtpmap:8 PCMA/8000 + a=ptime:50 + + ]]> + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + [routes] + CSeq: 2 ACK + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [peer_tag_param] + Call-ID: NGCP%[field4 file="callee.csv" line=0]%///[call_id] + CSeq: 3 BYE + Contact: sip:[field0 file="caller.csv" line=0]@[local_ip]:[local_port] + [routes] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + diff --git a/scenarios/invite_emergency_cirpack/sipp_scenario_responder00.xml b/scenarios/invite_emergency_cirpack/sipp_scenario_responder00.xml new file mode 100644 index 00000000..da77f415 --- /dev/null +++ b/scenarios/invite_emergency_cirpack/sipp_scenario_responder00.xml @@ -0,0 +1,78 @@ + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 8 + a=rtpmap:8 PCMA/8000 + a=ptime:50 + + ]]> + + + + + + + + + + + Content-Length: [len] + + ]]> + + + + + + +