From 8cb8f12863f626586c163b450935419c0b3c34f0 Mon Sep 17 00:00:00 2001 From: Michael Tuexen <tuexen@fh-muenster.de> Date: Tue, 6 Sep 2016 16:00:42 +0200 Subject: [PATCH] Support codes for TIME EXCEEDED ICMP messages. Sponsored by: Netflix --- gtests/net/packetdrill/icmp.h | 4 ++++ gtests/net/packetdrill/icmp_packet.c | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gtests/net/packetdrill/icmp.h b/gtests/net/packetdrill/icmp.h index a35c8b53..86ac623d 100644 --- a/gtests/net/packetdrill/icmp.h +++ b/gtests/net/packetdrill/icmp.h @@ -94,4 +94,8 @@ struct icmpv4 { #define ICMP_PREC_CUTOFF 15 #define NR_ICMP_UNREACH 15 +/* Codes for ICMP_TIME_EXCEEDED */ +#define ICMP_TTL_EX 0 +#define ICMP_REAS_TIME_EX 1 + #endif /* __ICMP_HEADERS_H__ */ diff --git a/gtests/net/packetdrill/icmp_packet.c b/gtests/net/packetdrill/icmp_packet.c index 36c0b9fc..12890f4d 100644 --- a/gtests/net/packetdrill/icmp_packet.c +++ b/gtests/net/packetdrill/icmp_packet.c @@ -62,6 +62,13 @@ struct icmp_code_info icmpv4_unreachable_codes[] = { { 0, NULL }, }; +/* Values for the 'code' byte of an IPv4 ICMP_TIME_EXCEEDED header (RFC 1700). */ +struct icmp_code_info icmpv4_time_exceeded_codes[] = { + { ICMP_TTL_EX, "ttl_exceeded_in_transit" }, + { ICMP_REAS_TIME_EX, "frag_reass_exceeded" }, + { 0, NULL }, +}; + /* Information about the supported types of ICMPv4 header (RFC 1700). */ struct icmp_type_info icmpv4_types[] = { { ICMP_ECHOREPLY, "echo_reply" }, @@ -69,7 +76,7 @@ struct icmp_type_info icmpv4_types[] = { { ICMP_SOURCE_QUENCH, "source_quench" }, { ICMP_REDIRECT, "redirect" }, { ICMP_ECHO, "echo_request" }, - { ICMP_TIME_EXCEEDED, "time_exceeded" }, + { ICMP_TIME_EXCEEDED, "time_exceeded", icmpv4_time_exceeded_codes }, { ICMP_PARAMETERPROB, "parameter_problem" }, { ICMP_TIMESTAMP, "timestamp_request" }, { ICMP_TIMESTAMPREPLY, "timestamp_reply" }, -- GitLab