pespin submitted this change.
mgw: Rename and move several get_conn funcs acting on endp object
These functions act on the endp object, hence prefix them with
mgcp_endp_* and move them to mgcp_endp.{c,h}.
Change-Id: Ifff01331db68998e9e23f99d8836d96022d550c2
---
M include/osmocom/mgcp/mgcp_conn.h
M include/osmocom/mgcp/mgcp_endp.h
M src/libosmo-mgcp/mgcp_conn.c
M src/libosmo-mgcp/mgcp_e1.c
M src/libosmo-mgcp/mgcp_endp.c
M src/libosmo-mgcp/mgcp_msg.c
M src/libosmo-mgcp/mgcp_protocol.c
M src/libosmo-mgcp/mgcp_vty.c
M tests/mgcp/mgcp_test.c
9 files changed, 87 insertions(+), 86 deletions(-)
diff --git a/include/osmocom/mgcp/mgcp_conn.h b/include/osmocom/mgcp/mgcp_conn.h
index 6219579..de9bae6 100644
--- a/include/osmocom/mgcp/mgcp_conn.h
+++ b/include/osmocom/mgcp/mgcp_conn.h
@@ -240,10 +240,6 @@
struct mgcp_conn *mgcp_conn_alloc(void *ctx, struct mgcp_endpoint *endp,
enum mgcp_conn_type type, char *name);
void mgcp_conn_free(struct mgcp_conn *conn);
-struct mgcp_conn *mgcp_conn_get(struct mgcp_endpoint *endp, const char *id);
-struct mgcp_conn_rtp *mgcp_conn_get_rtp(struct mgcp_endpoint *endp,
- const char *id);
char *mgcp_conn_dump(struct mgcp_conn *conn);
struct mgcp_conn *mgcp_find_dst_conn(struct mgcp_conn *conn);
-struct mgcp_conn *mgcp_conn_get_oldest(struct mgcp_endpoint *endp);
void mgcp_conn_watchdog_kick(struct mgcp_conn *conn);
diff --git a/include/osmocom/mgcp/mgcp_endp.h b/include/osmocom/mgcp/mgcp_endp.h
index 8e5b4cc..4f41818 100644
--- a/include/osmocom/mgcp/mgcp_endp.h
+++ b/include/osmocom/mgcp/mgcp_endp.h
@@ -148,3 +148,8 @@
struct mgcp_endpoint *mgcp_endp_find_specific(const char *epname,
const struct mgcp_trunk *trunk);
void mgcp_endp_release(struct mgcp_endpoint *endp);
+
+struct mgcp_conn *mgcp_endp_get_conn(struct mgcp_endpoint *endp, const char *id);
+struct mgcp_conn *mgcp_endp_get_conn_oldest(struct mgcp_endpoint *endp);
+struct mgcp_conn_rtp *mgcp_endp_get_conn_rtp(struct mgcp_endpoint *endp,
+ const char *id);
diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c
index 9c60dfa..9d03550 100644
--- a/src/libosmo-mgcp/mgcp_conn.c
+++ b/src/libosmo-mgcp/mgcp_conn.c
@@ -74,7 +74,7 @@
/* ensure that the generated conn_id is unique
* for this endpoint */
- if (!mgcp_conn_get_rtp(endp, id_hex)) {
+ if (!mgcp_endp_get_conn_rtp(endp, id_hex)) {
osmo_strlcpy(id, id_hex, MGCP_CONN_ID_MAXLEN);
return 0;
}
@@ -212,58 +212,6 @@
return conn;
}
-/*! find a connection by its ID.
- * \param[in] endp associated endpoint
- * \param[in] id identification number of the connection
- * \returns pointer to allocated connection, NULL if not found */
-struct mgcp_conn *mgcp_conn_get(struct mgcp_endpoint *endp, const char *id)
-{
- struct mgcp_conn *conn;
- const char *id_upper;
- const char *conn_id;
-
- if (!id || !*id)
- return NULL;
-
- /* Ignore leading zeros in needle */
- while (*id == '0')
- id++;
-
- /* Use uppercase to compare identifiers, to avoid mismatches: RFC3435 2.1.3.2 "Names of
- * Connections" defines the id as a hex string, so clients may return lower case hex even though
- * we sent upper case hex in the CRCX response. */
- id_upper = osmo_str_toupper(id);
-
- llist_for_each_entry(conn, &endp->conns, entry) {
- /* Ignore leading zeros in haystack */
- for (conn_id=conn->id; *conn_id == '0'; conn_id++);
-
- if (strcmp(conn_id, id_upper) == 0)
- return conn;
- }
-
- return NULL;
-}
-
-/*! find an RTP connection by its ID.
- * \param[in] endp associated endpoint
- * \param[in] id identification number of the connection
- * \returns pointer to allocated connection, NULL if not found */
-struct mgcp_conn_rtp *mgcp_conn_get_rtp(struct mgcp_endpoint *endp,
- const char *id)
-{
- struct mgcp_conn *conn;
-
- conn = mgcp_conn_get(endp, id);
- if (!conn)
- return NULL;
-
- if (conn->type == MGCP_CONN_TYPE_RTP)
- return &conn->u.rtp;
-
- return NULL;
-}
-
static void aggregate_rtp_conn_stats(struct mgcp_endpoint *endp, struct mgcp_conn_rtp *conn_rtp)
{
struct rate_ctr_group *all_stats = endp->trunk->ratectr.all_rtp_conn_stats;
@@ -377,16 +325,6 @@
return NULL;
}
-/*! get oldest connection in the list.
- * \param[in] endp associated endpoint */
-struct mgcp_conn *mgcp_conn_get_oldest(struct mgcp_endpoint *endp)
-{
- if (llist_empty(&endp->conns))
- return NULL;
-
- return llist_last_entry(&endp->conns, struct mgcp_conn, entry);
-}
-
const struct value_string mgcp_conn_rtp_type_names[] = {
{ MGCP_RTP_DEFAULT, "rtp" },
{ MGCP_RTP_OSMUX, "osmux" },
diff --git a/src/libosmo-mgcp/mgcp_e1.c b/src/libosmo-mgcp/mgcp_e1.c
index 1428824..fac1ff6 100644
--- a/src/libosmo-mgcp/mgcp_e1.c
+++ b/src/libosmo-mgcp/mgcp_e1.c
@@ -656,7 +656,7 @@
/* In order to determine the codec, find the oldest connection on
* the endpoint and use its codec information. Normally on an E1
* endpoint no more than one connection should exist. */
- conn = mgcp_conn_get_oldest(endp);
+ conn = mgcp_endp_get_conn_oldest(endp);
OSMO_ASSERT(conn);
codec = conn->u.rtp.end.codec;
OSMO_ASSERT(codec);
diff --git a/src/libosmo-mgcp/mgcp_endp.c b/src/libosmo-mgcp/mgcp_endp.c
index 6973b43..b2ece20 100644
--- a/src/libosmo-mgcp/mgcp_endp.c
+++ b/src/libosmo-mgcp/mgcp_endp.c
@@ -684,6 +684,68 @@
mgcp_conn_free(conn);
}
+/*! find a connection by its ID.
+ * \param[in] endp associated endpoint
+ * \param[in] id identification number of the connection
+ * \returns pointer to allocated connection, NULL if not found */
+struct mgcp_conn *mgcp_endp_get_conn(struct mgcp_endpoint *endp, const char *id)
+{
+ struct mgcp_conn *conn;
+ const char *id_upper;
+ const char *conn_id;
+
+ if (!id || !*id)
+ return NULL;
+
+ /* Ignore leading zeros in needle */
+ while (*id == '0')
+ id++;
+
+ /* Use uppercase to compare identifiers, to avoid mismatches: RFC3435 2.1.3.2 "Names of
+ * Connections" defines the id as a hex string, so clients may return lower case hex even though
+ * we sent upper case hex in the CRCX response. */
+ id_upper = osmo_str_toupper(id);
+
+ llist_for_each_entry(conn, &endp->conns, entry) {
+ /* Ignore leading zeros in haystack */
+ for (conn_id = conn->id; *conn_id == '0'; conn_id++);
+
+ if (strcmp(conn_id, id_upper) == 0)
+ return conn;
+ }
+
+ return NULL;
+}
+
+/*! get oldest connection in the list.
+ * \param[in] endp associated endpoint */
+struct mgcp_conn *mgcp_endp_get_conn_oldest(struct mgcp_endpoint *endp)
+{
+ if (llist_empty(&endp->conns))
+ return NULL;
+
+ return llist_last_entry(&endp->conns, struct mgcp_conn, entry);
+}
+
+/*! find an RTP connection by its ID.
+ * \param[in] endp associated endpoint
+ * \param[in] id identification number of the connection
+ * \returns pointer to allocated connection, NULL if not found */
+struct mgcp_conn_rtp *mgcp_endp_get_conn_rtp(struct mgcp_endpoint *endp,
+ const char *id)
+{
+ struct mgcp_conn *conn;
+
+ conn = mgcp_endp_get_conn(endp, id);
+ if (!conn)
+ return NULL;
+
+ if (conn->type == MGCP_CONN_TYPE_RTP)
+ return &conn->u.rtp;
+
+ return NULL;
+}
+
/*! release endpoint, all open connections are closed.
* \param[in] endp endpoint to release */
void mgcp_endp_release(struct mgcp_endpoint *endp)
diff --git a/src/libosmo-mgcp/mgcp_msg.c b/src/libosmo-mgcp/mgcp_msg.c
index a46ffc2..5900a65 100644
--- a/src/libosmo-mgcp/mgcp_msg.c
+++ b/src/libosmo-mgcp/mgcp_msg.c
@@ -294,7 +294,7 @@
}
/* Check if connection exists */
- if (mgcp_conn_get(endp, conn_id))
+ if (mgcp_endp_get_conn(endp, conn_id))
return 0;
LOGPENDP(endp, DLMGCP, LOGL_ERROR,
diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c
index dbe6760..d166a4e 100644
--- a/src/libosmo-mgcp/mgcp_protocol.c
+++ b/src/libosmo-mgcp/mgcp_protocol.c
@@ -1022,7 +1022,7 @@
goto error2;
}
- conn = mgcp_conn_get_rtp(endp, _conn->id);
+ conn = mgcp_endp_get_conn_rtp(endp, _conn->id);
OSMO_ASSERT(conn);
if (mgcp_parse_conn_mode(mode, endp, conn->conn) != 0) {
@@ -1237,7 +1237,7 @@
return create_err_response(endp, endp, 515, "MDCX", pdata->trans);
}
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
if (!conn) {
rate_ctr_inc(rate_ctr_group_get_ctr(rate_ctrs, MGCP_MDCX_FAIL_CONN_NOT_FOUND));
return create_err_response(endp, endp, 400, "MDCX", pdata->trans);
@@ -1475,7 +1475,7 @@
}
/* Find the connection */
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
if (!conn) {
rate_ctr_inc(rate_ctr_group_get_ctr(rate_ctrs, MGCP_DLCX_FAIL_INVALID_CONNID));
goto error3;
diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c
index b82f3df..042841c 100644
--- a/src/libosmo-mgcp/mgcp_vty.c
+++ b/src/libosmo-mgcp/mgcp_vty.c
@@ -1418,7 +1418,7 @@
endp = trunk->endpoints[endp_no];
conn_id = argv[2];
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
if (!conn) {
vty_out(vty, "Conn ID %s is invalid.%s",
conn_id, VTY_NEWLINE);
diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c
index 44927e1..c257d6a 100644
--- a/tests/mgcp/mgcp_test.c
+++ b/tests/mgcp/mgcp_test.c
@@ -965,7 +965,7 @@
endp = mgcp_endp_by_name(NULL, last_endpoint, cfg);
OSMO_ASSERT(endp);
- conn = mgcp_conn_get_rtp(endp, "1");
+ conn = mgcp_endp_get_conn_rtp(endp, "1");
if (conn) {
OSMO_ASSERT(conn);
@@ -1209,7 +1209,7 @@
mgcp_conn_alloc(NULL, &endp, MGCP_CONN_TYPE_RTP,
"test-connection");
OSMO_ASSERT(_conn);
- conn = mgcp_conn_get_rtp(&endp, _conn->id);
+ conn = mgcp_endp_get_conn_rtp(&endp, _conn->id);
OSMO_ASSERT(conn);
state = &conn->state;
packets_rx = rate_ctr_group_get_ctr(conn->ctrg, RTP_PACKETS_RX_CTR);
@@ -1461,7 +1461,7 @@
_conn = mgcp_conn_alloc(NULL, &endp, MGCP_CONN_TYPE_RTP,
"test-connection");
OSMO_ASSERT(_conn);
- conn = mgcp_conn_get_rtp(&endp, _conn->id);
+ conn = mgcp_endp_get_conn_rtp(&endp, _conn->id);
OSMO_ASSERT(conn);
rtp = &conn->end;
@@ -1548,7 +1548,7 @@
OSMO_ASSERT(strcmp(last_endpoint,"rtpbridge/1@mgw") == 0);
endp = mgcp_endp_by_name(NULL, last_endpoint, cfg);
OSMO_ASSERT(endp);
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
OSMO_ASSERT(conn);
OSMO_ASSERT(conn->end.codec->payload_type == 18);
@@ -1564,7 +1564,7 @@
OSMO_ASSERT(strcmp(last_endpoint,"rtpbridge/2@mgw") == 0);
endp = mgcp_endp_by_name(NULL, last_endpoint, cfg);
OSMO_ASSERT(endp);
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
OSMO_ASSERT(conn);
OSMO_ASSERT(conn->end.codec->payload_type == 18);
@@ -1585,7 +1585,7 @@
OSMO_ASSERT(strcmp(last_endpoint,"rtpbridge/3@mgw") == 0);
endp = mgcp_endp_by_name(NULL, last_endpoint, cfg);
OSMO_ASSERT(endp);
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
OSMO_ASSERT(conn);
OSMO_ASSERT(conn->end.codec->payload_type == 0);
@@ -1601,7 +1601,7 @@
OSMO_ASSERT(strcmp(last_endpoint,"rtpbridge/4@mgw") == 0);
endp = mgcp_endp_by_name(NULL, last_endpoint, cfg);
OSMO_ASSERT(endp);
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
OSMO_ASSERT(conn);
OSMO_ASSERT(conn->end.codec->payload_type == 18);
@@ -1617,7 +1617,7 @@
OSMO_ASSERT(strcmp(last_endpoint,"rtpbridge/5@mgw") == 0);
endp = mgcp_endp_by_name(NULL, last_endpoint, cfg);
OSMO_ASSERT(endp);
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
OSMO_ASSERT(conn);
OSMO_ASSERT(conn->end.codec->payload_type == 0);
@@ -1629,7 +1629,7 @@
OSMO_ASSERT(strcmp(last_endpoint,"rtpbridge/5@mgw") == 0);
endp = mgcp_endp_by_name(NULL, last_endpoint, cfg);
OSMO_ASSERT(endp);
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
OSMO_ASSERT(conn);
OSMO_ASSERT(conn->end.codec->payload_type == 3);
OSMO_ASSERT(osmo_sockaddr_port(&conn->end.addr.u.sa) == 16434);
@@ -1646,7 +1646,7 @@
talloc_free(endp->last_response);
talloc_free(endp->last_trans);
endp->last_response = endp->last_trans = NULL;
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
OSMO_ASSERT(!conn);
last_endpoint[0] = '\0';
@@ -1660,7 +1660,7 @@
OSMO_ASSERT(strcmp(last_endpoint,"rtpbridge/5@mgw") == 0);
endp = mgcp_endp_by_name(NULL, last_endpoint, cfg);
OSMO_ASSERT(endp);
- conn = mgcp_conn_get_rtp(endp, conn_id);
+ conn = mgcp_endp_get_conn_rtp(endp, conn_id);
OSMO_ASSERT(conn);
OSMO_ASSERT(conn->end.codec->payload_type == 0);
@@ -1689,7 +1689,7 @@
_conn = mgcp_conn_alloc(NULL, endp, MGCP_CONN_TYPE_RTP,
"test-connection");
OSMO_ASSERT(_conn);
- conn = mgcp_conn_get_rtp(endp, _conn->id);
+ conn = mgcp_endp_get_conn_rtp(endp, _conn->id);
OSMO_ASSERT(conn);
OSMO_ASSERT(conn->state.stats.initialized == 0);
@@ -2332,7 +2332,7 @@
for (i = 0; i < ARRAY_SIZE(conn_id_request); i++) {
const char *needle = conn_id_request[i];
printf("needle='%s' ", needle);
- conn_match = mgcp_conn_get(&endp, needle);
+ conn_match = mgcp_endp_get_conn(&endp, needle);
OSMO_ASSERT(conn_match);
printf("found '%s'\n", conn_match->id);
OSMO_ASSERT(conn_match == conn);
To view, visit change 39184. To unsubscribe, or for help writing mail filters, visit settings.