projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
trailer's handled wrong on pup's
[unix-history]
/
usr
/
src
/
sys
/
net
/
raw_usrreq.c
diff --git
a/usr/src/sys/net/raw_usrreq.c
b/usr/src/sys/net/raw_usrreq.c
index
5dbdd02
..
aee828e
100644
(file)
--- a/
usr/src/sys/net/raw_usrreq.c
+++ b/
usr/src/sys/net/raw_usrreq.c
@@
-1,4
+1,4
@@
-/* raw_usrreq.c 4.
9 82/03/13
*/
+/* raw_usrreq.c 4.
11 82/03/19
*/
#include "../h/param.h"
#include "../h/mbuf.h"
#include "../h/param.h"
#include "../h/mbuf.h"
@@
-12,13
+12,17
@@
#include "../net/raw_cb.h"
#include "../errno.h"
#include "../net/raw_cb.h"
#include "../errno.h"
+int rawqmaxlen = IFQ_MAXLEN;
+
/*
* Initialize raw connection block q.
/*
* Initialize raw connection block q.
-*/
+
*/
raw_init()
{
raw_init()
{
+
COUNT(RAW_INIT);
rawcb.rcb_next = rawcb.rcb_prev = &rawcb;
COUNT(RAW_INIT);
rawcb.rcb_next = rawcb.rcb_prev = &rawcb;
+ rawintrq.ifq_maxlen = IFQ_MAXLEN;
}
/*
}
/*
@@
-57,9
+61,12
@@
COUNT(RAW_INPUT);
* running at software interrupt level.
*/
s = splimp();
* running at software interrupt level.
*/
s = splimp();
- IF_ENQUEUE(&rawintrq, m);
+ if (IF_QFULL(&rawintrq))
+ m_freem(m);
+ else
+ IF_ENQUEUE(&rawintrq, m);
splx(s);
splx(s);
- s
etrawintr(
);
+ s
chednetisr(NETISR_RAW
);
}
/*
}
/*
@@
-180,8
+187,10
@@
COUNT(RAW_USRREQ);
* the appropriate raw interface routine.
*/
case PRU_ATTACH:
* the appropriate raw interface routine.
*/
case PRU_ATTACH:
+ if ((so->so_state & SS_PRIV) == 0)
+ return (EPERM);
if (rp)
if (rp)
- return (EINVAL);
;
+ return (EINVAL);
error = raw_attach(so, (struct sockaddr *)addr);
break;
error = raw_attach(so, (struct sockaddr *)addr);
break;