From 241fe9c3e24e44ca5fb9882ad49e98325b312a62 Mon Sep 17 00:00:00 2001 From: Sebastian Stumpf Date: Mon, 27 Feb 2017 15:13:26 +0100 Subject: 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 --- src/host/virt_phy/src/shared/osmo_mcast_sock.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/host') 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; -- cgit v1.2.3