Skip to content

Commit

Permalink
Permit disabling net.inet.udp.require_l2_bcast in VIMAGE kernels.
Browse files Browse the repository at this point in the history
The default value of the tunable introduced in r304436 couldn't be
effectively overrided on VIMAGE kernels, because instead of being
accessed via the appropriate VNET() accessor macro, it was accessed
via the VNET_NAME() macro, which resolves to the (should-be) read-only
master template of initial values of per-VNET data.  Hence, while the
value of udp_require_l2_bcast could be altered on per-VNET basis, the
code in udp_input() would ignore it as it would always read the default
value (one) from the VNET master template.

Silence from: rstone
  • Loading branch information
gornjas committed Aug 20, 2016
1 parent db727c1 commit 9da85a9
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion sys/netinet/udp_usrreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ SYSCTL_INT(_net_inet_udp, OID_AUTO, blackhole, CTLFLAG_VNET | CTLFLAG_RW,
"Do not send port unreachables for refused connects");

static VNET_DEFINE(int, udp_require_l2_bcast) = 1;
#define V_udp_require_l2_bcast VNET(udp_require_l2_bcast)
SYSCTL_INT(_net_inet_udp, OID_AUTO, require_l2_bcast, CTLFLAG_VNET | CTLFLAG_RW,
&VNET_NAME(udp_require_l2_bcast), 0,
"Only treat packets sent to an L2 broadcast address as broadcast packets");
Expand Down Expand Up @@ -528,7 +529,7 @@ udp_input(struct mbuf **mp, int *offp, int proto)

pcbinfo = udp_get_inpcbinfo(proto);
if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr)) ||
((!VNET_NAME(udp_require_l2_bcast) || m->m_flags & M_BCAST) &&
((!V_udp_require_l2_bcast || m->m_flags & M_BCAST) &&
in_broadcast(ip->ip_dst, ifp))) {
struct inpcb *last;
struct inpcbhead *pcblist;
Expand Down

0 comments on commit 9da85a9

Please sign in to comment.