srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/include/wireframe/summarize.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/wireframe/summarize.hpp')
-rw-r--r--include/wireframe/summarize.hpp19
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;
}