summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormdodd <mdodd@FreeBSD.org>2003-03-21 15:43:06 +0000
committermdodd <mdodd@FreeBSD.org>2003-03-21 15:43:06 +0000
commitc2f6d7a732ea0dbba18134e978f4262a44e1af0f (patch)
tree39beac1d00d71dc11e1c23a11a0f85a801154ee5
parent9fc39cde35beb80ac4b9ea7476701c77c54e6aeb (diff)
downloadFreeBSD-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.
-rw-r--r--sys/netinet/ip_icmp.c11
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;
OpenPOWER on IntegriCloud