Make TCPFragmenter take into account IP & TCP header lengths

TCPFragmenter breaks TCP/IP packets into chunks no larger than MTU.
However, it does not take into account the length of the TCP or IP headers
when doing this.  This commit make it take them into account when
calculating the size of the TCP payload.

Reviewed-By: cliff@meraki.com

git-svn-id: svn+ssh://svn.meraki.net/var/local/svnbase/meraki/trunk/router@102016 291e08f9-2c14-0410-acb0-c89b6de265c5
Make TCPFragmenter honor an MTU_ANNO

This is similar to the functionality in IPFragmenter, where you can either
set an MTU or use an MTU_ANNO or both.

Reviewed-By: cliff@meraki.com

git-svn-id: svn+ssh://svn.meraki.net/var/local/svnbase/meraki/trunk/router@102017 291e08f9-2c14-0410-acb0-c89b6de265c5
Make TCPFragmenter work correctly with FIN

Since TCPFragmenter copies all of a packet's headers to the fragmented
packets, each fragment inherits the original packet's flags.  This includes
the FIN flag, so if FIN were set each fragment will look like a FIN; this
prematurely terminates the flow.

This change modifies the behaviour to only allow a FIN on the last fragment.

Reviewed-By: cliff@meraki.com

git-svn-id: svn+ssh://svn.meraki.net/var/local/svnbase/meraki/trunk/router@102018 291e08f9-2c14-0410-acb0-c89b6de265c5
Add counters to TCPFragmenter

This element now counts

	* count -- the total number of packets
	* fragmented_count -- the number of packets fragmented
	* fragments -- the number of fragments produced

Thanks to Cliff Frey for the suggestion.

Reviewed-By: cliff@meraki.com

git-svn-id: svn+ssh://svn.meraki.net/var/local/svnbase/meraki/trunk/router@102019 291e08f9-2c14-0410-acb0-c89b6de265c5
Merge pull request #74 from pallas/master

Fun with TCPFragmenter