summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/netipx/README8
-rw-r--r--sys/netipx/ipx_input.c50
-rw-r--r--sys/netipx/ipx_outputfl.c8
-rw-r--r--sys/netipx/ipx_var.h1
4 files changed, 0 insertions, 67 deletions
diff --git a/sys/netipx/README b/sys/netipx/README
index a067daf..c05b4e9 100644
--- a/sys/netipx/README
+++ b/sys/netipx/README
@@ -39,11 +39,3 @@ Modifications Copyright (c) 2004-2006 Robert N. M. Watson
but unsent data. As with TCP, it should instead grab its own
reference to the socket so that it is not released, as hold onto it
until the data transfer is complete.
-
-(3) Raw socket capture of IPX output intercepts packets in the SPX output
- routine in order to feed them back into the raw socket. This results
- in recursion into the socket code in the transmit path; instead,
- captured packets should be fed into a netisr that reinjects them into
- raw sockets from a new (asynchronous) context.
-
-(4) IPX over IP encapsulation needs work to make it properly MPSAFE.
diff --git a/sys/netipx/ipx_input.c b/sys/netipx/ipx_input.c
index 2a0980a..f046e23 100644
--- a/sys/netipx/ipx_input.c
+++ b/sys/netipx/ipx_input.c
@@ -452,53 +452,3 @@ ipx_undo_route(struct route *ro)
RTFREE(ro->ro_rt);
}
}
-
-/*
- * XXXRW: This code should be run in its own netisr dispatch to avoid a call
- * back into the socket code from the IPX output path.
- */
-void
-ipx_watch_output(struct mbuf *m, struct ifnet *ifp)
-{
- struct ipxpcb *ipxp;
- struct ifaddr *ifa;
- struct ipx_ifaddr *ia;
-
- /*
- * Give any raw listeners a crack at the packet
- */
- IPX_LIST_LOCK();
- LIST_FOREACH(ipxp, &ipxrawpcb_list, ipxp_list) {
- struct mbuf *m0 = m_copy(m, 0, (int)M_COPYALL);
- if (m0 != NULL) {
- struct ipx *ipx;
-
- M_PREPEND(m0, sizeof(*ipx), M_DONTWAIT);
- if (m0 == NULL)
- continue;
- ipx = mtod(m0, struct ipx *);
- ipx->ipx_sna.x_net = ipx_zeronet;
- for (ia = ipx_ifaddr; ia != NULL; ia = ia->ia_next)
- if (ifp == ia->ia_ifp)
- break;
- if (ia == NULL)
- ipx->ipx_sna.x_host = ipx_zerohost;
- else
- ipx->ipx_sna.x_host =
- ia->ia_addr.sipx_addr.x_host;
-
- if (ifp != NULL && (ifp->if_flags & IFF_POINTOPOINT))
- TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
- if (ifa->ifa_addr->sa_family == AF_IPX) {
- ipx->ipx_sna = IA_SIPX(ifa)->sipx_addr;
- break;
- }
- }
- ipx->ipx_len = ntohl(m0->m_pkthdr.len);
- IPX_LOCK(ipxp);
- ipx_input(m0, ipxp);
- IPX_UNLOCK(ipxp);
- }
- }
- IPX_LIST_UNLOCK();
-}
diff --git a/sys/netipx/ipx_outputfl.c b/sys/netipx/ipx_outputfl.c
index 9c88f43..f6be964 100644
--- a/sys/netipx/ipx_outputfl.c
+++ b/sys/netipx/ipx_outputfl.c
@@ -74,8 +74,6 @@ __FBSDID("$FreeBSD$");
#include <netipx/ipx_if.h>
#include <netipx/ipx_var.h>
-static int ipx_copy_output = 0;
-
int
ipx_outputfl(struct mbuf *m0, struct route *ro, int flags)
{
@@ -150,9 +148,6 @@ gotif:
if (htons(ipx->ipx_len) <= ifp->if_mtu) {
ipxstat.ipxs_localout++;
- if (ipx_copy_output) {
- ipx_watch_output(m0, ifp);
- }
error = (*ifp->if_output)(ifp, m0,
(struct sockaddr *)dst, ro);
goto done;
@@ -161,9 +156,6 @@ gotif:
error = EMSGSIZE;
}
bad:
- if (ipx_copy_output) {
- ipx_watch_output(m0, ifp);
- }
m_freem(m0);
done:
if (ro == &ipxroute && (flags & IPX_ROUTETOIF) == 0 &&
diff --git a/sys/netipx/ipx_var.h b/sys/netipx/ipx_var.h
index 1c76613..7661328 100644
--- a/sys/netipx/ipx_var.h
+++ b/sys/netipx/ipx_var.h
@@ -124,7 +124,6 @@ int ipx_output_type20(struct mbuf *);
int ipx_peeraddr(struct socket *so, struct sockaddr **nam);
void ipx_printhost(struct ipx_addr *addr);
int ipx_sockaddr(struct socket *so, struct sockaddr **nam);
-void ipx_watch_output(struct mbuf *m, struct ifnet *ifp);
#endif /* _KERNEL */
OpenPOWER on IntegriCloud