From e53915c97f1883770435cb4a764bfaceb2ff265e Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Sat, 14 Aug 2004 08:36:35 +0000 Subject: [PATCH] Don't declare everything we find on a loopback interface for passive: Only the actual loopback address should be declared passive, other addresses are very likely to be desirable to announce. Check for IFF_LOOPBACK instead of IFF_PASSIVE to determine if we have an unknown interface type. --- sbin/routed/if.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sbin/routed/if.c b/sbin/routed/if.c index ef8e4f48b839..b6e7a539cc07 100644 --- a/sbin/routed/if.c +++ b/sbin/routed/if.c @@ -804,7 +804,14 @@ ifinit(void) } if (ifs.int_if_flags & IFF_LOOPBACK) { - ifs.int_state |= IS_PASSIVE | IS_NO_RIP | IS_NO_RDISC; + ifs.int_state |= IS_NO_RIP | IS_NO_RDISC; + if (ifs.int_addr == htonl(INADDR_LOOPBACK)) { + printf("loop %x\n", ifs.int_addr); + ifs.int_state |= IS_PASSIVE; + } else { + printf("alias %x\n", ifs.int_addr); + } + ifs.int_dstaddr = ifs.int_addr; ifs.int_mask = HOST_MASK; ifs.int_ripv1_mask = HOST_MASK; @@ -1090,8 +1097,7 @@ ifinit(void) continue; } - if (0 == (ifs.int_if_flags & (IFF_POINTOPOINT | IFF_BROADCAST)) - && !(ifs.int_state & IS_PASSIVE)) { + if (0 == (ifs.int_if_flags & (IFF_POINTOPOINT | IFF_BROADCAST | IFF_LOOPBACK))) { trace_act("%s is neither broadcast, point-to-point," " nor loopback", ifs.int_name);