PERFORCE change 129846 for review
Marko Zec
zec at FreeBSD.org
Fri Nov 30 14:37:40 PST 2007
http://perforce.freebsd.org/chv.cgi?CH=129846
Change 129846 by zec at zec_tpx32 on 2007/11/30 22:37:20
Implement ng_iface_reassign() handler - ng_iface ifnets can
now be moved among vnets.
Affected files ...
.. //depot/projects/vimage/src/sys/netgraph/ng_iface.c#4 edit
Differences ...
==== //depot/projects/vimage/src/sys/netgraph/ng_iface.c#4 (text+ko) ====
@@ -124,6 +124,10 @@
static int ng_iface_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data);
static int ng_iface_output(struct ifnet *ifp, struct mbuf *m0,
struct sockaddr *dst, struct rtentry *rt0);
+#ifdef VIMAGE
+static void ng_iface_reassign(struct ifnet *ifp, struct vnet *vnet,
+ char *dname);
+#endif
static void ng_iface_bpftap(struct ifnet *ifp,
struct mbuf *m, sa_family_t family);
static int ng_iface_send(struct ifnet *ifp, struct mbuf *m,
@@ -546,6 +550,9 @@
ifp->if_output = ng_iface_output;
ifp->if_start = ng_iface_start;
ifp->if_ioctl = ng_iface_ioctl;
+#ifdef VIMAGE
+ ifp->if_reassign = ng_iface_reassign;
+#endif
ifp->if_watchdog = NULL;
ifp->if_mtu = NG_IFACE_MTU_DEFAULT;
ifp->if_flags = (IFF_SIMPLEX|IFF_POINTOPOINT|IFF_NOARP|IFF_MULTICAST);
@@ -570,6 +577,24 @@
return (0);
}
+#ifdef VIMAGE
+static void
+ng_iface_reassign(struct ifnet *ifp, struct vnet *vnet, char *dname)
+{
+ bpfdetach(ifp);
+ if_detach(ifp);
+ ifp->if_bpf = NULL;
+ if_reassign_common(ifp, vnet, "ser");
+ if (dname)
+ snprintf(ifp->if_xname, IFNAMSIZ, "%s", dname);
+
+ CURVNET_SET_QUIET(vnet);
+ if_attach(ifp);
+ bpfattach(ifp, DLT_NULL, sizeof(u_int32_t));
+ CURVNET_RESTORE();
+}
+#endif
+
/*
* Give our ok for a hook to be added
*/
More information about the p4-projects
mailing list