[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-4909-gd998ee9

Jeremy Allison jra at samba.org
Thu Feb 5 22:47:47 GMT 2009


The branch, v3-3-test has been updated
       via  d998ee9025f2ad2df73e25c12e35e9218b97147e (commit)
      from  544faebe894b2b0661d6c9fe68ee7c01945ee824 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit d998ee9025f2ad2df73e25c12e35e9218b97147e
Author: Aravind Srinivasan <aravind.srinivasan at isilon.com>
Date:   Thu Feb 5 14:46:59 2009 -0800

    Have nmbd check all available interfaces for WINS before failing
    
    When nmbd is acting as WINS, it picks the first interface's IP as WINS
    server's IP. If the first interface's IP is zero, we will just quit
    (even though we might have other interfaces with valid IPs).
    
    This patch makes nmbd look at all interfaces and pick the first interface
    with a valid IP as the WINS server's IP.

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

Summary of changes:
 source/lib/interface.c        |    7 +++++--
 source/nmbd/nmbd_become_dmb.c |    3 ++-
 source/nmbd/nmbd_subnetdb.c   |    3 ++-
 3 files changed, 9 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/interface.c b/source/lib/interface.c
index 15fed9e..cc8fb37 100644
--- a/source/lib/interface.c
+++ b/source/lib/interface.c
@@ -151,7 +151,8 @@ int iface_count_v4_nl(void)
 }
 
 /****************************************************************************
- Return a pointer to the in_addr of the first IPv4 interface.
+ Return a pointer to the in_addr of the first IPv4 interface that's
+ not 0.0.0.0.
 **************************************************************************/
 
 const struct in_addr *first_ipv4_iface(void)
@@ -159,7 +160,9 @@ const struct in_addr *first_ipv4_iface(void)
 	struct interface *i;
 
 	for (i=local_interfaces;i ;i=i->next) {
-		if (i->ip.ss_family == AF_INET) {
+		if ((i->ip.ss_family == AF_INET) &&
+		    (!is_zero_ip_v4(((struct sockaddr_in *)&i->ip)->sin_addr)))
+		{
 			break;
 		}
 	}
diff --git a/source/nmbd/nmbd_become_dmb.c b/source/nmbd/nmbd_become_dmb.c
index a0b2ef1..827d56c 100644
--- a/source/nmbd/nmbd_become_dmb.c
+++ b/source/nmbd/nmbd_become_dmb.c
@@ -128,7 +128,8 @@ in workgroup %s on subnet %s\n",
 
 		work->dmb_name = nmbname;
 
-		/* Pick the first interface IPv4 address as the domain master browser ip. */
+		/* Pick the first interface IPv4 address as the domain master
+		 * browser ip. */
 		nip = first_ipv4_iface();
 		if (!nip) {
 			DEBUG(0,("become_domain_master_stage2: "
diff --git a/source/nmbd/nmbd_subnetdb.c b/source/nmbd/nmbd_subnetdb.c
index 225def5..83515e9 100644
--- a/source/nmbd/nmbd_subnetdb.c
+++ b/source/nmbd/nmbd_subnetdb.c
@@ -287,7 +287,8 @@ bool create_subnets(void)
 	}
 
 	if (lp_we_are_a_wins_server()) {
-		/* Pick the first interface IPv4 address as the WINS server ip. */
+		/* Pick the first interface IPv4 address as the WINS server
+		 * ip. */
 		const struct in_addr *nip = first_ipv4_iface();
 
 		if (!nip) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list