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