summaryrefslogtreecommitdiffstats
path: root/src/host/virt_phy/src/shared/osmo_mcast_sock.c
diff options
context:
space:
mode:
authorSebastian Stumpf <sebastian.stumpf87@googlemail.com>2017-02-27 15:13:26 +0100
committerHarald Welte <laforge@gnumonks.org>2017-07-12 23:26:26 +0200
commit241fe9c3e24e44ca5fb9882ad49e98325b312a62 (patch)
tree4f7fc44098c217408c2a0c99d876c8533dd4380d /src/host/virt_phy/src/shared/osmo_mcast_sock.c
parent360de6bead3b1eaa897a55b8d8436c5613b7d100 (diff)
VIRT-PHY: Fixed error causing send msgs to be received on same sock.
This could be disabled setting socket option IP_MULTICAST_ALL = 0. Change-Id: Ia2838c4cd39bfac04c014b4c8512466b301d8875
Diffstat (limited to 'src/host/virt_phy/src/shared/osmo_mcast_sock.c')
-rw-r--r--src/host/virt_phy/src/shared/osmo_mcast_sock.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/host/virt_phy/src/shared/osmo_mcast_sock.c b/src/host/virt_phy/src/shared/osmo_mcast_sock.c
index acc6bcb1..ff81063a 100644
--- a/src/host/virt_phy/src/shared/osmo_mcast_sock.c
+++ b/src/host/virt_phy/src/shared/osmo_mcast_sock.c
@@ -52,7 +52,7 @@ struct mcast_client_sock *mcast_client_sock_setup(
struct mcast_client_sock);
struct sockaddr_in *rx_sock_conf = talloc_zero(NULL,
struct sockaddr_in);
- int rc, reuseaddr = 1, loopback = 1;
+ int rc, reuseaddr = 1, loopback = 1, all = 0;
client_sock->osmo_fd = talloc_zero(ctx, struct osmo_fd);
client_sock->mcast_group = talloc_zero(ctx, struct ip_mreq);
@@ -107,6 +107,14 @@ struct mcast_client_sock *mcast_client_sock_setup(
return NULL;
}
+ // this option will set the delivery option so that only packages are received
+ // from sockets we are bound to via IP_ADD_MEMBERSHIP
+ if (setsockopt(client_sock->osmo_fd->fd, IPPROTO_IP,
+ IP_MULTICAST_ALL, &all, sizeof(all)) < 0) {
+ perror("Failed to modify delivery policy to explicitly joined.\n");
+ return NULL;
+ }
+
// configure and register the osmocom filedescriptor
client_sock->osmo_fd->cb = fd_rx_cb;
client_sock->osmo_fd->when = BSC_FD_READ;