Change in osmo-bts[master]: osmo-bts-virtual: Fix "virtual-um net-device NETDEV"

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/.

laforge gerrit-no-reply at lists.osmocom.org
Tue Mar 10 16:13:42 UTC 2020


laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/17444 )


Change subject: osmo-bts-virtual: Fix "virtual-um net-device NETDEV"
......................................................................

osmo-bts-virtual: Fix "virtual-um net-device NETDEV"

The VTY option to bind the virtual Um multicast to a specific
network interface has existed ever since osmo-bts-virtual was
first merged to the repo.   However, embarrassingly, until today
it never did anything, i.e. the code to actually perform the bind
was missing.

Depends: libosmocore.git Ib52d22710020b56965aefcef09bde8247ace4a9c
Change-Id: I303f2e616d2d32b5a8005c3dcf0f5fad19ad3445
Related: OS#2966
---
M src/osmo-bts-virtual/l1_if.c
M src/osmo-bts-virtual/virtual_um.c
M src/osmo-bts-virtual/virtual_um.h
3 files changed, 21 insertions(+), 6 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/44/17444/1

diff --git a/src/osmo-bts-virtual/l1_if.c b/src/osmo-bts-virtual/l1_if.c
index 3128012..c5c526c 100644
--- a/src/osmo-bts-virtual/l1_if.c
+++ b/src/osmo-bts-virtual/l1_if.c
@@ -204,7 +204,7 @@
 
 	plink->u.virt.virt_um = virt_um_init(plink, plink->u.virt.ms_mcast_group, plink->u.virt.ms_mcast_port,
 					     plink->u.virt.bts_mcast_group, plink->u.virt.bts_mcast_port,
-					     plink->u.virt.ttl, virt_um_rcv_cb);
+					     plink->u.virt.ttl, plink->u.virt.mcast_dev, virt_um_rcv_cb);
 	if (!plink->u.virt.virt_um) {
 		phy_link_state_set(plink, PHY_LINK_SHUTDOWN);
 		return -1;
diff --git a/src/osmo-bts-virtual/virtual_um.c b/src/osmo-bts-virtual/virtual_um.c
index e19f9f2..1ff5291 100644
--- a/src/osmo-bts-virtual/virtual_um.c
+++ b/src/osmo-bts-virtual/virtual_um.c
@@ -62,7 +62,7 @@
 }
 
 struct virt_um_inst *virt_um_init(void *ctx, char *tx_mcast_group, uint16_t tx_mcast_port,
-				  char *rx_mcast_group, uint16_t rx_mcast_port, int ttl,
+				  char *rx_mcast_group, uint16_t rx_mcast_port, int ttl, const char *dev_name,
 				  void (*recv_cb)(struct virt_um_inst *vui, struct msgb *msg))
 {
 	struct virt_um_inst *vui = talloc_zero(ctx, struct virt_um_inst);
@@ -81,14 +81,29 @@
 		rc = osmo_sock_mcast_ttl_set(vui->mcast_sock->tx_ofd.fd, ttl);
 		if (rc < 0) {
 			perror("Cannot set TTL of Virtual Um transmit socket");
-			mcast_bidir_sock_close(vui->mcast_sock);
-			talloc_free(vui);
-			return NULL;
+			goto out_close;
+		}
+	}
+
+	if (dev_name) {
+		rc = osmo_sock_mcast_iface_set(vui->mcast_sock->tx_ofd.fd, dev_name);
+		if (rc < 0) {
+			perror("Cannot bind multicast tx to given device");
+			goto out_close;
+		}
+		rc = osmo_sock_mcast_iface_set(vui->mcast_sock->rx_ofd.fd, dev_name);
+		if (rc < 0) {
+			perror("Cannot bind multicast rx to given device");
+			goto out_close;
 		}
 	}
 
 	return vui;
 
+out_close:
+	mcast_bidir_sock_close(vui->mcast_sock);
+	talloc_free(vui);
+	return NULL;
 }
 
 void virt_um_destroy(struct virt_um_inst *vui)
diff --git a/src/osmo-bts-virtual/virtual_um.h b/src/osmo-bts-virtual/virtual_um.h
index 7841c33..87cf03a 100644
--- a/src/osmo-bts-virtual/virtual_um.h
+++ b/src/osmo-bts-virtual/virtual_um.h
@@ -23,7 +23,7 @@
 
 struct virt_um_inst *virt_um_init(
                 void *ctx, char *tx_mcast_group, uint16_t tx_mcast_port,
-                char *rx_mcast_group, uint16_t rx_mcast_port, int ttl,
+                char *rx_mcast_group, uint16_t rx_mcast_port, int ttl, const char *dev_name,
                 void (*recv_cb)(struct virt_um_inst *vui, struct msgb *msg));
 
 void virt_um_destroy(struct virt_um_inst *vui);

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

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I303f2e616d2d32b5a8005c3dcf0f5fad19ad3445
Gerrit-Change-Number: 17444
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200310/418d31cb/attachment.htm>


More information about the gerrit-log mailing list