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
delete OURFINNOTACKED
[unix-history]
/
usr
/
src
/
sys
/
netinet
/
udp_usrreq.c
diff --git
a/usr/src/sys/netinet/udp_usrreq.c
b/usr/src/sys/netinet/udp_usrreq.c
index
318dbb1
..
3df037f
100644
(file)
--- a/
usr/src/sys/netinet/udp_usrreq.c
+++ b/
usr/src/sys/netinet/udp_usrreq.c
@@
-1,16
+1,15
@@
-/* udp_usrreq.c 4.
9 81/11/23
*/
+/* udp_usrreq.c 4.
17 81/12/12
*/
#include "../h/param.h"
#include "../h/dir.h"
#include "../h/user.h"
#include "../h/mbuf.h"
#include "../h/param.h"
#include "../h/dir.h"
#include "../h/user.h"
#include "../h/mbuf.h"
-#define PRUREQUESTS
#include "../h/protosw.h"
#include "../h/socket.h"
#include "../h/socketvar.h"
#include "../h/protosw.h"
#include "../h/socket.h"
#include "../h/socketvar.h"
-#include "../net/in
et
.h"
-#include "../net/in
et
_pcb.h"
-#include "../net/in
et
_systm.h"
+#include "../net/in.h"
+#include "../net/in_pcb.h"
+#include "../net/in_systm.h"
#include "../net/ip.h"
#include "../net/ip_var.h"
#include "../net/udp.h"
#include "../net/ip.h"
#include "../net/ip_var.h"
#include "../net/udp.h"
@@
-23,6
+22,7
@@
udp_init()
{
udp_init()
{
+COUNT(UDP_INIT);
udb.inp_next = udb.inp_prev = &udb;
}
udb.inp_next = udb.inp_prev = &udb;
}
@@
-37,8
+37,9
@@
udp_input(m0)
register struct mbuf *m;
int len, ulen;
register struct mbuf *m;
int len, ulen;
+COUNT(UDP_INPUT);
/*
/*
- * Get
ip and udp
header together in first mbuf.
+ * Get
IP and UDP
header together in first mbuf.
*/
m = m0;
if (m->m_len < sizeof (struct udpiphdr) &&
*/
m = m0;
if (m->m_len < sizeof (struct udpiphdr) &&
@@
-47,15
+48,15
@@
udp_input(m0)
goto bad;
}
ui = mtod(m, struct udpiphdr *);
goto bad;
}
ui = mtod(m, struct udpiphdr *);
- if (
ui->ui_len > sizeof (struct ip
))
- ip_stripoptions((struct ip *)ui, (
char
*)0);
+ if (
((struct ip *)ui)->ip_hl > (sizeof (struct ip) >> 2
))
+ ip_stripoptions((struct ip *)ui, (
struct mbuf
*)0);
/*
/*
- * Make mbuf data length reflect
udp
length.
- * If not enough data to reflect
udp
length, drop.
+ * Make mbuf data length reflect
UDP
length.
+ * If not enough data to reflect
UDP
length, drop.
*/
ulen = ntohs((u_short)ui->ui_ulen);
*/
ulen = ntohs((u_short)ui->ui_ulen);
- len = sizeof (struct udp
ip
hdr) + ulen;
+ len = sizeof (struct udphdr) + ulen;
if (((struct ip *)ui)->ip_len != len) {
if (len > ((struct ip *)ui)->ip_len) {
udpstat.udps_badlen++;
if (((struct ip *)ui)->ip_len != len) {
if (len > ((struct ip *)ui)->ip_len) {
udpstat.udps_badlen++;
@@
-66,13
+67,13
@@
udp_input(m0)
}
/*
}
/*
- * Checksum extended
udp
header and data.
+ * Checksum extended
UDP
header and data.
*/
if (udpcksum) {
ui->ui_next = ui->ui_prev = 0;
ui->ui_x1 = 0;
*/
if (udpcksum) {
ui->ui_next = ui->ui_prev = 0;
ui->ui_x1 = 0;
- ui->ui_len = htons((u_short)(sizeof (struct udp
ip
hdr) + ulen));
- if (
(ui->ui_sum = inet_cksum(m, len)) != 0xffff
) {
+ ui->ui_len = htons((u_short)(sizeof (struct udphdr) + ulen));
+ if (
ui->ui_sum = in_cksum(m, len)
) {
udpstat.udps_badsum++;
printf("udp cksum %x\n", ui->ui_sum);
m_freem(m);
udpstat.udps_badsum++;
printf("udp cksum %x\n", ui->ui_sum);
m_freem(m);
@@
-81,7
+82,6
@@
udp_input(m0)
}
/*
}
/*
- * Convert addresses and ports to host format.
* Locate pcb for datagram.
*/
inp = in_pcblookup(&udb,
* Locate pcb for datagram.
*/
inp = in_pcblookup(&udb,
@@
-109,11
+109,10
@@
udp_ctlinput(m)
struct mbuf *m;
{
struct mbuf *m;
{
-
printf("udp_ctlinput\n"
);
+
COUNT(UDP_CTLINPUT
);
m_freem(m);
}
m_freem(m);
}
-/*ARGSUSED*/
udp_output(inp, m0)
struct inpcb *inp;
struct mbuf *m0;
udp_output(inp, m0)
struct inpcb *inp;
struct mbuf *m0;
@@
-122,9
+121,10
@@
udp_output(inp, m0)
register struct udpiphdr *ui;
register int len = 0;
register struct udpiphdr *ui;
register int len = 0;
+COUNT(UDP_OUTPUT);
/*
* Calculate data length and get a mbuf
/*
* Calculate data length and get a mbuf
- * for
udp and ip
headers.
+ * for
UDP and IP
headers.
*/
for (m = m0; m; m = m->m_next)
len += m->m_len;
*/
for (m = m0; m; m = m->m_next)
len += m->m_len;
@@
-133,7
+133,7
@@
udp_output(inp, m0)
goto bad;
/*
goto bad;
/*
- * Fill in mbuf with extended
udp
header
+ * Fill in mbuf with extended
UDP
header
* and addresses and length put into network format.
*/
m->m_off = MMAXOFF - sizeof (struct udpiphdr);
* and addresses and length put into network format.
*/
m->m_off = MMAXOFF - sizeof (struct udpiphdr);
@@
-154,16
+154,15
@@
udp_output(inp, m0)
* Stuff checksum and output datagram.
*/
ui->ui_sum = 0;
* Stuff checksum and output datagram.
*/
ui->ui_sum = 0;
- ui->ui_sum = in
et
_cksum(m, sizeof (struct udpiphdr) + len);
+ ui->ui_sum = in_cksum(m, sizeof (struct udpiphdr) + len);
((struct ip *)ui)->ip_len = sizeof (struct udpiphdr) + len;
((struct ip *)ui)->ip_ttl = MAXTTL;
((struct ip *)ui)->ip_len = sizeof (struct udpiphdr) + len;
((struct ip *)ui)->ip_ttl = MAXTTL;
-
ip_output(m
);
+
(void) ip_output(m, (struct mbuf *)0
);
return;
bad:
m_freem(m);
}
return;
bad:
m_freem(m);
}
-/*ARGSUSED*/
udp_usrreq(so, req, m, addr)
struct socket *so;
int req;
udp_usrreq(so, req, m, addr)
struct socket *so;
int req;
@@
-173,6
+172,7
@@
udp_usrreq(so, req, m, addr)
struct inpcb *inp = sotoinpcb(so);
int error;
struct inpcb *inp = sotoinpcb(so);
int error;
+COUNT(UDP_USRREQ);
if (inp == 0 && req != PRU_ATTACH)
return (EINVAL);
switch (req) {
if (inp == 0 && req != PRU_ATTACH)
return (EINVAL);
switch (req) {
@@
-180,7
+180,7
@@
udp_usrreq(so, req, m, addr)
case PRU_ATTACH:
if (inp != 0)
return (EINVAL);
case PRU_ATTACH:
if (inp != 0)
return (EINVAL);
- error = in_pcba
lloc
(so, &udb, 2048, 2048, (struct sockaddr_in *)addr);
+ error = in_pcba
ttach
(so, &udb, 2048, 2048, (struct sockaddr_in *)addr);
if (error)
return (error);
break;
if (error)
return (error);
break;
@@
-188,13
+188,13
@@
udp_usrreq(so, req, m, addr)
case PRU_DETACH:
if (inp == 0)
return (ENOTCONN);
case PRU_DETACH:
if (inp == 0)
return (ENOTCONN);
- in_pcb
free
(inp);
+ in_pcb
detach
(inp);
break;
case PRU_CONNECT:
if (inp->inp_faddr.s_addr)
return (EISCONN);
break;
case PRU_CONNECT:
if (inp->inp_faddr.s_addr)
return (EISCONN);
- error = in_pcb
setpeer
(inp, (struct sockaddr_in *)addr);
+ error = in_pcb
connect
(inp, (struct sockaddr_in *)addr);
if (error)
return (error);
soisconnected(so);
if (error)
return (error);
soisconnected(so);
@@
-206,7
+206,7
@@
udp_usrreq(so, req, m, addr)
case PRU_DISCONNECT:
if (inp->inp_faddr.s_addr == 0)
return (ENOTCONN);
case PRU_DISCONNECT:
if (inp->inp_faddr.s_addr == 0)
return (ENOTCONN);
- in
p->inp_faddr.s_addr = 0
;
+ in
_pcbdisconnect(inp)
;
soisdisconnected(so);
break;
soisdisconnected(so);
break;
@@
-218,7
+218,7
@@
udp_usrreq(so, req, m, addr)
if (addr) {
if (inp->inp_faddr.s_addr)
return (EISCONN);
if (addr) {
if (inp->inp_faddr.s_addr)
return (EISCONN);
- error = in_pcb
setpeer
(inp, (struct sockaddr_in *)addr);
+ error = in_pcb
connect
(inp, (struct sockaddr_in *)addr);
if (error)
return (error);
} else {
if (error)
return (error);
} else {
@@
-227,11
+227,11
@@
udp_usrreq(so, req, m, addr)
}
udp_output(inp, m);
if (addr)
}
udp_output(inp, m);
if (addr)
- in
p->inp_faddr.s_addr = 0
;
+ in
_pcbdisconnect(inp)
;
break;
case PRU_ABORT:
break;
case PRU_ABORT:
- in_pcb
free
(inp);
+ in_pcb
detach
(inp);
sofree(so);
soisdisconnected(so);
break;
sofree(so);
soisdisconnected(so);
break;
@@
-244,12
+244,3
@@
udp_usrreq(so, req, m, addr)
}
return (0);
}
}
return (0);
}
-
-/*ARGSUSED*/
-udp_sense(m)
- struct mbuf *m;
-{
-
- printf("udp_sense\n");
- return (EOPNOTSUPP);
-}