]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
viced: Ignore client loopback alternate addresses
authorAndrew Deason <adeason@sinenomine.net>
Thu, 8 Jul 2010 16:25:19 +0000 (11:25 -0500)
committerStephan Wiesand <stephan.wiesand@desy.de>
Thu, 4 Apr 2013 11:18:20 +0000 (04:18 -0700)
When we receive interface information from a client to determine its
alternate IP addresses, ignore any addresses that look like loopback.

Reviewed-on: http://gerrit.openafs.org/2368
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Reviewed-by: Alistair Ferguson <alistair.ferguson@mac.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
(cherry picked from commit 2a6ddae62e4fac5eecdf4634746e7294405393d6)

Change-Id: Idcdaabd3aad62f0e84efbaf1d8523338bc683924
Reviewed-on: http://gerrit.openafs.org/9466
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
src/viced/host.c

index 64a766b8ce4d0bf82eb3550ae54f8fd8dbe291a1..58106338ac00a664c3e808a878ad07e215d52ae2 100644 (file)
@@ -4121,7 +4121,7 @@ initInterfaceAddr_r(struct host *host, struct interfaceAddr *interf)
 
     /*
      * Convert IP addresses to network byte order, and remove
-     * duplicate IP addresses from the interface list, and
+     * duplicate and loopback IP addresses from the interface list, and
      * determine whether or not the incoming addr/port is
      * listed.  Note that if the address matches it is not
      * truly a match because the port number for the entries
@@ -4129,6 +4129,9 @@ initInterfaceAddr_r(struct host *host, struct interfaceAddr *interf)
      * for this connection might not be 7001.
      */
     for (i = 0, count = 0, found = 0; i < number; i++) {
+       if (rx_IsLoopbackAddr(interf->addr_in[i])) {
+           continue;
+       }
        interf->addr_in[i] = htonl(interf->addr_in[i]);
        for (j = 0; j < count; j++) {
            if (interf->addr_in[j] == interf->addr_in[i])