parse_link() parses link layer.
 If ERF record says it's not Ethernet, we panic with 
 "unsupported link type" message.

 Otherwise we parse Ethernet, parse_eth(): if the frame type is
 - IPv4, parse_ipv4():
 - IPv6, parse_ipv6():
   parse_ipv4(), parse_ipv6 parses IP packets:
     If it's a version mismatch (e.g. expected 4, got 6), log an error,
     stop parsing.
     Otherwise skip IP header to IP payload.  At this point, IP "proto" 
     or IPv6 "next header" field determines which parser acts next.  
     It can be for:
     - IPv4, IPv6, recursive call to IPv6 or IPv4 parser.
     - IPv6 extension header, parse_ipv6opt():
         recursive call to IPv6 or IPv4 parser.
     - TCP, parse_tcp():
         skip TCP header to data, zero it out, stop parsing.
     - UDP, parse_udp():
         skip UDP header to data, zero it out, stop parsing.
     - ESP, parse_esp():
         skip fixed portion of ESP header, zero the rest out, stop parsing.
     - GRE, parse_gre():
         skip fixed portion of GRE header, zero the rest out, stop parsing.
     - AH, parse_ah():
         skip fixed portion of  AH header, zero the rest out, stop parsing.
     - EIGRP, IGP, RSVP, parse_zerowhole():
         zero everything out, including headers, stop parsing.
     - ICMP, ICMPV6, IGMP, PIM, parse_nofurther():
         leave everything, stop parsing.
     - Any UNASSIGNED protocol: log error "Unassigned proto", leave 
	 everything, stop parsing.
     - Any other protocol: zero everything below IP header out, stop parsing.
 - ARP, RARP, zero out everything below link header, stop parsing.
 - Any other frame type, zero out everything below link header
   If it was multicast, be silent; otherwise, log "unknown ether type" error,
   stop parsing.

If at any point in this process we find that captured length is less than 
what's necessary to parse a header, we stop parsing logging "...header 
truncated" error.
