summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e3c149d)
SCCS-vsn: sys/netns/ns_input.c 6.7
SCCS-vsn: sys/netns/idp_usrreq.c 6.6
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)idp_usrreq.c 6.5 (Berkeley) %G%
+ * @(#)idp_usrreq.c 6.6 (Berkeley) %G%
register struct idp *idp = mtod(m, struct idp *);
if (nsp==0) {
register struct idp *idp = mtod(m, struct idp *);
if (nsp==0) {
- nsp = ns_pcblookup(&idp->idp_sna,
- idp->idp_dna.x_port, NS_WILDCARD);
- if (nsp==0) {
- ns_error(m, NS_ERR_NOSOCK, 0);
- return;
- }
return (ENOBUFS);
switch (name) {
return (ENOBUFS);
switch (name) {
+ case SO_ALL_PACKETS:
+ mask = NSP_ALL_PACKETS;
+ goto get_flags;
+
case SO_HEADERS_ON_INPUT:
mask = NSP_RAWIN;
goto get_flags;
case SO_HEADERS_ON_INPUT:
mask = NSP_RAWIN;
goto get_flags;
switch (name) {
int mask, *ok;
switch (name) {
int mask, *ok;
+ case SO_ALL_PACKETS:
+ mask = NSP_ALL_PACKETS;
+ goto set_head;
+
case SO_HEADERS_ON_INPUT:
mask = NSP_RAWIN;
goto set_head;
case SO_HEADERS_ON_INPUT:
mask = NSP_RAWIN;
goto set_head;
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
- * @(#)ns_input.c 6.6 (Berkeley) %G%
+ * @(#)ns_input.c 6.7 (Berkeley) %G%
{
register struct idp *idp;
register struct mbuf *m;
{
register struct idp *idp;
register struct mbuf *m;
+ register struct nspcb *nsp;
struct mbuf *m0;
register int i;
int len, s, error;
struct mbuf *m0;
register int i;
int len, s, error;
idp_forward(idp);
goto next;
}
idp_forward(idp);
goto next;
}
- if (oddpacketp) {
- m_adj(m0, -1);
- }
-
- /*
- * Switch out to protocol's input routine.
- */
-
- switch (idp->idp_pt) {
+ /*
+ * Locate pcb for datagram.
+ */
+ nsp = ns_pcblookup(&idp->idp_sna, idp->idp_dna.x_port, NS_WILDCARD);
+ /*
+ * Switch out to protocol's input routine.
+ */
+ nsintr_swtch++;
+ if (nsp) {
+ if (oddpacketp) {
+ m_adj(m0, -1);
+ }
+ if ((nsp->nsp_flags & NSP_ALL_PACKETS)==0)
+ switch (idp->idp_pt) {
- case NSPROTO_SPP:
- spp_input(m);
- break;
+ case NSPROTO_SPP:
+ spp_input(m,nsp);
+ goto next;
- case NSPROTO_ERROR:
- ns_err_input(m);
- break;
- default:
- idp_input(m, 0);
+ case NSPROTO_ERROR:
+ ns_err_input(m);
+ goto next;
+ }
+ idp_input(m,nsp);
+ } else {
+ ns_error(m, NS_ERR_NOSOCK, 0);