[Click] SetIPChecksum standard element
Ruetee Chitpranee
rueteec at gmail.com
Tue Jan 17 08:48:31 EST 2012
Hi,
I have a doubt regarding SetIPChecksum standard element.
I test it with *test.click* configuration file (put it before
CheckIPHeader) and I got bad lengths error.
Why it returns error since input packet has network header, good header
length and good packet length?
SetIPChecksum: bad lengths
Packet *
SetIPChecksum::simple_action(Packet *p_in)
{
if (WritablePacket *p = p_in->uniqueify()) {
click_ip *ip;
unsigned plen, hlen;
if (!p->has_network_header())
goto bad;
plen = p->network_length();
if (plen < sizeof(click_ip))
goto bad;
ip = p->ip_header();
hlen = ip->ip_hl << 2;
if (hlen < sizeof(click_ip) || hlen > plen)
goto bad;
ip->ip_sum = 0;
ip->ip_sum = click_in_cksum((unsigned char *)ip, hlen);
return p;
bad:
click_chatter("SetIPChecksum: bad lengths");
p->kill();
}
return 0;
}
ref: test.click
InfiniteSource(DATA \<00 00 c0 ae 67 ef 00 00 00 00 00 00 08 00
45 00 00 28 00 00 00 00 40 11 77 c3 01 00 00 01
02 00 00 02 13 69 13 69 00 14 d6 41 55 44 50 20
70 61 63 6b 65 74 21 0a>, LIMIT 5, STOP true)
-> Strip(14)
//-> Align(4, 0) // in case we're not on x86
-> CheckIPHeader(BADSRC 18.26.4.255 2.255.255.255 1.255.255.255)
-> Print(ok)
-> Discard;
--
Ruetee C.
More information about the click
mailing list