[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Thu Feb 28 12:57:02 MST 2013


The branch, master has been updated
       via  8ac431a Fix bug # 9666 - Broken filtering of link-local addresses.
      from  61f34e2 s3:pylibsmb: make sure we get tevent debug messages

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 8ac431a22e45611d4bbded67c4c8bd864c343a8f
Author: Timur Bakeyev <timur at FreeBSD.org>
Date:   Wed Feb 27 16:25:07 2013 -0800

    Fix bug # 9666 - Broken filtering of link-local addresses.
    
    This patch should address the problem with Link Local addresses
    on FreeBSD and Linux.
    
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Richard Sharpe <rsharpe at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Thu Feb 28 20:56:57 CET 2013 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 lib/socket/interfaces.c |   28 +++++++++++++++-------------
 1 files changed, 15 insertions(+), 13 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/socket/interfaces.c b/lib/socket/interfaces.c
index 74c6423..e62da3c 100644
--- a/lib/socket/interfaces.c
+++ b/lib/socket/interfaces.c
@@ -186,6 +186,21 @@ static int _get_interfaces(TALLOC_CTX *mem_ctx, struct iface_struct **pifaces)
 		memcpy(&ifaces[total].ip, ifptr->ifa_addr, copy_size);
 		memcpy(&ifaces[total].netmask, ifptr->ifa_netmask, copy_size);
 
+		/* calculate broadcast address */
+#if defined(HAVE_IPV6)
+		if (ifptr->ifa_addr->sa_family == AF_INET6) {
+			struct sockaddr_in6 *sin6 =
+				(struct sockaddr_in6 *)ifptr->ifa_addr;
+			struct in6_addr *in6 =
+				(struct in6_addr *)&sin6->sin6_addr;
+
+			if (IN6_IS_ADDR_LINKLOCAL(in6) || IN6_IS_ADDR_V4COMPAT(in6)) {
+				continue;
+			}
+			/* IPv6 does not have broadcast it uses multicast. */
+			memset(&ifaces[total].bcast, '\0', copy_size);
+		} else
+#endif
 		if (ifaces[total].flags & (IFF_BROADCAST|IFF_LOOPBACK)) {
 			make_bcast(&ifaces[total].bcast,
 				&ifaces[total].ip,
@@ -195,19 +210,6 @@ static int _get_interfaces(TALLOC_CTX *mem_ctx, struct iface_struct **pifaces)
 			memcpy(&ifaces[total].bcast,
 				ifptr->ifa_dstaddr,
 				copy_size);
-#if defined(HAVE_IPV6)
-		} else if (ifptr->ifa_addr->sa_family == AF_INET6) {
-			const struct sockaddr_in6 *sin6 =
-				(const struct sockaddr_in6 *)ifptr->ifa_addr;
-			const struct in6_addr *in6 =
-				(const struct in6_addr *)&sin6->sin6_addr;
-
-			if (IN6_IS_ADDR_LINKLOCAL(in6) || IN6_IS_ADDR_V4COMPAT(in6)) {
-				continue;
-			}
-			/* IPv6 does not have broadcast it uses multicast. */
-			memset(&ifaces[total].bcast, '\0', copy_size);
-#endif
 		} else {
 			continue;
 		}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list