vty and log: also show local port for RTP conns
Before: CONN: (1226/rtp, id:0xD94316AD, ip:127.0.0.2, rtp:2344 rtcp:2345) After: CONN: (1226/rtp C:D94316AD r=127.0.0.2:2344<->l=127.0.0.1:4002) While changing that string, also include these changes for consistency and readability: - use the same r:...<->l:... format as osmo_sock_get_name(). - Instead of 'id:0x' use the actual MGCP format 'C: 9B686BE3'. - drop the commas - drop RTCP port: it is always RTP+1 and always an odd number. Rationale: The CONN pairs associated with each endpoint show remote RTP ports. When osmo-mgw is being used by both BSC and MSC, one side of the pair is showing the internal loop connection inside osmo-mgw, while my intuition suggested this connection pair is showing me the RTP port tuple of a single RTP stream. Adding the local port to the display makes it more clear, IMHO. Seeing the local port can also help to correlate the MGW vty dump with a capture of RTP. Implementation: I first tried directly using osmo_sock_get_name_buf() on conn->u.rtp.end.rtp.fd, but that might hide already known information when the fd is not actively used yet (before SDP): the local address and port would then be shown from the fd, not from conn->u.rtp.end.local_addr/_port == hidden before the fd is set up. Patch-By: whytek, nhofmeyr Change-Id: Ib89a6779e1d68c6600f00699d4303f6c0ee07132
This commit is contained in:
parent
c695e9f972
commit
5e5c7bc176
|
@ -358,53 +358,37 @@ char *mgcp_conn_dump(struct mgcp_conn *conn)
|
|||
{
|
||||
static char str[sizeof(conn->name)+sizeof(conn->id)+256];
|
||||
char ipbuf[INET6_ADDRSTRLEN];
|
||||
struct osmo_strbuf sb = { .buf = str, .len = sizeof(str) };
|
||||
|
||||
if (!conn) {
|
||||
snprintf(str, sizeof(str), "(null connection)");
|
||||
return str;
|
||||
}
|
||||
if (!conn)
|
||||
return "NULL";
|
||||
|
||||
switch (conn->type) {
|
||||
case MGCP_CONN_TYPE_RTP:
|
||||
OSMO_STRBUF_PRINTF(sb, "(%s/%s C:%s r=%s:%u<->l=%s:%u",
|
||||
conn->name,
|
||||
mgcp_conn_rtp_type_name(conn->type),
|
||||
conn->id,
|
||||
osmo_sockaddr_ntop(&conn->u.rtp.end.addr.u.sa, ipbuf) ? : "NULL",
|
||||
osmo_sockaddr_port(&conn->u.rtp.end.addr.u.sa),
|
||||
conn->u.rtp.end.local_addr ? : "NULL",
|
||||
conn->u.rtp.end.local_port);
|
||||
|
||||
switch (conn->u.rtp.type) {
|
||||
case MGCP_RTP_DEFAULT:
|
||||
/* Dump RTP connection */
|
||||
snprintf(str, sizeof(str), "(%s/rtp, id:0x%s, ip:%s, "
|
||||
"rtp:%u rtcp:%u)",
|
||||
conn->name, conn->id,
|
||||
osmo_sockaddr_ntop(&conn->u.rtp.end.addr.u.sa, ipbuf),
|
||||
osmo_sockaddr_port(&conn->u.rtp.end.addr.u.sa),
|
||||
ntohs(conn->u.rtp.end.rtcp_port));
|
||||
break;
|
||||
case MGCP_RTP_OSMUX:
|
||||
snprintf(str, sizeof(str), "(%s/osmux, id:0x%s, ip:%s, "
|
||||
"port:%u CID:%u)",
|
||||
conn->name, conn->id,
|
||||
osmo_sockaddr_ntop(&conn->u.rtp.end.addr.u.sa, ipbuf),
|
||||
osmo_sockaddr_port(&conn->u.rtp.end.addr.u.sa),
|
||||
conn->u.rtp.osmux.local_cid);
|
||||
break;
|
||||
case MGCP_RTP_IUUP:
|
||||
snprintf(str, sizeof(str), "(%s/iuup, id:0x%s, ip:%s, "
|
||||
"port:%u)",
|
||||
conn->name, conn->id,
|
||||
osmo_sockaddr_ntop(&conn->u.rtp.end.addr.u.sa, ipbuf),
|
||||
osmo_sockaddr_port(&conn->u.rtp.end.addr.u.sa));
|
||||
OSMO_STRBUF_PRINTF(sb, " CID=%u", conn->u.rtp.osmux.local_cid);
|
||||
break;
|
||||
default:
|
||||
/* Should not happen, we should be able to dump
|
||||
* every possible connection type. */
|
||||
snprintf(str, sizeof(str), "(unknown conn_rtp connection type %u)",
|
||||
conn->u.rtp.type);
|
||||
break;
|
||||
}
|
||||
|
||||
OSMO_STRBUF_PRINTF(sb, ")");
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Should not happen, we should be able to dump
|
||||
* every possible connection type. */
|
||||
snprintf(str, sizeof(str), "(unknown connection type)");
|
||||
break;
|
||||
return "(unknown connection type)";
|
||||
}
|
||||
|
||||
return str;
|
||||
|
|
Loading…
Reference in New Issue