From f1aaad0cd9ab8d7a8b299bef45d5c818f5341c5c Mon Sep 17 00:00:00 2001 From: Hiroki Sato Date: Sat, 3 Oct 2015 09:15:23 +0000 Subject: Add IFCAP_LINKSTATE support. --- sys/net/if_gre.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'sys/net/if_gre.c') diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c index 71addf5a100c..ffd94d831b08 100644 --- a/sys/net/if_gre.c +++ b/sys/net/if_gre.c @@ -179,6 +179,8 @@ gre_clone_create(struct if_clone *ifc, int unit, caddr_t params) GRE2IFP(sc)->if_ioctl = gre_ioctl; GRE2IFP(sc)->if_transmit = gre_transmit; GRE2IFP(sc)->if_qflush = gre_qflush; + GRE2IFP(sc)->if_capabilities |= IFCAP_LINKSTATE; + GRE2IFP(sc)->if_capenable |= IFCAP_LINKSTATE; if_attach(GRE2IFP(sc)); bpfattach(GRE2IFP(sc), DLT_NULL, sizeof(u_int32_t)); GRE_LIST_LOCK(); @@ -648,8 +650,10 @@ gre_set_tunnel(struct ifnet *ifp, struct sockaddr *src, break; #endif } - if (error == 0) + if (error == 0) { ifp->if_drv_flags |= IFF_DRV_RUNNING; + if_link_state_change(ifp, LINK_STATE_UP); + } return (error); } @@ -668,6 +672,7 @@ gre_delete_tunnel(struct ifnet *ifp) free(sc->gre_hdr, M_GRE); } ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + if_link_state_change(ifp, LINK_STATE_DOWN); } int -- cgit v1.2.3