diff options
author | mdodd <mdodd@FreeBSD.org> | 2003-03-21 15:43:06 +0000 |
---|---|---|
committer | mdodd <mdodd@FreeBSD.org> | 2003-03-21 15:43:06 +0000 |
commit | c2f6d7a732ea0dbba18134e978f4262a44e1af0f (patch) | |
tree | 39beac1d00d71dc11e1c23a11a0f85a801154ee5 /sys/netinet/ip_icmp.c | |
parent | 9fc39cde35beb80ac4b9ea7476701c77c54e6aeb (diff) | |
download | FreeBSD-src-c2f6d7a732ea0dbba18134e978f4262a44e1af0f.zip FreeBSD-src-c2f6d7a732ea0dbba18134e978f4262a44e1af0f.tar.gz |
Add a sysctl node allowing the specification of an address mask to use
when replying to ICMP Address Mask Request packets.
Diffstat (limited to 'sys/netinet/ip_icmp.c')
-rw-r--r-- | sys/netinet/ip_icmp.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c index a15ece2..6aaee47 100644 --- a/sys/netinet/ip_icmp.c +++ b/sys/netinet/ip_icmp.c @@ -84,7 +84,11 @@ SYSCTL_STRUCT(_net_inet_icmp, ICMPCTL_STATS, stats, CTLFLAG_RW, static int icmpmaskrepl = 0; SYSCTL_INT(_net_inet_icmp, ICMPCTL_MASKREPL, maskrepl, CTLFLAG_RW, - &icmpmaskrepl, 0, ""); + &icmpmaskrepl, 0, "Reply to ICMP Address Mask Request packets."); + +static u_int icmpmaskfake = 0; +SYSCTL_UINT(_net_inet_icmp, OID_AUTO, maskfake, CTLFLAG_RW, + &icmpmaskfake, 0, "Fake reply to ICMP Address Mask Request packets."); static int drop_redirect = 0; SYSCTL_INT(_net_inet_icmp, OID_AUTO, drop_redirect, CTLFLAG_RW, @@ -497,7 +501,10 @@ icmp_input(m, off) if (ia->ia_ifp == 0) break; icp->icmp_type = ICMP_MASKREPLY; - icp->icmp_mask = ia->ia_sockmask.sin_addr.s_addr; + if (icmpmaskfake == 0) + icp->icmp_mask = ia->ia_sockmask.sin_addr.s_addr; + else + icp->icmp_mask = icmpmaskfake; if (ip->ip_src.s_addr == 0) { if (ia->ia_ifp->if_flags & IFF_BROADCAST) ip->ip_src = satosin(&ia->ia_broadaddr)->sin_addr; |