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

Reply via email to