On Jan 27, 2015, at 4:46 PM, Jesse Gross <je...@nicira.com> wrote:

> I'm working on implementing support for Geneve in libpcap, which is
> documented here:
> http://tools.ietf.org/html/draft-gross-geneve-02
> 
> Geneve is a tunneling protocol than can encapsulate many different
> things - normally this would be Ethernet, IP, or IPv6 but it can be
> anything with an EtherType. I would like for filters that appear after
> the Geneve keyword to apply to the inner payload, i.e. geneve && ip.
> 
> Since the inner protocol is no longer the same as the outer wire
> format, the checks that are done on linktype don't really make sense
> at that point. The easiest solution would seem to be to allocate a new
> DLT for Geneve and change to that when processing the inner header, so
> I'm requesting a new type for that purpose. I realize that this is a
> little weird because it's not actually a format that will ever appear
> in pcap files and could also be handled purely internally (similar to
> the is_pppoes variable). However, having implemented it both ways, it
> definitely seems cleaner to have a new type that fits into the
> existing switch statements rather than a bunch on one-off checks.

Having a placeholder DLT_ type that doesn't actually correspond to anything you 
get from an interface, and a corresponding LINKTYPE_ value that won't ever 
appear in files, definitely doesn't seem at all clean to me; it's using 
DLT_/LINKTYPE_ values for a purpose completely different from the purpose for 
which they are intended.

I will see whether the handling of PPPoE and MPLS can be cleaned up internally 
to gencode.c; if so, *that* would be the right way to handle Geneve.

_______________________________________________
tcpdump-workers mailing list
tcpdump-workers@lists.tcpdump.org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Reply via email to