Index: avahi-core/socket.c
===================================================================
--- avahi-core/socket.c	(revision 1177)
+++ avahi-core/socket.c	(working copy)
@@ -513,7 +513,7 @@
             pkti->ipi_spec_dst.s_addr = src_address->address;
 
         msg.msg_control = cmsg_data;
-        msg.msg_controllen = sizeof(cmsg_data);
+        msg.msg_controllen = CMSG_SPACE(sizeof(struct in_pktinfo));
     }
 #elif defined(IP_SENDSRCADDR)
     if (src_address) {
@@ -529,7 +529,7 @@
 	addr->s_addr =  src_address->address;
 	
 	msg.msg_control = cmsg_data;
-	msg.msg_controllen = sizeof(cmsg_data);
+	msg.msg_controllen = CMSG_SPACE(sizeof(struct in_addr));
     }
 #elif defined(IP_MULTICAST_IF)
     {
@@ -592,7 +592,7 @@
             memcpy(&pkti->ipi6_addr, src_address->address, sizeof(src_address->address));
         
         msg.msg_control = cmsg_data;
-        msg.msg_controllen = sizeof(cmsg_data);
+        msg.msg_controllen = CMSG_SPACE(sizeof(struct in6_pktinfo));
     } else {
         msg.msg_control = NULL;
         msg.msg_controllen = 0;

