Change in osmo-msc[master]: Support sending IPv6 Transport Address in Assignment Command

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Wed Sep 9 10:41:30 UTC 2020


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-msc/+/19922 )

Change subject: Support sending IPv6 Transport Address in Assignment Command
......................................................................

Support sending IPv6 Transport Address in Assignment Command

Change-Id: Ida43f10a41afbd275233f0ef102287522a2e7099
---
M src/libmsc/ran_msg_a.c
1 file changed, 40 insertions(+), 17 deletions(-)

Approvals:
  Jenkins Builder: Verified
  dexter: Looks good to me, but someone else must approve; Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved



diff --git a/src/libmsc/ran_msg_a.c b/src/libmsc/ran_msg_a.c
index 8158e91..c17eb3d 100644
--- a/src/libmsc/ran_msg_a.c
+++ b/src/libmsc/ran_msg_a.c
@@ -977,25 +977,48 @@
 
 		/* Package RTP-Address data */
 		if (osmo_sockaddr_str_is_nonzero(ac->cn_rtp)) {
-			struct sockaddr_in rtp_addr_in;
-
-			memset(&rtp_addr_in, 0, sizeof(rtp_addr_in));
-			rtp_addr_in.sin_family = AF_INET;
-			rtp_addr_in.sin_port = osmo_htons(ac->cn_rtp->port),
-			rtp_addr_in.sin_addr.s_addr = inet_addr(ac->cn_rtp->ip);
-
-			if (rtp_addr_in.sin_addr.s_addr == INADDR_NONE) {
-				LOG_RAN_A_ENC(log_fi, LOGL_ERROR, "Assignment Command: Invalid RTP-Address\n");
+			struct sockaddr_in *sin;
+			struct sockaddr_in6 *sin6;
+			int family = osmo_ip_str_type(ac->cn_rtp->ip);
+			switch (family) {
+			case AF_INET:
+				sin = (struct sockaddr_in *)&rtp_addr;
+				sin->sin_family = AF_INET;
+				sin->sin_port = osmo_htons(ac->cn_rtp->port);
+				if (inet_pton(AF_INET, ac->cn_rtp->ip, &sin->sin_addr) != 1) {
+					LOG_RAN_A_ENC(log_fi, LOGL_ERROR,
+						      "Assignment Command: Invalid RTP-Address %s\n",
+						      ac->cn_rtp->ip);
+					return NULL;
+				}
+				if (sin->sin_port == 0) {
+					LOG_RAN_A_ENC(log_fi, LOGL_ERROR,
+							"Assignment Command: Invalid RTP-Port\n");
+					return NULL;
+				}
+				break;
+			case AF_INET6:
+				sin6 = (struct sockaddr_in6 *)&rtp_addr;
+				sin6->sin6_family = AF_INET6;
+				sin6->sin6_port = osmo_htons(ac->cn_rtp->port);
+				if (inet_pton(AF_INET6, ac->cn_rtp->ip, &sin6->sin6_addr) != 1) {
+					LOG_RAN_A_ENC(log_fi, LOGL_ERROR,
+						      "Assignment Command: Invalid RTP-Address %s\n",
+						      ac->cn_rtp->ip);
+					return NULL;
+				}
+				if (sin6->sin6_port == 0) {
+					LOG_RAN_A_ENC(log_fi, LOGL_ERROR,
+							"Assignment Command: Invalid RTP-Port\n");
+					return NULL;
+				}
+				break;
+			default:
+				LOG_RAN_A_ENC(log_fi, LOGL_ERROR,
+					      "Assignment Command: Invalid RTP-Address type for %s\n",
+					       ac->cn_rtp->ip);
 				return NULL;
 			}
-			if (rtp_addr_in.sin_port == 0) {
-				LOG_RAN_A_ENC(log_fi, LOGL_ERROR, "Assignment Command: Invalid RTP-Port\n");
-				return NULL;
-			}
-
-			memset(&rtp_addr, 0, sizeof(rtp_addr));
-			memcpy(&rtp_addr, &rtp_addr_in, sizeof(rtp_addr_in));
-
 			use_rtp_addr = &rtp_addr;
 		}
 	}

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/19922
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: Ida43f10a41afbd275233f0ef102287522a2e7099
Gerrit-Change-Number: 19922
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200909/94ea320d/attachment.htm>


More information about the gerrit-log mailing list