summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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