diff options
Diffstat (limited to 'include/wireframe/summarize.hpp')
| -rw-r--r-- | include/wireframe/summarize.hpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/include/wireframe/summarize.hpp b/include/wireframe/summarize.hpp index 59aa621..e7e9ae3 100644 --- a/include/wireframe/summarize.hpp +++ b/include/wireframe/summarize.hpp @@ -13,6 +13,7 @@ #include "wireframe/l7/http.hpp" #include "wireframe/l7/tls.hpp" #include "wireframe/net/ethernet.hpp" +#include "wireframe/net/icmp.hpp" #include "wireframe/net/ipv4.hpp" #include "wireframe/net/ipv6.hpp" #include "wireframe/net/tcp.hpp" @@ -122,8 +123,24 @@ inline std::string summarize_transport_and_above(const IpInfo& info) { out += " | " + *l7; } } + } else if (info.proto == net::kProtoIcmp) { + if (auto icmp = net::parse_icmpv4(info.payload)) { + out += " | ICMP " + net::icmpv4_type_name(icmp->type); + if (icmp->identifier) { + out += " id=" + std::to_string(*icmp->identifier) + + " seq=" + std::to_string(*icmp->sequence); + } + } } else if (info.proto == net::kNextHeaderIcmpv6) { - out += " | ICMPv6"; + if (auto icmp = net::parse_icmpv6(info.payload)) { + out += " | ICMPv6 " + net::icmpv6_type_name(icmp->type); + if (icmp->identifier) { + out += " id=" + std::to_string(*icmp->identifier) + + " seq=" + std::to_string(*icmp->sequence); + } + } else { + out += " | ICMPv6"; // truncated: at least say what it is + } } return out; } |