Reference platform header for in6_addr struct

Prior to this commit, click defined it's own struct for an IPv6
address. This change modifies to be consistent with the IPv3
implementation in that it pulls the standard 'struct in6_addr'
definition from the platform include files.  This also give access to
some standard IPv6 related macros/constants. Updated files in this
commit were just to reflect the name change from 'click_in6_addr' to
'in6_addr'. References to s_addr16 and s_addr32 were removed as these
are not universally defined on all platforms.

This passes all click tests.
Update support for embedded IPv4 Addresses

This change updates core IPv6 addressing related components to the
latest IPv6 Addressing Architecuture (RFC 4291). Specifically, it
splits support for IPv4-Compatible addresses, deprecated in RFC
4291-2.5.5.1, and augments support for IPv4-Mapped addresses.
IPv4-Mapped address are never transmitted over the wire. Instead, they
are used internally to represent v4 addresses in a single data
structure. The IPv4-Mapped form is the default for any IPv4 Address
assigned to the IP6Address class. The basic_parse routine was modified
to also accept IPv4 AddressInfo mnemonics of the form "0::ffff:<tag>".

Simplified the ip4_address() function to simply return either the v4
address, if it's v4-mapped, or the zero address.  The result can be
used directly in a bool test without the need for another variable.
Augment IP6FlowID to support IPv4-mapped flows

This change permits creating IPv4-mapped IP6Flows from IPv4 flows
and/or their individual parameters.  IPv4-mapped addresses are not
intended for transmission over the wire. Rather, the use of the
IPv4-mapped flow is as a programming conviencience to avoid explicitly
creating/managing different IPFlow types.
Merge pull request #120 from pbuonado/pb_ip6flowid2

Update to IPv6 Support
Add test that demonstrates a problem with Args.
Fix that problem (reported by Søren Løvborg).
StaticThreadSched can schedule everything in a compound element.

Chang Lan request.
glob_match becomes a function of String.
Resize: adjust packet length

Signed-off-by: Søren Løvborg <soeren.j.loevborg@siemens.com>
Resize: Simple regression testie

Signed-off-by: Søren Løvborg <soeren.j.loevborg@siemens.com>
Clipboard: copy data from one packet to another

Signed-off-by: Søren Løvborg <soeren.j.loevborg@siemens.com>
Clipboard: Simple regression testie

Signed-off-by: Søren Løvborg <soeren.j.loevborg@siemens.com>
Merge pull request #121 from kwi-dk/resize-copydata

Resize and CopyData elements
linux/ToUserDevice: bail out if encap fails

If WritablePacket::push fails here, we end up with a dangling pointer.
Instead, adjust wp and just bail out if we were unable to push.

Signed-off-by: Derrick Pallas <pallas@meraki.com>
linux/ToUserDevice: the pointers are volatile, not the objects

Signed-off-by: Derrick Pallas <pallas@meraki.com>
linux/ToUserDevice: replace pointer with array index

It is a bad idea to put a pointer to an element into file_priv since the
router might be destroyed while the chrdev is open.  This change stores the
minor number instead and then looks up the ToUserDevice in the elem_map.  If
the element goes away, it should already clear its own entry in the map.

Signed-off-by: Derrick Pallas <pallas@meraki.com>
linux/ToUserDevice: bail if kmalloc fails for file_priv

Signed-off-by: Derrick Pallas <pallas@meraki.com>
Merge pull request #122 from pallas/touserdevice-nits

ToUserDevice nits
Add a test that demonstrates a problem with IPFragmenter.

Mihai Dobrescu and Katerina Argyraki found this bug but didn't
report it.
Fix that IPFragmenter problem.