diff options
| author | Andrey V. Elsukov <ae@FreeBSD.org> | 2020-06-03 13:02:31 +0000 |
|---|---|---|
| committer | Andrey V. Elsukov <ae@FreeBSD.org> | 2020-06-03 13:02:31 +0000 |
| commit | dd4490fdab598b56c40619e1bbb51b2da4420518 (patch) | |
| tree | 47920abadf4288ebffb4fb58e422cebd3241cb4c /sys/net/if_gre.c | |
| parent | 693d10a29176e9128d5d09bbd74c9205addc091b (diff) | |
Notes
Diffstat (limited to 'sys/net/if_gre.c')
| -rw-r--r-- | sys/net/if_gre.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c index bd940b579393..aa3e4062b060 100644 --- a/sys/net/if_gre.c +++ b/sys/net/if_gre.c @@ -107,6 +107,9 @@ static void gre_clone_destroy(struct ifnet *); VNET_DEFINE_STATIC(struct if_clone *, gre_cloner); #define V_gre_cloner VNET(gre_cloner) +#ifdef VIMAGE +static void gre_reassign(struct ifnet *, struct vnet *, char *); +#endif static void gre_qflush(struct ifnet *); static int gre_transmit(struct ifnet *, struct mbuf *); static int gre_ioctl(struct ifnet *, u_long, caddr_t); @@ -183,6 +186,9 @@ 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; +#ifdef VIMAGE + GRE2IFP(sc)->if_reassign = gre_reassign; +#endif GRE2IFP(sc)->if_capabilities |= IFCAP_LINKSTATE; GRE2IFP(sc)->if_capenable |= IFCAP_LINKSTATE; if_attach(GRE2IFP(sc)); @@ -190,6 +196,21 @@ gre_clone_create(struct if_clone *ifc, int unit, caddr_t params) return (0); } +#ifdef VIMAGE +static void +gre_reassign(struct ifnet *ifp, struct vnet *new_vnet __unused, + char *unused __unused) +{ + struct gre_softc *sc; + + sx_xlock(&gre_ioctl_sx); + sc = ifp->if_softc; + if (sc != NULL) + gre_delete_tunnel(sc); + sx_xunlock(&gre_ioctl_sx); +} +#endif /* VIMAGE */ + static void gre_clone_destroy(struct ifnet *ifp) { |
