neels has submitted this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/34150?usp=email )
Change subject: vty and log: also show local port for RTP conns ...................................................................... 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 --- M src/libosmo-mgcp/mgcp_conn.c 1 file changed, 59 insertions(+), 32 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved keith: Looks good to me, but someone else must approve pespin: Looks good to me, approved diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c index afc9e4e..283a213 100644 --- a/src/libosmo-mgcp/mgcp_conn.c +++ b/src/libosmo-mgcp/mgcp_conn.c @@ -358,53 +358,37 @@ { 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; -- To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/34150?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Change-Id: Ib89a6779e1d68c6600f00699d4303f6c0ee07132 Gerrit-Change-Number: 34150 Gerrit-PatchSet: 4 Gerrit-Owner: keith <ke...@rhizomatica.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pma...@sysmocom.de> Gerrit-Reviewer: keith <ke...@rhizomatica.org> Gerrit-Reviewer: laforge <lafo...@osmocom.org> Gerrit-Reviewer: neels <nhofm...@sysmocom.de> Gerrit-Reviewer: osmith <osm...@sysmocom.de> Gerrit-Reviewer: pespin <pes...@sysmocom.de> Gerrit-MessageType: merged