summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/net/if_loop.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/net/if_loop.c')
-rw-r--r--freebsd/sys/net/if_loop.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/freebsd/sys/net/if_loop.c b/freebsd/sys/net/if_loop.c
index bae46891..988b9f9d 100644
--- a/freebsd/sys/net/if_loop.c
+++ b/freebsd/sys/net/if_loop.c
@@ -138,7 +138,7 @@ lo_clone_create(struct if_clone *ifc, int unit, caddr_t params)
ifp->if_output = looutput;
ifp->if_snd.ifq_maxlen = ifqmaxlen;
ifp->if_capabilities = ifp->if_capenable =
- IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6;
+ IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6 | IFCAP_LINKSTATE;
ifp->if_hwassist = LO_CSUM_FEATURES | LO_CSUM_FEATURES6;
if_attach(ifp);
bpfattach(ifp, DLT_NULL, sizeof(u_int32_t));
@@ -415,6 +415,8 @@ loioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
break;
case SIOCSIFFLAGS:
+ if_link_state_change(ifp, (ifp->if_flags & IFF_UP) ?
+ LINK_STATE_UP: LINK_STATE_DOWN);
break;
case SIOCSIFCAP: