gre: Support decoding GRE-in-UDP (rfc8086)

RFC8086 defines a method for encapsulating GRE packets in UDP, to
allow the usage of GRE tunnels over networks that disallow GRE and
other atypical IP protocols. IANA has allocated UDP ports 4754 for
GRE-in-UDP traffic, and port 4755 for GRE-in-DTLS, this patch only
implements GRE-in-UDP.

Change-Id: I98b356dde4bf310bb20b9a494d93fd4383cf0566
Reviewed-on: https://code.wireshark.org/review/37376
Reviewed-by: Jaap Keuter <jaap.keuter@xs4all.nl>
Petri-Dish: Jaap Keuter <jaap.keuter@xs4all.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
This commit is contained in:
Owen Kirby 2020-06-04 01:06:15 -07:00 committed by Alexis La Goutte
parent 4ae362383f
commit c914843195
1 changed files with 5 additions and 1 deletions

View File

@ -21,6 +21,8 @@
#include "packet-gre.h"
#include "packet-wccp.h"
#define GRE_IN_UDP_PORT 4754
void proto_register_gre(void);
void proto_reg_handoff_gre(void);
@ -29,7 +31,8 @@ void proto_reg_handoff_gre(void);
* "Generic Routing Encapsulation over IPv4 networks", RFC 2637
* "Point-to-Point Tunneling Protocol (PPTP)", RFC 2784 "Generic
* Routing Encapsulation (GRE)", RFC 2890 "Key and Sequence
* Number Extensions to GRE" and draft-ietf-mpls-in-ip-or-gre-07.txt
* Number Extensions to GRE", RFC 8086 "GRE-in-UDP Encapsulation",
* and draft-ietf-mpls-in-ip-or-gre-07.txt
* "Encapsulating MPLS in IP or Generic Routing Encapsulation (GRE)".
*/
@ -752,6 +755,7 @@ proto_reg_handoff_gre(void)
gre_handle = create_dissector_handle(dissect_gre, proto_gre);
dissector_add_uint("ip.proto", IP_PROTO_GRE, gre_handle);
dissector_add_uint("udp.port", GRE_IN_UDP_PORT, gre_handle);
gre_cap_handle = create_capture_dissector_handle(capture_gre, proto_gre);
capture_dissector_add_uint("ip.proto", IP_PROTO_GRE, gre_cap_handle);
}