From 1fc26580fcbc0b402438a4c701ab4ba82f8b806a Mon Sep 17 00:00:00 2001 From: rwatson Date: Tue, 19 Jul 2005 13:36:39 +0000 Subject: 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 --- sys/netnatm/natm.c | 281 +---------------------------------------------- sys/netnatm/natm.h | 25 ----- sys/netnatm/natm_proto.c | 26 ----- 3 files changed, 1 insertion(+), 331 deletions(-) (limited to 'sys/netnatm') 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 -- cgit v1.1