summaryrefslogtreecommitdiff
path: root/usr/src/cmd/rcm_daemon/common/ip_rcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/rcm_daemon/common/ip_rcm.c')
-rw-r--r--usr/src/cmd/rcm_daemon/common/ip_rcm.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/usr/src/cmd/rcm_daemon/common/ip_rcm.c b/usr/src/cmd/rcm_daemon/common/ip_rcm.c
index 5421d7364a..f1e7b2931b 100644
--- a/usr/src/cmd/rcm_daemon/common/ip_rcm.c
+++ b/usr/src/cmd/rcm_daemon/common/ip_rcm.c
@@ -1126,8 +1126,17 @@ update_pif(rcm_handle_t *hd, int af, int sock, struct lifreq *lifr)
}
(void) memcpy(&ifflags, &lifreq.lifr_flags, sizeof (ifflags));
- /* Ignore loopback and multipoint interfaces */
- if (!(ifflags & IFF_MULTICAST) || (ifflags & IFF_LOOPBACK)) {
+ /*
+ * Ignore interfaces that are always incapable of DR:
+ * - IFF_VIRTUAL: e.g., loopback and vni
+ * - IFF_POINTOPOINT: e.g., sppp and ip.tun
+ * - !IFF_MULTICAST: e.g., ip.6to4tun
+ *
+ * Note: The !IFF_MULTICAST check can be removed once iptun is
+ * implemented as a datalink.
+ */
+ if (!(ifflags & IFF_MULTICAST) ||
+ (ifflags & (IFF_POINTOPOINT | IFF_VIRTUAL))) {
rcm_log_message(RCM_TRACE3, "IP: if ignored (%s)\n",
pif.pi_ifname);
return (0);