Whamcloud - gitweb
b=8320
authorphil <phil>
Wed, 7 Sep 2005 05:45:05 +0000 (05:45 +0000)
committerphil <phil>
Wed, 7 Sep 2005 05:45:05 +0000 (05:45 +0000)
r=phil (HP's patch)
Severity   : minor
Frequency  : rare
Bugzilla   : 8320
Description: lconf incorrectly determined whether two IP networks could talk
Details    : In some more complicated routing and multiple-network
     configurations, lconf will avoid trying to make a network
     connection to a disjoint part of the IP space.  It was doing the
     math incorrectly for one set of cases.

lustre/ChangeLog
lustre/utils/lconf

index e788cd4..f3270d4 100644 (file)
@@ -19,6 +19,17 @@ Details    : The filter_direct_io()+filter_commitrw_write() journal commits for
              to avoid filesystem fragmentation during allocation.  BKL lock
             removed for 2.6 xattr operations where it is no longer needed.
 
+Severity   : minor
+Frequency  : rare
+Bugzilla   : 8320
+Description: lconf incorrectly determined whether two IP networks could talk
+Details    : In some more complicated routing and multiple-network
+            configurations, lconf will avoid trying to make a network
+            connection to a disjoint part of the IP space.  It was doing the
+            math incorrectly for one set of cases.
+
+------------------------------------------------------------------------------
+
 08-26-2005  Cluster File Systems, Inc. <info@clusterfs.com>
        * version 1.4.5
        * bug fixes
@@ -117,6 +128,8 @@ Details    : If lookup is in progress on a file that is unlinked we might try
              complete and ll_file_open() enqueues the open again but
              it_open_error() was not checking DISP_OPEN_OPEN errors correctly.
 
+------------------------------------------------------------------------------
+
 2005-08-08  Cluster File Systems, Inc. <info@clusterfs.com>
        * version 1.4.4
        * bug fixes
index 66628bf..da888a8 100755 (executable)
@@ -1468,7 +1468,11 @@ class Network(Module):
         except:
             return 0
 
-        if addr1 & mask1 == addr2 & mask2:
+        # If the masks are not identical we need to know if the 2 interfaces
+        #  can talk to each other, so the most restrictive will tell us that
+        mask = max(mask1, mask2)
+        if addr1 & mask == addr2 & mask:
+            debug("Net1: %s Net2: %s Match: %s to %s" % (net1, net2, addr1 & mask, addr2 & mask))
             return 1
         return 0