Re: [tcpdump-workers] ICMP header

2005-03-02 Thread Guy Harris
Guy Harris wrote: Not true of the IP header size - the IPv4 header has a *minimum* length of 20 bytes, but if there are IP options, it could be longer than 20 bytes. The first byte of the IP header is the version/length byte; it includes a length, in units of 4-byte words (so that a value of 0x

Re: [tcpdump-workers] ICMP header

2005-03-02 Thread Guy Harris
Ramsurrun Visham wrote: I read that the headers are contiguous, i.e. ethernet first, then IP, and then ICMP. They are 14, 20 and 8 bytes respectively. I also believe that the header size doesn't change. Not true of the IP header size - the IPv4 header has a *minimum* length of 20 bytes, but if the

Re: [tcpdump-workers] ICMP header

2005-03-02 Thread Ramsurrun Visham
> On Sun, Feb 27, 2005 at 10:37:34PM +0400, Ramsurrun Visham wrote: > | Hi to all, > | > | I would like to know how do we grab the icmp header from an ethernet frame. > I believe we have to jump pass the ethernet and IP headers.. > > no - we actually need to parse through the IP header to find o

Re: [tcpdump-workers] ICMP header

2005-03-01 Thread Guy Harris
Hannes Gredler wrote: no - we actually need to parse through the IP header to find out if the header is variable length [IP options etc.] Actually, you just have to look at the header length field for IPv4; for IPv6, you do have to keep processing headers until the final header is seen. - This is

Re: [tcpdump-workers] ICMP header

2005-03-01 Thread Hannes Gredler
On Sun, Feb 27, 2005 at 10:37:34PM +0400, Ramsurrun Visham wrote: | Hi to all, | | I would like to know how do we grab the icmp header from an ethernet frame. I believe we have to jump pass the ethernet and IP headers.. no - we actually need to parse through the IP header to find out if the head

[tcpdump-workers] ICMP header

2005-02-27 Thread Ramsurrun Visham
Hi to all, I would like to know how do we grab the icmp header from an ethernet frame. I believe we have to jump pass the ethernet and IP headers.. to jump pass the ethernet header, we do sth like this: u_char * handle_IP(u_char *args, const struct pcap_pkthdr* pkthdr, const u_char* packet) {