summaryrefslogtreecommitdiffstats
path: root/sys/netinet/udp_usrreq.c
diff options
context:
space:
mode:
authoritojun <itojun@FreeBSD.org>2000-07-04 16:35:15 +0000
committeritojun <itojun@FreeBSD.org>2000-07-04 16:35:15 +0000
commit5f4e854de19331a53788d6100bbcd42845056bc1 (patch)
tree3ff8c876a5868b103fb8713055d83e29a3fa38d5 /sys/netinet/udp_usrreq.c
parentbdc16885232d771a99d7dfc247cd27a44cd061f9 (diff)
downloadFreeBSD-src-5f4e854de19331a53788d6100bbcd42845056bc1.zip
FreeBSD-src-5f4e854de19331a53788d6100bbcd42845056bc1.tar.gz
sync with kame tree as of july00. tons of bug fixes/improvements.
API changes: - additional IPv6 ioctls - IPsec PF_KEY API was changed, it is mandatory to upgrade setkey(8). (also syntax change)
Diffstat (limited to 'sys/netinet/udp_usrreq.c')
-rw-r--r--sys/netinet/udp_usrreq.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 1ec33b2..09b5c96 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -188,6 +188,10 @@ udp_input(m, off, proto)
}
uh = (struct udphdr *)((caddr_t)ip + iphlen);
+ /* destination port of 0 is illegal, based on RFC768. */
+ if (uh->uh_dport == 0)
+ goto bad;
+
/*
* Make mbuf data length reflect UDP length.
* If not enough data to reflect UDP length, drop.
@@ -407,7 +411,7 @@ bad:
return;
}
-#if defined(INET6)
+#ifdef INET6
static void
ip_2_ip6_hdr(ip6, ip)
struct ip6_hdr *ip6;
@@ -714,12 +718,10 @@ udp_output(inp, m, addr, control, p)
udpstat.udps_opackets++;
#ifdef IPSEC
- m->m_pkthdr.rcvif = (struct ifnet *)inp->inp_socket;
+ ipsec_setsocket(m, inp->inp_socket);
#endif /*IPSEC*/
-
error = ip_output(m, inp->inp_options, &inp->inp_route,
- (inp->inp_socket->so_options & (SO_DONTROUTE | SO_BROADCAST))
- | IP_SOCKINMRCVIF,
+ (inp->inp_socket->so_options & (SO_DONTROUTE | SO_BROADCAST)),
inp->inp_moptions);
if (addr) {
OpenPOWER on IntegriCloud