summaryrefslogtreecommitdiffstats
path: root/sbin/routed
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-08-14 08:36:35 +0000
committerphk <phk@FreeBSD.org>2004-08-14 08:36:35 +0000
commit1874b31277fe1c44e4cfde1280746d71db29de19 (patch)
tree5f42e81a2280f761dfed09577ab515a769f0b9e4 /sbin/routed
parent9595df2db163188aeab78003c49df90f4f2bed2b (diff)
downloadFreeBSD-src-1874b31277fe1c44e4cfde1280746d71db29de19.zip
FreeBSD-src-1874b31277fe1c44e4cfde1280746d71db29de19.tar.gz
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.
Diffstat (limited to 'sbin/routed')
-rw-r--r--sbin/routed/if.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sbin/routed/if.c b/sbin/routed/if.c
index ef8e4f4..b6e7a53 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);
OpenPOWER on IntegriCloud