diff options
author | bms <bms@FreeBSD.org> | 2003-08-20 14:46:40 +0000 |
---|---|---|
committer | bms <bms@FreeBSD.org> | 2003-08-20 14:46:40 +0000 |
commit | 3af3c5ae44ef98b9f2da135dcb64cfc12acd0f39 (patch) | |
tree | b0740a95462efb0df015bc34d5d05f5d96cd2f3b /sys/netinet/udp_usrreq.c | |
parent | 5546ba50272e71097a2f7c6b9fbec902cf58c4ea (diff) | |
download | FreeBSD-src-3af3c5ae44ef98b9f2da135dcb64cfc12acd0f39.zip FreeBSD-src-3af3c5ae44ef98b9f2da135dcb64cfc12acd0f39.tar.gz |
Add the IP_ONESBCAST option, to enable undirected IP broadcasts to be sent on
specific interfaces. This is required by aodvd, and may in future help us
in getting rid of the requirement for BPF from our import of isc-dhcp.
Suggested by: fenestro
Obtained from: BSD/OS
Reviewed by: mini, sam
Approved by: jake (mentor)
Diffstat (limited to 'sys/netinet/udp_usrreq.c')
-rw-r--r-- | sys/netinet/udp_usrreq.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index 794461e..6b8b87e 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -693,6 +693,7 @@ udp_output(inp, m, addr, control, td) struct cmsghdr *cm; struct sockaddr_in *sin, src; int error = 0; + int ipflags; u_short fport, lport; #ifdef MAC @@ -821,6 +822,10 @@ udp_output(inp, m, addr, control, td) ui->ui_dport = fport; ui->ui_ulen = htons((u_short)len + sizeof(struct udphdr)); + ipflags = inp->inp_socket->so_options & (SO_DONTROUTE | SO_BROADCAST); + if (inp->inp_flags & INP_ONESBCAST) + ipflags |= IP_SENDONES; + /* * Set up checksum and output datagram. */ @@ -837,8 +842,7 @@ udp_output(inp, m, addr, control, td) ((struct ip *)ui)->ip_tos = inp->inp_ip_tos; /* XXX */ udpstat.udps_opackets++; - error = ip_output(m, inp->inp_options, &inp->inp_route, - (inp->inp_socket->so_options & (SO_DONTROUTE | SO_BROADCAST)), + error = ip_output(m, inp->inp_options, &inp->inp_route, ipflags, inp->inp_moptions, inp); return (error); |