mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw.git
synced 2025-10-23 08:12:01 +00:00
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9c3fad2c42 | ||
|
227a800d26 | ||
|
24cae67f3e | ||
|
0d47c408ac | ||
|
f1b557988d | ||
|
95e504aa97 | ||
|
a5ae091fdd | ||
|
249f799a88 | ||
|
dc395843ff | ||
|
c5d003e09e | ||
|
e6398d886b |
50
TODO-RELEASE
50
TODO-RELEASE
@@ -1,43 +1,11 @@
|
||||
# When cleaning up this file upon a release:
|
||||
#
|
||||
# - Note that the release version number is entirely unrelated to the API
|
||||
# versions. A release version 5.2.3 may happily have an API version of 42:7:5.
|
||||
#
|
||||
# - Bump API version in src/lib*/Makefile.am files according to chapter
|
||||
# "Library interface versions" of the libtool documentation.
|
||||
# https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
|
||||
#
|
||||
# - Iff the 'current' API version has changed, rename debian/lib*.install
|
||||
#
|
||||
# API version bumping for the impatient:
|
||||
# LIBVERSION=c:r:a (current:revision_of_current:backwards_compat_age)
|
||||
# 5:2:4 means that
|
||||
# - this implements version 5 of the API;
|
||||
# - this is the 2nd (compatible) revision of API version 5;
|
||||
# - this is backwards compatible to all APIs since 4 versions ago,
|
||||
# i.e. callers that need API versions from 1 to 5 can use this.
|
||||
#
|
||||
# Bumping API versions recipe:
|
||||
# If the library source code has changed at all since the last update, r++;
|
||||
# If any interfaces have been added, removed, or changed since the last update, c++, r=0;
|
||||
# If any interfaces have been added since the last public release, a++;
|
||||
# If any interfaces have been removed or changed since the last public release, a=0.
|
||||
#
|
||||
#library what description / commit summary line
|
||||
libosmo-mgcp-client remove public API These public API items have not been called by any of our osmo-programs
|
||||
for many years. Any sane caller of libosmo-mgcp-client should use the
|
||||
higher level osmo_mgcpc_* API instead. Move these to a private header:
|
||||
struct mgcp_response_head
|
||||
struct mgcp_response
|
||||
struct mgcp_msg
|
||||
mgcp_response_parse_params()
|
||||
mgcp_client_tx()
|
||||
mgcp_client_cancel()
|
||||
mgcp_msg_gen()
|
||||
mgcp_msg_trans_id()
|
||||
libosmo-mgcp-client deprecate public API New code should no longer use codecs[], instead use ptmap[].codec. There
|
||||
is backwards compat code that moves codecs[] entries, if any, over to
|
||||
ptmap[], so callers may migrate at own leisure.
|
||||
osmo-mgw remove cfg Remove VTY config item 'sdp audio fmtp-extra' (see OS#6313)
|
||||
# When cleaning up this file: bump API version in corresponding Makefile.am and rename corresponding debian/lib*.install
|
||||
# according to https://osmocom.org/projects/cellular-infrastructure/wiki/Make_a_new_release
|
||||
# In short: https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info
|
||||
# LIBVERSION=c:r:a
|
||||
# If the library source code has changed at all since the last update, then increment revision: c:r + 1:a.
|
||||
# If any interfaces have been added, removed, or changed since the last update: c + 1:0:a.
|
||||
# If any interfaces have been added since the last public release: c:r:a + 1.
|
||||
# If any interfaces have been removed or changed since the last public release: c:r:0.
|
||||
#library what description / commit summary line
|
||||
libosmocore bump_dep; workaround Bump libosmocore version dependency after I68328adb952ca8833ba047cb3b49ccc6f8a1f1b5
|
||||
has been merged to libosmocore.git; then remove my_msgb_copy_c wrapper function.
|
||||
|
14
configure.ac
14
configure.ac
@@ -44,13 +44,13 @@ AC_SEARCH_LIBS([dlsym], [dl dld], [LIBRARY_DLSYM="$LIBS";LIBS=""])
|
||||
AC_SUBST(LIBRARY_DLSYM)
|
||||
|
||||
|
||||
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.9.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.9.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.9.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.9.0)
|
||||
PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 1.4.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 1.5.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOTRAU, libosmotrau >= 1.5.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.10.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.10.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.10.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.10.0)
|
||||
PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 1.5.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 1.6.0)
|
||||
PKG_CHECK_MODULES(LIBOSMOTRAU, libosmotrau >= 1.6.0)
|
||||
|
||||
CFLAGS="$CFLAGS -DBUILDING_LIBOSMOMGCPCLIENT -pthread"
|
||||
CPPFLAGS="$CPPFLAGS -DBUILDING_LIBOSMOMGCPCLIENT -pthread"
|
||||
|
91
debian/changelog
vendored
91
debian/changelog
vendored
@@ -1,3 +1,94 @@
|
||||
osmo-mgw (1.13.1) unstable; urgency=medium
|
||||
|
||||
[ Philipp Maier ]
|
||||
* mgcp_network: use an uint16_t to store the port number
|
||||
* mgcp_network: add missing ntohs
|
||||
|
||||
[ Pau Espin Pedrol ]
|
||||
* tests/mgcp/mgcp_test: Add some extra asserts in code
|
||||
|
||||
-- Oliver Smith <osmith@sysmocom.de> Thu, 12 Sep 2024 13:53:19 +0200
|
||||
|
||||
osmo-mgw (1.13.0) unstable; urgency=medium
|
||||
|
||||
[ Neels Hofmeyr ]
|
||||
* add mgcp_conn_rtp_type_names[]
|
||||
* mgcp_parse_audio_port_pt(): fix buffer overflow
|
||||
* client: replace two assertions with graceful error handling
|
||||
* systemd,manual: set LimitNOFILE=65536
|
||||
* IuUP: allow Initialization from any address if not yet set
|
||||
* check_rtp_origin: drop special case for legacy IuUP hack
|
||||
* mgcp_client_test: fix function name
|
||||
* fix possible NULL deref on early media
|
||||
* client: move some items to internal header
|
||||
* client: safely handle dealloc on event dispatch
|
||||
* build: move mgcp/*.h to noinst_HEADERS, drop RPM libosmo-mgcp-devel
|
||||
* client: deprecate legacy API
|
||||
* client: collapse codecs[] and ptmap[]; allow codec variants
|
||||
* client: allow MGCP_MAX_CODECS entries
|
||||
* client SDP: more verbose error logging
|
||||
* mgcp_client_test: add test_parse_response()
|
||||
* drop (now) unused code
|
||||
* tests/mgcp: add update_exp target
|
||||
* drop get_net_downlink_format_cb
|
||||
* drop cfg 'sdp audio fmtp-extra'
|
||||
* mgcp_codec_decide: remove redundant lookup
|
||||
* tweak DEBUG log
|
||||
* mgcp_test: fix false negatives in test output
|
||||
* mgw: do not fail MGCP on codec mismatch
|
||||
* mgcp-client: always send 'm=audio' line
|
||||
* mgcp_test.c: verify osmo-mgw accepts m=audio 0
|
||||
* mgcp_test.c: fix various missing '\r' and '\n'
|
||||
* mgcp_test: test a=ptime:20, not 40
|
||||
* mgcp_test: add CRCX for IUFP in sendrecv
|
||||
* do not FAIL on CRCX in sendrecv mode
|
||||
|
||||
[ Keith Whyte ]
|
||||
* vty and log: also show local port for RTP conns
|
||||
|
||||
[ Andreas Eversberg ]
|
||||
* Use uniform log format for default config files
|
||||
|
||||
[ Pau Espin Pedrol ]
|
||||
* mgcp_network: Improve err logging when rtp pkt from unexpected origin comes in
|
||||
* cosmetic: Fix line indentation
|
||||
* IuUP: Allow Initialization with set rem IP address and unset rem port
|
||||
* mgcp-client: Transmit remote IP addr in CRCX if known and port=0
|
||||
* Fix IuUP RTP hdr seqnr field not incremented
|
||||
* iuup: Increment RTP hdr seqnr even if Tx over UDP fails
|
||||
|
||||
[ Vadim Yanitskiy ]
|
||||
* mgcp: simplify getting msgb tail in mgcp_msg_terminate_nul()
|
||||
* mgcp: reserve once byte for '\0' in mgcp_do_read()
|
||||
* mgcp: correctly put NUL character in mgcp_msg_terminate_nul()
|
||||
* build: include README into the release tarball
|
||||
|
||||
[ neels ]
|
||||
* Revert "drop (now) unused code"
|
||||
|
||||
[ Harald Welte ]
|
||||
* Convert README to README.md and expand like in other projects
|
||||
* migrate mgcp_client from osmo_wqueue to osmo_io
|
||||
* mgw: Add our usual SIGABRT, SIGUSR1 signal handlers
|
||||
* don't log useless "transcoding disabled" message
|
||||
* remove strange loop for non-existant transcoding support
|
||||
* simplify unused transcoding/processing call-back
|
||||
* remove osmo_fd from mgcp_create_bind()
|
||||
* Change msgb ownership in processing of received msgb
|
||||
* cosmetic: make linter happy
|
||||
* Convert RTP/RTCP/OSMUX I/O from osmo_fd to osmo_io
|
||||
|
||||
[ Oliver Smith ]
|
||||
* contrib: remove rpm spec file
|
||||
* contrib/systemd: run as osmocom user
|
||||
* doc: example configs: fix deprecation warnings
|
||||
|
||||
[ Mychaela N. Falconia ]
|
||||
* E1: support HRv1 codec on both 16k and 8k subslots
|
||||
* fix E1 TS output when used with osmo-e1d
|
||||
|
||||
-- Oliver Smith <osmith@sysmocom.de> Wed, 24 Jul 2024 15:44:47 +0200
|
||||
|
||||
osmo-mgw (1.12.1) unstable; urgency=medium
|
||||
|
||||
[ Pau Espin Pedrol ]
|
||||
|
12
debian/control
vendored
12
debian/control
vendored
@@ -6,10 +6,10 @@ Build-Depends: debhelper (>= 10),
|
||||
dh-autoreconf,
|
||||
pkg-config,
|
||||
autotools-dev,
|
||||
libosmocore-dev (>= 1.9.0),
|
||||
libosmo-netif-dev (>= 1.4.0),
|
||||
libosmo-abis-dev (>= 1.5.0),
|
||||
osmo-gsm-manuals-dev (>= 1.5.0)
|
||||
libosmocore-dev (>= 1.10.0),
|
||||
libosmo-netif-dev (>= 1.5.0),
|
||||
libosmo-abis-dev (>= 1.6.0),
|
||||
osmo-gsm-manuals-dev (>= 1.6.0)
|
||||
Standards-Version: 3.9.8
|
||||
Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw
|
||||
Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw
|
||||
@@ -21,7 +21,7 @@ Multi-Arch: foreign
|
||||
Depends: ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: OsmoMGW: Osmocom's Media Gateway for 2G and 3G circuit-switched mobile networks
|
||||
|
||||
Package: libosmo-mgcp-client12
|
||||
Package: libosmo-mgcp-client14
|
||||
Section: libs
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
@@ -33,7 +33,7 @@ Package: libosmo-mgcp-client-dev
|
||||
Section: libdevel
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: libosmo-mgcp-client12 (= ${binary:Version}), ${misc:Depends}
|
||||
Depends: libosmo-mgcp-client14 (= ${binary:Version}), ${misc:Depends}
|
||||
Description: libosmo-mgcp-client: Osmocom's Media Gateway Control Protocol client utilities
|
||||
|
||||
Package: osmo-mgw-doc
|
||||
|
@@ -94,7 +94,7 @@ struct mgcp_rtp_end {
|
||||
struct osmo_sockaddr addr;
|
||||
|
||||
/* in network byte order */
|
||||
int rtcp_port;
|
||||
uint16_t rtcp_port;
|
||||
|
||||
/* currently selected audio codec */
|
||||
struct mgcp_rtp_codec *codec;
|
||||
|
@@ -19,7 +19,7 @@ AM_LDFLAGS = \
|
||||
|
||||
# This is not at all related to the release version, but a range of supported
|
||||
# API versions. Read TODO_RELEASE in the source tree's root!
|
||||
MGCP_CLIENT_LIBVERSION=13:0:1
|
||||
MGCP_CLIENT_LIBVERSION=14:0:0
|
||||
|
||||
lib_LTLIBRARIES = \
|
||||
libosmo-mgcp-client.la \
|
||||
|
@@ -324,7 +324,7 @@ static void e1_send_ts_frame(struct e1inp_ts *ts, struct mgcp_trunk *trunk)
|
||||
msgb_length(msg) > DEBUG_BYTES_MAX ? DEBUG_BYTES_MAX : msgb_length(msg)));
|
||||
#endif
|
||||
/* Hand data over to the E1 stack */
|
||||
msgb_enqueue(&ts->raw.tx_queue, msg);
|
||||
e1inp_ts_send_raw(ts, msg);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -465,11 +465,21 @@ static enum osmo_trau_frame_type determine_trau_fr_type(char *sdp_subtype_name,
|
||||
{
|
||||
if (strcmp(sdp_subtype_name, "GSM") == 0)
|
||||
return OSMO_TRAU16_FT_FR;
|
||||
else if (strcmp(sdp_subtype_name, "GSM-EFR") == 0)
|
||||
|
||||
if (strcmp(sdp_subtype_name, "GSM-EFR") == 0)
|
||||
return OSMO_TRAU16_FT_EFR;
|
||||
else if (strcmp(sdp_subtype_name, "GSM-HR-08") == 0)
|
||||
return OSMO_TRAU16_FT_HR;
|
||||
else if (strcmp(sdp_subtype_name, "AMR") == 0) {
|
||||
|
||||
if (strcmp(sdp_subtype_name, "GSM-HR-08") == 0) {
|
||||
if (i460_rate == OSMO_I460_RATE_16k)
|
||||
return OSMO_TRAU16_FT_HR;
|
||||
if (i460_rate == OSMO_I460_RATE_8k)
|
||||
return OSMO_TRAU8_SPEECH;
|
||||
LOGPENDP(endp, DE1, LOGL_ERROR,
|
||||
"E1-TRAU-TX: unsupported or illegal I.460 rate for HR\n");
|
||||
return OSMO_TRAU_FT_NONE;
|
||||
}
|
||||
|
||||
if (strcmp(sdp_subtype_name, "AMR") == 0) {
|
||||
if (i460_rate == OSMO_I460_RATE_8k) {
|
||||
switch (amr_ft) {
|
||||
case AMR_4_75:
|
||||
@@ -487,11 +497,11 @@ static enum osmo_trau_frame_type determine_trau_fr_type(char *sdp_subtype_name,
|
||||
}
|
||||
}
|
||||
return OSMO_TRAU16_FT_AMR;
|
||||
} else {
|
||||
LOGPENDP(endp, DE1, LOGL_ERROR, "E1-TRAU-TX: unsupported or illegal codec subtype name: %s\n",
|
||||
sdp_subtype_name);
|
||||
return OSMO_TRAU_FT_NONE;
|
||||
}
|
||||
|
||||
LOGPENDP(endp, DE1, LOGL_ERROR, "E1-TRAU-TX: unsupported or illegal codec subtype name: %s\n",
|
||||
sdp_subtype_name);
|
||||
return OSMO_TRAU_FT_NONE;
|
||||
}
|
||||
|
||||
/* Determine a suitable TRAU frame type for a given codec */
|
||||
@@ -500,11 +510,21 @@ static enum osmo_tray_sync_pat_id determine_trau_sync_pat(char *sdp_subtype_name
|
||||
{
|
||||
if (strcmp(sdp_subtype_name, "GSM") == 0)
|
||||
return OSMO_TRAU_SYNCP_16_FR_EFR;
|
||||
else if (strcmp(sdp_subtype_name, "GSM-EFR") == 0)
|
||||
|
||||
if (strcmp(sdp_subtype_name, "GSM-EFR") == 0)
|
||||
return OSMO_TRAU_SYNCP_16_FR_EFR;
|
||||
else if (strcmp(sdp_subtype_name, "GSM-HR-08") == 0)
|
||||
return OSMO_TRAU_SYNCP_8_HR;
|
||||
else if (strcmp(sdp_subtype_name, "AMR") == 0) {
|
||||
|
||||
if (strcmp(sdp_subtype_name, "GSM-HR-08") == 0) {
|
||||
if (i460_rate == OSMO_I460_RATE_16k)
|
||||
return OSMO_TRAU_SYNCP_16_FR_EFR;
|
||||
if (i460_rate == OSMO_I460_RATE_8k)
|
||||
return OSMO_TRAU_SYNCP_8_HR;
|
||||
LOGPENDP(endp, DE1, LOGL_ERROR,
|
||||
"E1-TRAU-TX: unsupported or illegal I.460 rate for HR\n");
|
||||
return OSMO_TRAU_SYNCP_16_FR_EFR;
|
||||
}
|
||||
|
||||
if (strcmp(sdp_subtype_name, "AMR") == 0) {
|
||||
if (i460_rate == OSMO_I460_RATE_8k) {
|
||||
switch (amr_ft) {
|
||||
case AMR_4_75:
|
||||
@@ -522,11 +542,11 @@ static enum osmo_tray_sync_pat_id determine_trau_sync_pat(char *sdp_subtype_name
|
||||
}
|
||||
}
|
||||
return OSMO_TRAU_SYNCP_16_FR_EFR;
|
||||
} else {
|
||||
LOGPENDP(endp, DE1, LOGL_ERROR, "E1-TRAU-TX: unsupported or illegal codec subtype name: %s\n",
|
||||
sdp_subtype_name);
|
||||
return OSMO_TRAU_SYNCP_16_FR_EFR;
|
||||
}
|
||||
|
||||
LOGPENDP(endp, DE1, LOGL_ERROR, "E1-TRAU-TX: unsupported or illegal codec subtype name: %s\n",
|
||||
sdp_subtype_name);
|
||||
return OSMO_TRAU_SYNCP_16_FR_EFR;
|
||||
}
|
||||
|
||||
/* Find out if a given TRAU frame type is AMR */
|
||||
|
@@ -1251,7 +1251,7 @@ int mgcp_send(struct mgcp_endpoint *endp, int is_rtp, struct osmo_sockaddr *addr
|
||||
return 0;
|
||||
} else if (!trunk->omit_rtcp) {
|
||||
struct osmo_sockaddr rtcp_addr = rtp_end->addr;
|
||||
osmo_sockaddr_set_port(&rtcp_addr.u.sa, rtp_end->rtcp_port);
|
||||
osmo_sockaddr_set_port(&rtcp_addr.u.sa, ntohs(rtp_end->rtcp_port));
|
||||
LOGPENDP(endp, DRTP, LOGL_DEBUG,
|
||||
"send to %s %s rtp_port:%u rtcp_port:%u\n",
|
||||
dest_name, osmo_sockaddr_ntop(&rtcp_addr.u.sa, ipbuf),
|
||||
|
@@ -1083,17 +1083,6 @@ mgcp_header_done:
|
||||
|
||||
mgcp_rtp_end_config(endp, 0, &conn->end);
|
||||
|
||||
/* check connection mode setting */
|
||||
if (conn->conn->mode != MGCP_CONN_LOOPBACK
|
||||
&& conn->conn->mode != MGCP_CONN_RECV_ONLY
|
||||
&& osmo_sockaddr_port(&conn->end.addr.u.sa) == 0) {
|
||||
LOGPCONN(_conn, DLMGCP, LOGL_ERROR,
|
||||
"CRCX: selected connection mode type requires an opposite end!\n");
|
||||
error_code = 527;
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(rate_ctrs, MGCP_CRCX_FAIL_NO_REMOTE_CONN_DESC));
|
||||
goto error2;
|
||||
}
|
||||
|
||||
/* Find a local address for conn based on policy and initial SDP remote
|
||||
information, then find a free port for it */
|
||||
if (mgcp_get_local_addr(conn->end.local_addr, conn) < 0) {
|
||||
@@ -1295,17 +1284,6 @@ mgcp_header_done:
|
||||
if (conn->type == MGCP_RTP_DEFAULT && strcmp(conn->end.codec->subtype_name, "VND.3GPP.IUFP") == 0)
|
||||
rc = mgcp_conn_iuup_init(conn);
|
||||
|
||||
/* check connection mode setting */
|
||||
if (conn->conn->mode != MGCP_CONN_LOOPBACK
|
||||
&& conn->conn->mode != MGCP_CONN_RECV_ONLY
|
||||
&& !mgcp_rtp_end_remote_addr_available(&conn->end)) {
|
||||
LOGPCONN(conn->conn, DLMGCP, LOGL_ERROR,
|
||||
"MDCX: selected connection mode type requires an opposite end!\n");
|
||||
error_code = 527;
|
||||
rate_ctr_inc(rate_ctr_group_get_ctr(rate_ctrs, MGCP_MDCX_FAIL_NO_REMOTE_CONN_DESC));
|
||||
goto error3;
|
||||
}
|
||||
|
||||
if (mgcp_conn_rtp_is_osmux(conn)) {
|
||||
OSMO_ASSERT(conn->osmux.local_cid_allocated);
|
||||
if (remote_osmux_cid < -1) {
|
||||
|
@@ -103,7 +103,7 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16002 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX3A_RET \
|
||||
"200 18983215 OK\r\n" \
|
||||
@@ -115,7 +115,7 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16002 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX3_FMTP_RET \
|
||||
"200 18983215 OK\r\n" \
|
||||
@@ -127,40 +127,49 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16006 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4_ADDR0000 \
|
||||
"MDCX 18983216 1@mgw MGCP 1.0\r\n" \
|
||||
"M: sendrecv\r" \
|
||||
"M: sendrecv\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"I: %s\r\n" \
|
||||
"L: p:20, a:AMR, nt:IN\r\n" \
|
||||
"\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"o=- %s 23 IN IP4 0.0.0.0\r\n" \
|
||||
"c=IN IP4 0.0.0.0\r\n" \
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 4441 RTP/AVP 99\r\n" \
|
||||
"a=rtpmap:99 AMR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4_ADDR0000_RET \
|
||||
"527 18983216 FAIL\r\n"
|
||||
"200 18983216 OK\r\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"o=- %s 23 IN IP4 0.0.0.0\r\n" \
|
||||
"s=-\r\n" \
|
||||
"c=IN IP4 0.0.0.0\r\n" \
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16002 RTP/AVP 99\r\n" \
|
||||
"a=rtpmap:99 AMR/8000\r\n" \
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4 \
|
||||
"MDCX 18983217 1@mgw MGCP 1.0\r\n" \
|
||||
"M: sendrecv\r" \
|
||||
"M: sendrecv\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"I: %s\r\n" \
|
||||
"L: p:20, a:AMR, nt:IN\r\n" \
|
||||
"\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"o=- %s 23 IN IP4 5.6.7.8\r\n" \
|
||||
"c=IN IP4 5.6.7.8\r\n" \
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 4441 RTP/AVP 99\r\n" \
|
||||
"a=rtpmap:99 AMR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4_RET(Ident) \
|
||||
"200 " Ident " OK\r\n" \
|
||||
@@ -172,7 +181,7 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16002 RTP/AVP 99\r\n" \
|
||||
"a=rtpmap:99 AMR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4_RO_RET(Ident) \
|
||||
"200 " Ident " OK\r\n" \
|
||||
@@ -184,87 +193,87 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16002 RTP/AVP 112\r\n" \
|
||||
"a=rtpmap:112 AMR\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4_PT1 \
|
||||
"MDCX 18983218 1@mgw MGCP 1.0\r\n" \
|
||||
"M: SENDRECV\r" \
|
||||
"M: SENDRECV\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"I: %s\r\n" \
|
||||
"L: p:20-40, a:AMR, nt:IN\r\n" \
|
||||
"\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"o=- %s 23 IN IP4 5.6.7.8\r\n" \
|
||||
"c=IN IP4 5.6.7.8\r\n" \
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 4441 RTP/AVP 99\r\n" \
|
||||
"a=rtpmap:99 AMR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4_PT2 \
|
||||
"MDCX 18983219 1@mgw MGCP 1.0\r\n" \
|
||||
"M: sendrecv\r" \
|
||||
"M: sendrecv\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"I: %s\r\n" \
|
||||
"L: p:20-20, a:AMR, nt:IN\r\n" \
|
||||
"\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"o=- %s 23 IN IP4 5.6.7.8\r\n" \
|
||||
"c=IN IP4 5.6.7.8\r\n" \
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 4441 RTP/AVP 99\r\n" \
|
||||
"a=rtpmap:99 AMR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4_PT3 \
|
||||
"MDCX 18983220 1@mgw MGCP 1.0\r\n" \
|
||||
"M: sendrecv\r" \
|
||||
"M: sendrecv\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"I: %s\r\n" \
|
||||
"L: a:AMR, nt:IN\r\n" \
|
||||
"\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"o=- %s 23 IN IP4 5.6.7.8\r\n" \
|
||||
"c=IN IP4 5.6.7.8\r\n" \
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 4441 RTP/AVP 99\r\n" \
|
||||
"a=rtpmap:99 AMR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
/* Test different upper/lower case in options */
|
||||
#define MDCX4_PT4 \
|
||||
"MDCX 18983221 1@mgw MGCP 1.0\r\n" \
|
||||
"m: sendrecv\r" \
|
||||
"m: sendrecv\r\n" \
|
||||
"c: 2\r\n" \
|
||||
"i: %s\r\n" \
|
||||
"l: A:amr, NT:IN\r\n" \
|
||||
"\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"o=- %s 23 IN IP4 5.6.7.8\r\n" \
|
||||
"c=IN IP4 5.6.7.8\r\n" \
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 4441 RTP/AVP 99\r\n" \
|
||||
"a=rtpmap:99 AMR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4_SO \
|
||||
"MDCX 18983222 1@mgw MGCP 1.0\r\n" \
|
||||
"M: sendonly\r" \
|
||||
"M: sendonly\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"I: %s\r\n" \
|
||||
"L: p:20, a:AMR, nt:IN\r\n" \
|
||||
"\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"o=- %s 23 IN IP4 5.6.7.8\r\n" \
|
||||
"c=IN IP4 5.6.7.8\r\n" \
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 4441 RTP/AVP 99\r\n" \
|
||||
"a=rtpmap:99 AMR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define MDCX4_RO \
|
||||
"MDCX 18983223 1@mgw MGCP 1.0\r\n" \
|
||||
"M: recvonly\r" \
|
||||
"M: recvonly\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"I: %s\r\n" \
|
||||
"L: p:20, a:AMR, nt:IN\r\n"
|
||||
@@ -297,7 +306,7 @@ static void test_strline(void)
|
||||
"c=IN IP4 123.12.12.123\r\n" \
|
||||
"m=audio 5904 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_RET \
|
||||
"200 2 OK\r\n" \
|
||||
@@ -310,7 +319,7 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16002 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_RET_NO_RTPMAP \
|
||||
"200 2 OK\r\n" \
|
||||
@@ -322,7 +331,7 @@ static void test_strline(void)
|
||||
"c=IN IP4 0.0.0.0\r\n" \
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16002 RTP/AVP 97\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_FMTP_RET \
|
||||
"200 2 OK\r\n" \
|
||||
@@ -335,17 +344,17 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16006 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_ZYN \
|
||||
"CRCX 2 1@mgw MGCP 1.0\r" \
|
||||
"M: recvonly\r" \
|
||||
"CRCX 2 1@mgw MGCP 1.0\r\n" \
|
||||
"M: recvonly\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"\n" \
|
||||
"v=0\r" \
|
||||
"c=IN IP4 123.12.12.123\r" \
|
||||
"m=audio 5904 RTP/AVP 97\r" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r"
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"c=IN IP4 123.12.12.123\r\n" \
|
||||
"m=audio 5904 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n"
|
||||
|
||||
#define CRCX_ZYN_RET \
|
||||
"200 2 OK\r\n" \
|
||||
@@ -371,7 +380,7 @@ static void test_strline(void)
|
||||
"c=IN IP4 123.12.12.123\r\n" \
|
||||
"m=audio 5904 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_X_OSMO_IGN_RET \
|
||||
"200 2 OK\r\n" \
|
||||
@@ -384,7 +393,7 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16010 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_PORT_0 \
|
||||
"CRCX 3 1@mgw MGCP 1.0\r\n" \
|
||||
@@ -396,7 +405,7 @@ static void test_strline(void)
|
||||
"c=IN IP4 123.12.12.123\r\n" \
|
||||
"m=audio 0 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_PORT_0_RET \
|
||||
"200 3 OK\r\n" \
|
||||
@@ -409,7 +418,7 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16014 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_PORT_0_IUFP \
|
||||
"CRCX 4 1@mgw MGCP 1.0\r\n" \
|
||||
@@ -421,7 +430,7 @@ static void test_strline(void)
|
||||
"c=IN IP4 123.12.12.123\r\n" \
|
||||
"m=audio 0 RTP/AVP 96\r\n" \
|
||||
"a=rtpmap:96 VND.3GPP.IUFP/16000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_PORT_0_IUFP_RET \
|
||||
"200 4 OK\r\n" \
|
||||
@@ -434,7 +443,45 @@ static void test_strline(void)
|
||||
"t=0 0\r\n" \
|
||||
"m=audio 16016 RTP/AVP 96\r\n" \
|
||||
"a=rtpmap:96 VND.3GPP.IUFP/16000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
/* Do a CRCX in m=sendrecv */
|
||||
#define CRCX_PORT_0_IUFP_SENDRECV \
|
||||
"CRCX 4 1@mgw MGCP 1.0\r\n" \
|
||||
"M: sendrecv\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"L: p:20\r\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"c=IN IP4 123.12.12.123\r\n" \
|
||||
"m=audio 0 RTP/AVP 96\r\n" \
|
||||
"a=rtpmap:96 VND.3GPP.IUFP/16000\r\n" \
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
/* Do a CRCX using sendrecv mode in the SDP part */
|
||||
#define CRCX_PORT_0_IUFP_SENDRECV2 \
|
||||
"CRCX 4 1@mgw MGCP 1.0\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"L: p:20\r\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"c=IN IP4 123.12.12.123\r\n" \
|
||||
"a=sendrecv\r\n" \
|
||||
"m=audio 0 RTP/AVP 96\r\n" \
|
||||
"a=rtpmap:96 VND.3GPP.IUFP/16000\r\n" \
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
/* Do a CRCX entirely omitting a mode, i.e. implcit sendrecv */
|
||||
#define CRCX_PORT_0_IUFP_SENDRECV3 \
|
||||
"CRCX 4 1@mgw MGCP 1.0\r\n" \
|
||||
"C: 2\r\n" \
|
||||
"L: p:20\r\n" \
|
||||
"\r\n" \
|
||||
"v=0\r\n" \
|
||||
"c=IN IP4 123.12.12.123\r\n" \
|
||||
"m=audio 0 RTP/AVP 96\r\n" \
|
||||
"a=rtpmap:96 VND.3GPP.IUFP/16000\r\n" \
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define DLCX \
|
||||
"DLCX 7 1@mgw MGCP 1.0\r\n" \
|
||||
@@ -491,7 +538,7 @@ static void test_strline(void)
|
||||
"m=audio 5904 RTP/AVP 18 97\r\n" \
|
||||
"a=rtpmap:18 G729/8000\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_MULT_2 \
|
||||
"CRCX 2 2@mgw MGCP 1.0\r\n" \
|
||||
@@ -506,7 +553,7 @@ static void test_strline(void)
|
||||
"a=rtpmap:18 G729/8000\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=rtpmap:101 FOO/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_MULT_3 \
|
||||
"CRCX 2 3@mgw MGCP 1.0\r\n" \
|
||||
@@ -521,7 +568,7 @@ static void test_strline(void)
|
||||
"a=rtpmap:18 G729/8000\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=rtpmap:101 FOO/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_MULT_4 \
|
||||
"CRCX 2 4@mgw MGCP 1.0\r\n" \
|
||||
@@ -536,7 +583,7 @@ static void test_strline(void)
|
||||
"a=rtpmap:18 G729/8000\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=rtpmap:101 FOO/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_MULT_GSM_EXACT \
|
||||
"CRCX 259260421 5@mgw MGCP 1.0\r\n" \
|
||||
@@ -625,7 +672,7 @@ static void test_strline(void)
|
||||
"c=IN IP4 123.12.12.123\r\n" \
|
||||
"m=audio 5904 RTP/AVP 97\r\n" \
|
||||
"a=rtpmap:97 GSM-EFR/8000\r\n" \
|
||||
"a=ptime:40\r\n"
|
||||
"a=ptime:20\r\n"
|
||||
|
||||
#define CRCX_NULL_RET "502 2 FAIL\r\n"
|
||||
|
||||
@@ -675,6 +722,9 @@ static const struct mgcp_test tests[] = {
|
||||
{"RQNT_NULL", RQNT_NULL, RQNT_NULL_RET},
|
||||
{"CRCX_PORT_0", CRCX_PORT_0, CRCX_PORT_0_RET, 97},
|
||||
{"CRCX_PORT_0_IUFP", CRCX_PORT_0_IUFP, CRCX_PORT_0_IUFP_RET, 96},
|
||||
{"CRCX_PORT_0_IUFP_SENDRECV", CRCX_PORT_0_IUFP_SENDRECV, CRCX_PORT_0_IUFP_RET, 96},
|
||||
{"CRCX_PORT_0_IUFP_SENDRECV2", CRCX_PORT_0_IUFP_SENDRECV2, CRCX_PORT_0_IUFP_RET, 96},
|
||||
{"CRCX_PORT_0_IUFP_SENDRECV3", CRCX_PORT_0_IUFP_SENDRECV3, CRCX_PORT_0_IUFP_RET, 96},
|
||||
};
|
||||
|
||||
static const struct mgcp_test retransmit[] = {
|
||||
@@ -1158,7 +1208,9 @@ static void test_packet_loss_calc(void)
|
||||
_conn =
|
||||
mgcp_conn_alloc(NULL, &endp, MGCP_CONN_TYPE_RTP,
|
||||
"test-connection");
|
||||
OSMO_ASSERT(_conn);
|
||||
conn = mgcp_conn_get_rtp(&endp, _conn->id);
|
||||
OSMO_ASSERT(conn);
|
||||
state = &conn->state;
|
||||
packets_rx = rate_ctr_group_get_ctr(conn->ctrg, RTP_PACKETS_RX_CTR);
|
||||
|
||||
|
@@ -73,7 +73,7 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
a=ptime:40
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -101,40 +101,42 @@ Testing MDCX4_ADDR000
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
MDCX 18983216 1@mgw MGCP 1.0
|
||||
M: sendrecv
|
||||
M: sendrecv
|
||||
C: 2
|
||||
I: %s
|
||||
L: p:20, a:AMR, nt:IN
|
||||
L: p:20, a:AMR, nt:IN
|
||||
|
||||
v=0
|
||||
o=- %s 23 IN IP4 0.0.0.0
|
||||
c=IN IP4 0.0.0.0
|
||||
t=0 0
|
||||
m=audio 4441 RTP/AVP 99
|
||||
a=rtpmap:99 AMR/8000
|
||||
a=rtpmap:99 AMR/8000
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
checking response:
|
||||
using message with patched conn_id for comparison
|
||||
Response matches our expectations.
|
||||
Response matches our expectations.
|
||||
(response contains a connection id)
|
||||
|
||||
================================================
|
||||
Testing MDCX4
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
MDCX 18983217 1@mgw MGCP 1.0
|
||||
MDCX 18983217 1@mgw MGCP 1.0
|
||||
M: sendrecv
|
||||
C: 2
|
||||
I: %s
|
||||
L: p:20, a:AMR, nt:IN
|
||||
I: %s
|
||||
|
||||
v=0
|
||||
o=- %s 23 IN IP4 5.6.7.8
|
||||
c=IN IP4 5.6.7.8
|
||||
t=0 0
|
||||
m=audio 4441 RTP/AVP 99
|
||||
a=rtpmap:99 AMR/8000
|
||||
m=audio 4441 RTP/AVP 99
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -148,17 +150,18 @@ Testing MDCX4_PT1
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
MDCX 18983218 1@mgw MGCP 1.0
|
||||
---------8<---------
|
||||
M: SENDRECV
|
||||
C: 2
|
||||
I: %s
|
||||
L: p:20-40, a:AMR, nt:IN
|
||||
C: 2
|
||||
|
||||
v=0
|
||||
o=- %s 23 IN IP4 5.6.7.8
|
||||
c=IN IP4 5.6.7.8
|
||||
t=0 0
|
||||
m=audio 4441 RTP/AVP 99
|
||||
a=rtpmap:99 AMR/8000
|
||||
t=0 0
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -172,17 +175,18 @@ Testing MDCX4_PT2
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
MDCX 18983219 1@mgw MGCP 1.0
|
||||
creating message from statically defined input:
|
||||
M: sendrecv
|
||||
C: 2
|
||||
I: %s
|
||||
L: p:20-20, a:AMR, nt:IN
|
||||
M: sendrecv
|
||||
|
||||
v=0
|
||||
o=- %s 23 IN IP4 5.6.7.8
|
||||
c=IN IP4 5.6.7.8
|
||||
t=0 0
|
||||
m=audio 4441 RTP/AVP 99
|
||||
a=rtpmap:99 AMR/8000
|
||||
c=IN IP4 5.6.7.8
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -196,17 +200,18 @@ Testing MDCX4_PT3
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
MDCX 18983220 1@mgw MGCP 1.0
|
||||
Testing MDCX4_PT3
|
||||
M: sendrecv
|
||||
C: 2
|
||||
I: %s
|
||||
L: a:AMR, nt:IN
|
||||
MDCX 18983220 1@mgw MGCP 1.0
|
||||
|
||||
v=0
|
||||
o=- %s 23 IN IP4 5.6.7.8
|
||||
c=IN IP4 5.6.7.8
|
||||
t=0 0
|
||||
m=audio 4441 RTP/AVP 99
|
||||
a=rtpmap:99 AMR/8000
|
||||
o=- %s 23 IN IP4 5.6.7.8
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -220,17 +225,18 @@ Testing MDCX4_PT4
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
MDCX 18983221 1@mgw MGCP 1.0
|
||||
================================================
|
||||
m: sendrecv
|
||||
c: 2
|
||||
i: %s
|
||||
l: A:amr, NT:IN
|
||||
---------8<---------
|
||||
|
||||
v=0
|
||||
o=- %s 23 IN IP4 5.6.7.8
|
||||
c=IN IP4 5.6.7.8
|
||||
t=0 0
|
||||
m=audio 4441 RTP/AVP 99
|
||||
a=rtpmap:99 AMR/8000
|
||||
v=0
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -244,17 +250,18 @@ Testing MDCX4_SO
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
MDCX 18983222 1@mgw MGCP 1.0
|
||||
|
||||
M: sendonly
|
||||
C: 2
|
||||
I: %s
|
||||
L: p:20, a:AMR, nt:IN
|
||||
creating message from statically defined input:
|
||||
|
||||
v=0
|
||||
o=- %s 23 IN IP4 5.6.7.8
|
||||
c=IN IP4 5.6.7.8
|
||||
t=0 0
|
||||
m=audio 4441 RTP/AVP 99
|
||||
a=rtpmap:99 AMR/8000
|
||||
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -267,7 +274,8 @@ Testing MDCX4_RO
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
MDCX 18983223 1@mgw MGCP 1.0
|
||||
(response contains a connection id)
|
||||
M: recvonly
|
||||
C: 2
|
||||
I: %s
|
||||
L: p:20, a:AMR, nt:IN
|
||||
|
||||
@@ -296,9 +304,15 @@ Response matches our expectations.
|
||||
Testing CRCX_ZYN
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
using message as statically defined for comparison
|
||||
CRCX 2 1@mgw MGCP 1.0
|
||||
M: recvonly
|
||||
C: 2
|
||||
|
||||
v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
|
||||
(response does not contain a connection id)
|
||||
---------8<---------
|
||||
checking response:
|
||||
using message with patched conn_id for comparison
|
||||
@@ -414,7 +428,7 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
================================================
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -479,7 +493,7 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
Testing CRCX
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -550,7 +564,7 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
================================================
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -612,7 +626,7 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 0 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
================================================
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -633,7 +647,69 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 0 RTP/AVP 96
|
||||
a=rtpmap:96 VND.3GPP.IUFP/16000
|
||||
================================================
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
using message with patched conn_id for comparison
|
||||
Response matches our expectations.
|
||||
(response contains a connection id)
|
||||
|
||||
================================================
|
||||
Testing CRCX_PORT_0_IUFP_SENDRECV
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
CRCX 4 1@mgw MGCP 1.0
|
||||
M: sendrecv
|
||||
C: 2
|
||||
L: p:20
|
||||
|
||||
v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 0 RTP/AVP 96
|
||||
a=rtpmap:96 VND.3GPP.IUFP/16000
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
using message with patched conn_id for comparison
|
||||
Response matches our expectations.
|
||||
(response contains a connection id)
|
||||
|
||||
================================================
|
||||
Testing CRCX_PORT_0_IUFP_SENDRECV2
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
CRCX 4 1@mgw MGCP 1.0
|
||||
C: 2
|
||||
L: p:20
|
||||
|
||||
v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
a=sendrecv
|
||||
m=audio 0 RTP/AVP 96
|
||||
a=rtpmap:96 VND.3GPP.IUFP/16000
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
using message with patched conn_id for comparison
|
||||
Response matches our expectations.
|
||||
(response contains a connection id)
|
||||
|
||||
================================================
|
||||
Testing CRCX_PORT_0_IUFP_SENDRECV3
|
||||
creating message from statically defined input:
|
||||
---------8<---------
|
||||
CRCX 4 1@mgw MGCP 1.0
|
||||
C: 2
|
||||
L: p:20
|
||||
|
||||
v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 0 RTP/AVP 96
|
||||
a=rtpmap:96 VND.3GPP.IUFP/16000
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -654,7 +730,7 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
================================================
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -672,7 +748,7 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
Response matches our expectations.
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
@@ -784,7 +860,7 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
Response matches our expectations.
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
creating message from statically defined input:
|
||||
@@ -1238,7 +1314,7 @@ c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 18 97
|
||||
a=rtpmap:18 G729/8000
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
creating message from statically defined input:
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
creating message from statically defined input:
|
||||
@@ -1255,7 +1331,7 @@ m=audio 5904 RTP/AVP 18 97 101
|
||||
a=rtpmap:18 G729/8000
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
a=rtpmap:101 FOO/8000
|
||||
---------8<---------
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
creating message from statically defined input:
|
||||
@@ -1272,7 +1348,7 @@ m=audio 5904 RTP/AVP
|
||||
a=rtpmap:18 G729/8000
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
a=rtpmap:101 FOO/8000
|
||||
---------8<---------
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
creating message from statically defined input:
|
||||
@@ -1289,7 +1365,7 @@ m=audio 5904 RTP/AVP 18
|
||||
a=rtpmap:18 G729/8000
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
a=rtpmap:101 FOO/8000
|
||||
---------8<---------
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
creating message from statically defined input:
|
||||
@@ -1371,7 +1447,7 @@ v=0
|
||||
c=IN IP4 123.12.12.123
|
||||
m=audio 5904 RTP/AVP 97
|
||||
a=rtpmap:97 GSM-EFR/8000
|
||||
Testing no sequence flow on initial packet
|
||||
a=ptime:20
|
||||
|
||||
---------8<---------
|
||||
checking response:
|
||||
|
Reference in New Issue
Block a user