aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/ip_output.c
diff options
context:
space:
mode:
authorBruce M Simpson <bms@FreeBSD.org>2003-08-20 14:46:40 +0000
committerBruce M Simpson <bms@FreeBSD.org>2003-08-20 14:46:40 +0000
commit8afa23047014b6c73e856501c7dc4deb6caf899f (patch)
treeb0740a95462efb0df015bc34d5d05f5d96cd2f3b /sys/netinet/ip_output.c
parent2d81cd746bc13dfd4f42652bf1060ab0b44908e8 (diff)
downloadsrc-8afa23047014b6c73e856501c7dc4deb6caf899f.tar.gz
src-8afa23047014b6c73e856501c7dc4deb6caf899f.zip
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)
Notes
Notes: svn path=/head/; revision=119178
Diffstat (limited to 'sys/netinet/ip_output.c')
-rw-r--r--sys/netinet/ip_output.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c
index 60d5b1ddaf8d..4a507cf8224b 100644
--- a/sys/netinet/ip_output.c
+++ b/sys/netinet/ip_output.c
@@ -477,6 +477,8 @@ ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro,
error = EMSGSIZE;
goto bad;
}
+ if (flags & IP_SENDONES)
+ ip->ip_dst.s_addr = INADDR_BROADCAST;
m->m_flags |= M_BCAST;
} else {
m->m_flags &= ~M_BCAST;
@@ -1473,6 +1475,7 @@ ip_ctloutput(so, sopt)
case IP_RECVTTL:
case IP_RECVIF:
case IP_FAITH:
+ case IP_ONESBCAST:
error = sooptcopyin(sopt, &optval, sizeof optval,
sizeof optval);
if (error)
@@ -1515,6 +1518,10 @@ ip_ctloutput(so, sopt)
case IP_FAITH:
OPTSET(INP_FAITH);
break;
+
+ case IP_ONESBCAST:
+ OPTSET(INP_ONESBCAST);
+ break;
}
break;
#undef OPTSET
@@ -1608,6 +1615,7 @@ ip_ctloutput(so, sopt)
case IP_RECVIF:
case IP_PORTRANGE:
case IP_FAITH:
+ case IP_ONESBCAST:
switch (sopt->sopt_name) {
case IP_TOS:
@@ -1652,6 +1660,10 @@ ip_ctloutput(so, sopt)
case IP_FAITH:
optval = OPTBIT(INP_FAITH);
break;
+
+ case IP_ONESBCAST:
+ optval = OPTBIT(INP_ONESBCAST);
+ break;
}
error = sooptcopyout(sopt, &optval, sizeof optval);
break;