aboutsummaryrefslogtreecommitdiff
path: root/sys/net/if_gre.c
diff options
context:
space:
mode:
authorHiroki Sato <hrs@FreeBSD.org>2015-10-03 09:15:23 +0000
committerHiroki Sato <hrs@FreeBSD.org>2015-10-03 09:15:23 +0000
commitf1aaad0cd9ab8d7a8b299bef45d5c818f5341c5c (patch)
tree2c843e015f45534daf7b186d71905ec1af564381 /sys/net/if_gre.c
parent30c00a2d8915ed4c3dba28c063fc6d3d5bab5344 (diff)
downloadsrc-f1aaad0cd9ab8d7a8b299bef45d5c818f5341c5c.tar.gz
src-f1aaad0cd9ab8d7a8b299bef45d5c818f5341c5c.zip
Add IFCAP_LINKSTATE support.
Notes
Notes: svn path=/head/; revision=288575
Diffstat (limited to 'sys/net/if_gre.c')
-rw-r--r--sys/net/if_gre.c7
1 files changed, 6 insertions, 1 deletions
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