summaryrefslogtreecommitdiffstats
path: root/sys/netnatm
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2005-07-19 13:36:39 +0000
committerrwatson <rwatson@FreeBSD.org>2005-07-19 13:36:39 +0000
commit1fc26580fcbc0b402438a4c701ab4ba82f8b806a (patch)
tree5e7428078c89ab79b1f50da6ce2ffe4d444adc7d /sys/netnatm
parentd49765d3fd851d4b1a585c996379bc57a6dff02c (diff)
downloadFreeBSD-src-1fc26580fcbc0b402438a4c701ab4ba82f8b806a.zip
FreeBSD-src-1fc26580fcbc0b402438a4c701ab4ba82f8b806a.tar.gz
Remove FreeBSD 2.2 protocol usrreq compatibility code.
Remove minor #ifdefs for early NetBSD and OpenBSD compatibility. Remove spl-related definitions. MFC after: 2 weeks
Diffstat (limited to 'sys/netnatm')
-rw-r--r--sys/netnatm/natm.c281
-rw-r--r--sys/netnatm/natm.h25
-rw-r--r--sys/netnatm/natm_proto.c26
3 files changed, 1 insertions, 331 deletions
diff --git a/sys/netnatm/natm.c b/sys/netnatm/natm.c
index 23af6aa..4dc75b2 100644
--- a/sys/netnatm/natm.c
+++ b/sys/netnatm/natm.c
@@ -73,10 +73,6 @@ struct mtx natm_mtx;
/*
* user requests
*/
-#ifdef FREEBSD_USRREQS
-/*
- * FreeBSD new usrreqs supersedes pr_usrreq.
- */
static int natm_usr_attach(struct socket *, int, d_thread_t *);
static int natm_usr_detach(struct socket *);
static int natm_usr_connect(struct socket *, struct sockaddr *, d_thread_t *);
@@ -410,283 +406,8 @@ struct pr_usrreqs natm_usrreqs = {
.pru_sockaddr = natm_usr_sockaddr,
};
-#else /* !FREEBSD_USRREQS */
-#error "!FREEBSD_USRREQS not implemented - locking"
-
-#if defined(__NetBSD__) || defined(__OpenBSD__)
-int natm_usrreq(so, req, m, nam, control, p)
-#elif defined(__FreeBSD__)
-int natm_usrreq(so, req, m, nam, control)
-#endif
-
-struct socket *so;
-int req;
-struct mbuf *m, *nam, *control;
-#if defined(__NetBSD__) || defined(__OpenBSD__)
-struct proc *p;
-#endif
-
-{
- int error = 0, s, s2;
- struct natmpcb *npcb;
- struct sockaddr_natm *snatm;
- struct atm_pseudoioctl api;
- struct atm_pseudohdr *aph;
- struct atm_rawioctl ario;
- struct ifnet *ifp;
- int proto = so->so_proto->pr_protocol;
-
- s = SPLSOFTNET();
-
- npcb = (struct natmpcb *) so->so_pcb;
-
- if (npcb == NULL && req != PRU_ATTACH) {
- error = EINVAL;
- goto done;
- }
-
-
- switch (req) {
- case PRU_ATTACH: /* attach protocol to up */
-
- if (npcb) {
- error = EISCONN;
- break;
- }
-
- if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) {
- if (proto == PROTO_NATMAAL5)
- error = soreserve(so, natm5_sendspace, natm5_recvspace);
- else
- error = soreserve(so, natm0_sendspace, natm0_recvspace);
- if (error)
- break;
- }
-
- so->so_pcb = (caddr_t) (npcb = npcb_alloc(M_WAITOK));
- npcb->npcb_socket = so;
-
- break;
-
- case PRU_DETACH: /* detach protocol from up */
-
- /*
- * we turn on 'drain' *before* we sofree.
- */
-
- npcb_free(npcb, NPCB_DESTROY); /* drain */
- ACCEPT_LOCK();
- SOCK_LOCK(so);
- so->so_pcb = NULL;
- sotryfree(so);
-
- break;
-
- case PRU_CONNECT: /* establish connection to peer */
-
- /*
- * validate nam and npcb
- */
-
- if (nam->m_len != sizeof(*snatm)) {
- error = EINVAL;
- break;
- }
- snatm = mtod(nam, struct sockaddr_natm *);
- if (snatm->snatm_len != sizeof(*snatm) ||
- (npcb->npcb_flags & NPCB_FREE) == 0) {
- error = EINVAL;
- break;
- }
- if (snatm->snatm_family != AF_NATM) {
- error = EAFNOSUPPORT;
- break;
- }
-
- snatm->snatm_if[IFNAMSIZ-1] = '\0'; /* XXX ensure null termination
- since ifunit() uses strcmp */
-
- /*
- * convert interface string to ifp, validate.
- */
-
- ifp = ifunit(snatm->snatm_if);
- if (ifp == NULL || (ifp->if_flags & IFF_RUNNING) == 0) {
- error = ENXIO;
- break;
- }
- if (ifp->if_output != atm_output) {
- error = EAFNOSUPPORT;
- break;
- }
-
-
- /*
- * register us with the NATM PCB layer
- */
-
- if (npcb_add(npcb, ifp, snatm->snatm_vci, snatm->snatm_vpi) != npcb) {
- error = EADDRINUSE;
- break;
- }
-
- /*
- * enable rx
- */
-
- ATM_PH_FLAGS(&api.aph) = (proto == PROTO_NATMAAL5) ? ATM_PH_AAL5 : 0;
- ATM_PH_VPI(&api.aph) = npcb->npcb_vpi;
- ATM_PH_SETVCI(&api.aph, npcb->npcb_vci);
- api.rxhand = npcb;
- s2 = splimp();
- if (ifp->if_ioctl == NULL ||
- ifp->if_ioctl(ifp, SIOCATMENA, (caddr_t) &api) != 0) {
- splx(s2);
- npcb_free(npcb, NPCB_REMOVE);
- error = EIO;
- break;
- }
- splx(s2);
-
- soisconnected(so);
-
- break;
-
- case PRU_DISCONNECT: /* disconnect from peer */
-
- if ((npcb->npcb_flags & NPCB_CONNECTED) == 0) {
- printf("natm: disconnected check\n");
- error = EIO;
- break;
- }
- ifp = npcb->npcb_ifp;
-
- /*
- * disable rx
- */
-
- ATM_PH_FLAGS(&api.aph) = ATM_PH_AAL5;
- ATM_PH_VPI(&api.aph) = npcb->npcb_vpi;
- ATM_PH_SETVCI(&api.aph, npcb->npcb_vci);
- api.rxhand = npcb;
- s2 = splimp();
- if (ifp->if_ioctl != NULL)
- ifp->if_ioctl(ifp, SIOCATMDIS, (caddr_t) &api);
- splx(s2);
-
- npcb_free(npcb, NPCB_REMOVE);
- soisdisconnected(so);
-
- break;
-
- case PRU_SHUTDOWN: /* won't send any more data */
- socantsendmore(so);
- break;
-
- case PRU_SEND: /* send this data */
- if (control && control->m_len) {
- m_freem(control);
- m_freem(m);
- error = EINVAL;
- break;
- }
-
- /*
- * send the data. we must put an atm_pseudohdr on first
- */
-
- M_PREPEND(m, sizeof(*aph), M_TRYWAIT);
- if (m == NULL) {
- error = ENOBUFS;
- break;
- }
- aph = mtod(m, struct atm_pseudohdr *);
- ATM_PH_VPI(aph) = npcb->npcb_vpi;
- ATM_PH_SETVCI(aph, npcb->npcb_vci);
- ATM_PH_FLAGS(aph) = (proto == PROTO_NATMAAL5) ? ATM_PH_AAL5 : 0;
-
- error = atm_output(npcb->npcb_ifp, m, NULL, NULL);
-
- break;
-
- case PRU_SENSE: /* return status into m */
- /* return zero? */
- break;
-
- case PRU_PEERADDR: /* fetch peer's address */
- snatm = mtod(nam, struct sockaddr_natm *);
- bzero(snatm, sizeof(*snatm));
- nam->m_len = snatm->snatm_len = sizeof(*snatm);
- snatm->snatm_family = AF_NATM;
-#if defined(__NetBSD__) || defined(__OpenBSD__)
- bcopy(npcb->npcb_ifp->if_xname, snatm->snatm_if, sizeof(snatm->snatm_if));
-#elif defined(__FreeBSD__)
- snprintf(snatm->snatm_if, sizeof(snatm->snatm_if),
- "%s%d", npcb->npcb_ifp->if_name, npcb->npcb_ifp->if_unit);
-#endif
- snatm->snatm_vci = npcb->npcb_vci;
- snatm->snatm_vpi = npcb->npcb_vpi;
- break;
-
- case PRU_CONTROL: /* control operations on protocol */
- /*
- * raw atm ioctl. comes in as a SIOCRAWATM. we convert it to
- * SIOCXRAWATM and pass it to the driver.
- */
- if ((u_long)m == SIOCRAWATM) {
- if (npcb->npcb_ifp == NULL) {
- error = ENOTCONN;
- break;
- }
- ario.npcb = npcb;
- ario.rawvalue = *((int *)nam);
- error = npcb->npcb_ifp->if_ioctl(npcb->npcb_ifp,
- SIOCXRAWATM, (caddr_t) &ario);
- if (!error) {
- if (ario.rawvalue)
- npcb->npcb_flags |= NPCB_RAW;
- else
- npcb->npcb_flags &= ~(NPCB_RAW);
- }
-
- break;
- }
-
- error = EOPNOTSUPP;
- break;
-
- case PRU_BIND: /* bind socket to address */
- case PRU_LISTEN: /* listen for connection */
- case PRU_ACCEPT: /* accept connection from peer */
- case PRU_CONNECT2: /* connect two sockets */
- case PRU_ABORT: /* abort (fast DISCONNECT, DETATCH) */
- /* (only happens if LISTEN socket) */
- case PRU_RCVD: /* have taken data; more room now */
- case PRU_FASTTIMO: /* 200ms timeout */
- case PRU_SLOWTIMO: /* 500ms timeout */
- case PRU_RCVOOB: /* retrieve out of band data */
- case PRU_SENDOOB: /* send out of band data */
- case PRU_PROTORCV: /* receive from below */
- case PRU_PROTOSEND: /* send to below */
- case PRU_SOCKADDR: /* fetch socket's address */
-#ifdef DIAGNOSTIC
- printf("natm: PRU #%d unsupported\n", req);
-#endif
- error = EOPNOTSUPP;
- break;
-
- default: panic("natm usrreq");
- }
-
-done:
- splx(s);
- return(error);
-}
-
-#endif /* !FREEBSD_USRREQS */
-
/*
- * natmintr: splsoftnet interrupt
+ * natmintr: interrupt
*
* note: we expect a socket pointer in rcvif rather than an interface
* pointer. we can get the interface pointer from the so's PCB if
diff --git a/sys/netnatm/natm.h b/sys/netnatm/natm.h
index 325a6b8..0a2ebb8 100644
--- a/sys/netnatm/natm.h
+++ b/sys/netnatm/natm.h
@@ -55,16 +55,6 @@ struct sockaddr_natm {
u_int8_t snatm_vpi; /* vpi */
};
-#if defined(__FreeBSD__) && defined(_KERNEL)
-
-#define SPLSOFTNET() splnet()
-
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
-
-#define SPLSOFTNET() splsoftnet()
-
-#endif
-
#ifdef _KERNEL
/*
@@ -119,22 +109,7 @@ void npcb_free(struct natmpcb *, int);
struct natmpcb *npcb_add(struct natmpcb *, struct ifnet *, uint16_t, uint8_t);
/* natm.c */
-#if defined(__NetBSD__) || defined(__OpenBSD__)
-int natm_usrreq(struct socket *, int, struct mbuf *,
- struct mbuf *, struct mbuf *, struct proc *);
-#elif defined(__FreeBSD__)
-#if __FreeBSD__ > 2
-/*
- * FreeBSD new usrreqs style appeared since 2.2. compatibility to old style
- * has gone since 3.0.
- */
-#define FREEBSD_USRREQS
extern struct pr_usrreqs natm_usrreqs;
-#else /* !( __FreeBSD__ > 2) */
-int natm_usrreq(struct socket *, int, struct mbuf *,
- struct mbuf *, struct mbuf *);
-#endif /* !( __FreeBSD__ > 2) */
-#endif
#ifdef SYSCTL_HANDLER_ARGS
int natm0_sysctl(SYSCTL_HANDLER_ARGS);
diff --git a/sys/netnatm/natm_proto.c b/sys/netnatm/natm_proto.c
index 235ccc0..2627bed 100644
--- a/sys/netnatm/natm_proto.c
+++ b/sys/netnatm/natm_proto.c
@@ -59,45 +59,21 @@ static void natm_init(void);
static struct protosw natmsw[] = {
{ SOCK_STREAM, &natmdomain, PROTO_NATMAAL5, PR_CONNREQUIRED,
0, 0, 0, 0,
-#ifdef FREEBSD_USRREQS
0,
-#else
- natm_usrreq,
-#endif
0, 0, 0, 0,
-#if defined(__NetBSD__) || defined(__OpenBSD__)
- natm5_sysctl
-#elif defined(FREEBSD_USRREQS)
&natm_usrreqs
-#endif
},
{ SOCK_DGRAM, &natmdomain, PROTO_NATMAAL5, PR_CONNREQUIRED | PR_ATOMIC,
0, 0, 0, 0,
-#ifdef FREEBSD_USRREQS
0,
-#else
- natm_usrreq,
-#endif
0, 0, 0, 0,
-#if defined(__NetBSD__) || defined(__OpenBSD__)
- natm5_sysctl
-#elif defined(FREEBSD_USRREQS)
&natm_usrreqs
-#endif
},
{ SOCK_STREAM, &natmdomain, PROTO_NATMAAL0, PR_CONNREQUIRED,
0, 0, 0, 0,
-#ifdef FREEBSD_USRREQS
0,
-#else
- natm_usrreq,
-#endif
0, 0, 0, 0,
-#if defined(__NetBSD__) || defined(__OpenBSD__)
- natm0_sysctl
-#elif defined(FREEBSD_USRREQS)
&natm_usrreqs
-#endif
},
};
@@ -126,6 +102,4 @@ natm_init(void)
netisr_register(NETISR_NATM, natmintr, &natmintrq, NETISR_MPSAFE);
}
-#if defined(__FreeBSD__)
DOMAIN_SET(natm);
-#endif
OpenPOWER on IntegriCloud