I SVN checked in the above package. This package is responsible for calculating various types of checksum and CRCs. Also appropriate Tcp, Udp, Ip4, Ip6 and Icmp headers received new methods calculateChecksum and dynamic description method checksumDescription which compares the claculated checksum with the computed one and displays "correct" or "incorrect" next to the checksum field in each of the above protocols. Both Tcp and Udp over Ip4 and Ip6 are supported with pseudo headers.
The implementation is done in native methods using the widely used BSD checksuming code.
I'm currently adding a flag, with the previously added header support, which will flag if the header is fragmented or not. The JHeader.State.FLAG_HEADER_FRAGMENT is a cummulative scanner flag that will accumulate once one of the header's in a packet set it. Another words, if ip scanner determines that the ip packet is a fragment, it will set the accumulative flag which will then be subsequently set in all the remaining encapsulated headers. Thus you will be able to ask Udp header if its a fragment Udp.isFragment():boolean and udp header will now by the cumulative FLAG_HEADER_FRAGMENT flag if it is. Also other headers such as Http and Sip will also be able to set those flags once they determine that the entire message is not in the current tcp segment.
Scanners do a bit more work with all the latest additions. Before all they set was offset, length and next_id. Now they also set prefix, gap, payload, postfix, keep track of truncated headers and now FRAGMENT state. For those curious, most of these things are set or calculated generically without the header actually having to do any of it. Of course each header scanner can set any of these (both in java and native land.)