Deleted Added
full compact
natm.c (25606) natm.c (28270)
1/* $NetBSD: natm.c,v 1.5 1996/11/09 03:26:26 chuck Exp $ */
2
3/*
4 *
5 * Copyright (c) 1996 Charles D. Cranor and Washington University.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

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

71 * user requests
72 */
73#ifdef FREEBSD_USRREQS
74/*
75 * FreeBSD new usrreqs supersedes pr_usrreq.
76 */
77static int natm_usr_attach __P((struct socket *, int, struct proc *));
78static int natm_usr_detach __P((struct socket *));
1/* $NetBSD: natm.c,v 1.5 1996/11/09 03:26:26 chuck Exp $ */
2
3/*
4 *
5 * Copyright (c) 1996 Charles D. Cranor and Washington University.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

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

71 * user requests
72 */
73#ifdef FREEBSD_USRREQS
74/*
75 * FreeBSD new usrreqs supersedes pr_usrreq.
76 */
77static int natm_usr_attach __P((struct socket *, int, struct proc *));
78static int natm_usr_detach __P((struct socket *));
79static int natm_usr_connect __P((struct socket *, struct mbuf *,
79static int natm_usr_connect __P((struct socket *, struct sockaddr *,
80 struct proc *));
81static int natm_usr_disconnect __P((struct socket *));
82static int natm_usr_shutdown __P((struct socket *));
83static int natm_usr_send __P((struct socket *, int, struct mbuf *,
80 struct proc *));
81static int natm_usr_disconnect __P((struct socket *));
82static int natm_usr_shutdown __P((struct socket *));
83static int natm_usr_send __P((struct socket *, int, struct mbuf *,
84 struct mbuf *, struct mbuf *, struct proc *));
85static int natm_usr_peeraddr __P((struct socket *, struct mbuf *));
84 struct sockaddr *, struct mbuf *,
85 struct proc *));
86static int natm_usr_peeraddr __P((struct socket *, struct sockaddr **));
86static int natm_usr_control __P((struct socket *, int, caddr_t,
87 struct ifnet *, struct proc *));
88static int natm_usr_abort __P((struct socket *));
87static int natm_usr_control __P((struct socket *, int, caddr_t,
88 struct ifnet *, struct proc *));
89static int natm_usr_abort __P((struct socket *));
89static int natm_usr_bind __P((struct socket *, struct mbuf *, struct proc *));
90static int natm_usr_sockaddr __P((struct socket *, struct mbuf *));
90static int natm_usr_bind __P((struct socket *, struct sockaddr *,
91 struct proc *));
92static int natm_usr_sockaddr __P((struct socket *, struct sockaddr **));
91
92static int
93natm_usr_attach(struct socket *so, int proto, struct proc *p)
94{
95 struct natmpcb *npcb;
96 int error = 0;
97 int s = SPLSOFTNET();
98

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

139 so->so_pcb = NULL;
140 sofree(so);
141 out:
142 splx(s);
143 return (error);
144}
145
146static int
93
94static int
95natm_usr_attach(struct socket *so, int proto, struct proc *p)
96{
97 struct natmpcb *npcb;
98 int error = 0;
99 int s = SPLSOFTNET();
100

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

141 so->so_pcb = NULL;
142 sofree(so);
143 out:
144 splx(s);
145 return (error);
146}
147
148static int
147natm_usr_connect(struct socket *so, struct mbuf *nam, struct proc *p)
149natm_usr_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
148{
149 struct natmpcb *npcb;
150 struct sockaddr_natm *snatm;
151 struct atm_pseudoioctl api;
152 struct atm_pseudohdr *aph;
153 struct ifnet *ifp;
154 int error = 0;
155 int s2, s = SPLSOFTNET();

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

160 error = EINVAL;
161 goto out;
162 }
163
164 /*
165 * validate nam and npcb
166 */
167
150{
151 struct natmpcb *npcb;
152 struct sockaddr_natm *snatm;
153 struct atm_pseudoioctl api;
154 struct atm_pseudohdr *aph;
155 struct ifnet *ifp;
156 int error = 0;
157 int s2, s = SPLSOFTNET();

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

162 error = EINVAL;
163 goto out;
164 }
165
166 /*
167 * validate nam and npcb
168 */
169
168 if (nam->m_len != sizeof(*snatm)) {
169 error = EINVAL;
170 goto out;
171 }
172 snatm = mtod(nam, struct sockaddr_natm *);
170 snatm = (struct sockaddr_natm *)nam;
173 if (snatm->snatm_len != sizeof(*snatm) ||
174 (npcb->npcb_flags & NPCB_FREE) == 0) {
175 error = EINVAL;
176 goto out;
177 }
178 if (snatm->snatm_family != AF_NATM) {
179 error = EAFNOSUPPORT;
180 goto out;

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

280static int
281natm_usr_shutdown(struct socket *so)
282{
283 socantsendmore(so);
284 return 0;
285}
286
287static int
171 if (snatm->snatm_len != sizeof(*snatm) ||
172 (npcb->npcb_flags & NPCB_FREE) == 0) {
173 error = EINVAL;
174 goto out;
175 }
176 if (snatm->snatm_family != AF_NATM) {
177 error = EAFNOSUPPORT;
178 goto out;

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

278static int
279natm_usr_shutdown(struct socket *so)
280{
281 socantsendmore(so);
282 return 0;
283}
284
285static int
288natm_usr_send(struct socket *so, int flags, struct mbuf *m, struct mbuf *nam,
289 struct mbuf *control, struct proc *p)
286natm_usr_send(struct socket *so, int flags, struct mbuf *m,
287 struct sockaddr *nam, struct mbuf *control, struct proc *p)
290{
291 struct natmpcb *npcb;
292 struct atm_pseudohdr *aph;
293 int error = 0;
294 int s = SPLSOFTNET();
295 int proto = so->so_proto->pr_protocol;
296
297 npcb = (struct natmpcb *) so->so_pcb;

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

324 error = atm_output(npcb->npcb_ifp, m, NULL, NULL);
325
326 out:
327 splx(s);
328 return (error);
329}
330
331static int
288{
289 struct natmpcb *npcb;
290 struct atm_pseudohdr *aph;
291 int error = 0;
292 int s = SPLSOFTNET();
293 int proto = so->so_proto->pr_protocol;
294
295 npcb = (struct natmpcb *) so->so_pcb;

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

322 error = atm_output(npcb->npcb_ifp, m, NULL, NULL);
323
324 out:
325 splx(s);
326 return (error);
327}
328
329static int
332natm_usr_peeraddr(struct socket *so, struct mbuf *nam)
330natm_usr_peeraddr(struct socket *so, struct sockaddr **nam)
333{
334 struct natmpcb *npcb;
331{
332 struct natmpcb *npcb;
335 struct sockaddr_natm *snatm;
333 struct sockaddr_natm *snatm, ssnatm;
336 int error = 0;
337 int s = SPLSOFTNET();
338
339 npcb = (struct natmpcb *) so->so_pcb;
340 if (npcb == NULL) {
341 error = EINVAL;
342 goto out;
343 }
344
334 int error = 0;
335 int s = SPLSOFTNET();
336
337 npcb = (struct natmpcb *) so->so_pcb;
338 if (npcb == NULL) {
339 error = EINVAL;
340 goto out;
341 }
342
345 snatm = mtod(nam, struct sockaddr_natm *);
343 snatm = &ssnatm;
346 bzero(snatm, sizeof(*snatm));
344 bzero(snatm, sizeof(*snatm));
347 nam->m_len = snatm->snatm_len = sizeof(*snatm);
345 snatm->snatm_len = sizeof(*snatm);
348 snatm->snatm_family = AF_NATM;
349 sprintf(snatm->snatm_if, "%s%d", npcb->npcb_ifp->if_name,
350 npcb->npcb_ifp->if_unit);
351 snatm->snatm_vci = npcb->npcb_vci;
352 snatm->snatm_vpi = npcb->npcb_vpi;
346 snatm->snatm_family = AF_NATM;
347 sprintf(snatm->snatm_if, "%s%d", npcb->npcb_ifp->if_name,
348 npcb->npcb_ifp->if_unit);
349 snatm->snatm_vci = npcb->npcb_vci;
350 snatm->snatm_vpi = npcb->npcb_vpi;
351 *nam = dup_sockaddr((struct sockaddr *)snatm, 0);
353
354 out:
355 splx(s);
356 return (error);
357}
358
359static int
360natm_usr_control(struct socket *so, int cmd, caddr_t arg,

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

401
402static int
403natm_usr_abort(struct socket *so)
404{
405 return natm_usr_shutdown(so);
406}
407
408static int
352
353 out:
354 splx(s);
355 return (error);
356}
357
358static int
359natm_usr_control(struct socket *so, int cmd, caddr_t arg,

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

400
401static int
402natm_usr_abort(struct socket *so)
403{
404 return natm_usr_shutdown(so);
405}
406
407static int
409natm_usr_bind(struct socket *so, struct mbuf *nam, struct proc *p)
408natm_usr_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
410{
411 return EOPNOTSUPP;
412}
413
414static int
409{
410 return EOPNOTSUPP;
411}
412
413static int
415natm_usr_sockaddr(struct socket *so, struct mbuf *nam)
414natm_usr_sockaddr(struct socket *so, struct sockaddr **nam)
416{
417 return EOPNOTSUPP;
418}
419
420/* xxx - should be const */
421struct pr_usrreqs natm_usrreqs = {
422 natm_usr_abort, pru_accept_notsupp, natm_usr_attach, natm_usr_bind,
423 natm_usr_connect, pru_connect2_notsupp, natm_usr_control,

--- 399 unchanged lines hidden ---
415{
416 return EOPNOTSUPP;
417}
418
419/* xxx - should be const */
420struct pr_usrreqs natm_usrreqs = {
421 natm_usr_abort, pru_accept_notsupp, natm_usr_attach, natm_usr_bind,
422 natm_usr_connect, pru_connect2_notsupp, natm_usr_control,

--- 399 unchanged lines hidden ---