1 From 59e09c68f75807d99ebcde84aa3cbfaf4d15d0d4 Mon Sep 17 00:00:00 2001
2 From: Wolfgang Bumiller <w.bumiller@proxmox.com>
3 Date: Tue, 19 May 2015 13:57:54 +0200
4 Subject: [PATCH] totem: swap unicast and multicast bind order
6 For some reason binding the unicast socket after the multicast socket
7 renders the former inert when using ipv6 on older kernels (tested on
8 3.10). This is a workaround for this issue.
10 exec/totemudp.c | 25 +++++++++++++------------
11 1 file changed, 13 insertions(+), 12 deletions(-)
13 diff --git a/exec/totemudp.c b/exec/totemudp.c
14 index 8ed87ce..86cb330 100644
17 @@ -761,18 +761,6 @@ static int totemudp_build_sockets_ip (
21 - * Bind to multicast socket used for multicast receives
23 - totemip_totemip_to_sockaddr_convert(mcast_address,
24 - instance->totem_interface->ip_port, &sockaddr, &addrlen);
25 - res = bind (sockets->mcast_recv, (struct sockaddr *)&sockaddr, addrlen);
27 - LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
28 - "Unable to bind the socket to receive multicast packets");
33 * Create local multicast loop socket
35 if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sockets->local_mcast_loop) == -1) {
36 @@ -870,6 +858,19 @@ static int totemudp_build_sockets_ip (
41 + * Bind to multicast socket used for multicast receives
43 + totemip_totemip_to_sockaddr_convert(mcast_address,
44 + instance->totem_interface->ip_port, &sockaddr, &addrlen);
45 + res = bind (sockets->mcast_recv, (struct sockaddr *)&sockaddr, addrlen);
47 + LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
48 + "Unable to bind the socket to receive multicast packets");
53 recvbuf_size = MCAST_SOCKET_BUFFER_SIZE;
54 sendbuf_size = MCAST_SOCKET_BUFFER_SIZE;