[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
icmp/ping implementation in linux
I need to send ICMP echo requests with the IP's "no_defrag" bit set and
use large (upto 1500) packet sizes.
I could get the NetBsd version at http://cvs.netbsd.org. Going through
the code, I find on netbsd, ping has the appropriate i.e the -D flag which
sets the no_defrag bit. The MAXPACKET size is also 6568 bytes which is
more than adquate for my purpose.
Linux's ping also has the -s flag to set an userdefined packet size, but
just to confirm I looked up the /usr/src/linux/net/ipv4/icmp.c. Here in
the icmp_send() function I find there's a check in which if the packet
size is greater than 576, the extrabits are silently dropped. Or so it
seems. So I think the -s option is not much useful after that value. Can
anyone confirm this.
On the other hand the function icmp_echo() and icmp_reply() doesnt seem
to have this 576 limitation. So will I be able to recieve such big pings.
However I am more interested in sending the pings with that size, I dont
mind if the replies are curtailed.
Also if one knows of an online version of linux's ping.c ( in iputils ),
i would love that link. ( Idont want to download the entire iputils right
p.s. is there any sysctl feature which sets the no defrag bit on outgoing
ip packets, or is it possible through ipchains etc