if_gre.c (75dfc66c1b2b44609e5a7c3e1d6a751be4922689) if_gre.c (dd4490fdab598b56c40619e1bbb51b2da4420518)
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 1998 The NetBSD Foundation, Inc.
5 * Copyright (c) 2014, 2018 Andrey V. Elsukov <ae@FreeBSD.org>
6 * All rights reserved.
7 *
8 * This code is derived from software contributed to The NetBSD Foundation

--- 93 unchanged lines hidden (view full) ---

102static struct sx gre_ioctl_sx;
103SX_SYSINIT(gre_ioctl_sx, &gre_ioctl_sx, "gre_ioctl");
104
105static int gre_clone_create(struct if_clone *, int, caddr_t);
106static void gre_clone_destroy(struct ifnet *);
107VNET_DEFINE_STATIC(struct if_clone *, gre_cloner);
108#define V_gre_cloner VNET(gre_cloner)
109
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 1998 The NetBSD Foundation, Inc.
5 * Copyright (c) 2014, 2018 Andrey V. Elsukov <ae@FreeBSD.org>
6 * All rights reserved.
7 *
8 * This code is derived from software contributed to The NetBSD Foundation

--- 93 unchanged lines hidden (view full) ---

102static struct sx gre_ioctl_sx;
103SX_SYSINIT(gre_ioctl_sx, &gre_ioctl_sx, "gre_ioctl");
104
105static int gre_clone_create(struct if_clone *, int, caddr_t);
106static void gre_clone_destroy(struct ifnet *);
107VNET_DEFINE_STATIC(struct if_clone *, gre_cloner);
108#define V_gre_cloner VNET(gre_cloner)
109
110#ifdef VIMAGE
111static void gre_reassign(struct ifnet *, struct vnet *, char *);
112#endif
110static void gre_qflush(struct ifnet *);
111static int gre_transmit(struct ifnet *, struct mbuf *);
112static int gre_ioctl(struct ifnet *, u_long, caddr_t);
113static int gre_output(struct ifnet *, struct mbuf *,
114 const struct sockaddr *, struct route *);
115static void gre_delete_tunnel(struct gre_softc *);
116
117SYSCTL_DECL(_net_link);

--- 60 unchanged lines hidden (view full) ---

178 if_initname(GRE2IFP(sc), grename, unit);
179
180 GRE2IFP(sc)->if_mtu = GREMTU;
181 GRE2IFP(sc)->if_flags = IFF_POINTOPOINT|IFF_MULTICAST;
182 GRE2IFP(sc)->if_output = gre_output;
183 GRE2IFP(sc)->if_ioctl = gre_ioctl;
184 GRE2IFP(sc)->if_transmit = gre_transmit;
185 GRE2IFP(sc)->if_qflush = gre_qflush;
113static void gre_qflush(struct ifnet *);
114static int gre_transmit(struct ifnet *, struct mbuf *);
115static int gre_ioctl(struct ifnet *, u_long, caddr_t);
116static int gre_output(struct ifnet *, struct mbuf *,
117 const struct sockaddr *, struct route *);
118static void gre_delete_tunnel(struct gre_softc *);
119
120SYSCTL_DECL(_net_link);

--- 60 unchanged lines hidden (view full) ---

181 if_initname(GRE2IFP(sc), grename, unit);
182
183 GRE2IFP(sc)->if_mtu = GREMTU;
184 GRE2IFP(sc)->if_flags = IFF_POINTOPOINT|IFF_MULTICAST;
185 GRE2IFP(sc)->if_output = gre_output;
186 GRE2IFP(sc)->if_ioctl = gre_ioctl;
187 GRE2IFP(sc)->if_transmit = gre_transmit;
188 GRE2IFP(sc)->if_qflush = gre_qflush;
189#ifdef VIMAGE
190 GRE2IFP(sc)->if_reassign = gre_reassign;
191#endif
186 GRE2IFP(sc)->if_capabilities |= IFCAP_LINKSTATE;
187 GRE2IFP(sc)->if_capenable |= IFCAP_LINKSTATE;
188 if_attach(GRE2IFP(sc));
189 bpfattach(GRE2IFP(sc), DLT_NULL, sizeof(u_int32_t));
190 return (0);
191}
192
192 GRE2IFP(sc)->if_capabilities |= IFCAP_LINKSTATE;
193 GRE2IFP(sc)->if_capenable |= IFCAP_LINKSTATE;
194 if_attach(GRE2IFP(sc));
195 bpfattach(GRE2IFP(sc), DLT_NULL, sizeof(u_int32_t));
196 return (0);
197}
198
199#ifdef VIMAGE
193static void
200static void
201gre_reassign(struct ifnet *ifp, struct vnet *new_vnet __unused,
202 char *unused __unused)
203{
204 struct gre_softc *sc;
205
206 sx_xlock(&gre_ioctl_sx);
207 sc = ifp->if_softc;
208 if (sc != NULL)
209 gre_delete_tunnel(sc);
210 sx_xunlock(&gre_ioctl_sx);
211}
212#endif /* VIMAGE */
213
214static void
194gre_clone_destroy(struct ifnet *ifp)
195{
196 struct gre_softc *sc;
197
198 sx_xlock(&gre_ioctl_sx);
199 sc = ifp->if_softc;
200 gre_delete_tunnel(sc);
201 bpfdetach(ifp);

--- 619 unchanged lines hidden ---
215gre_clone_destroy(struct ifnet *ifp)
216{
217 struct gre_softc *sc;
218
219 sx_xlock(&gre_ioctl_sx);
220 sc = ifp->if_softc;
221 gre_delete_tunnel(sc);
222 bpfdetach(ifp);

--- 619 unchanged lines hidden ---