srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_summarize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_summarize.cpp')
-rw-r--r--tests/test_summarize.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/tests/test_summarize.cpp b/tests/test_summarize.cpp
index ac6f1c0..27e0dd3 100644
--- a/tests/test_summarize.cpp
+++ b/tests/test_summarize.cpp
@@ -163,13 +163,27 @@ TEST_CASE("summarize_packet reports a truncated Ethernet frame without decoding
CHECK(line == "[10 bytes] truncated ethernet frame");
}
-TEST_CASE("summarize_packet stops after the Ethernet line for a non-IP ethertype") {
+TEST_CASE("summarize_packet stops after the Ethernet line for an unhandled ethertype") {
std::vector<unsigned char> bytes = {
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF,
- 0x08, 0x06, // ARP, not IPv4/IPv6
+ 0x88, 0xCC, // LLDP, not IPv4/IPv6/ARP
};
auto line = packeteer::summarize_packet(bytes, DLT_EN10MB);
- CHECK(line == "ETH aa:bb:cc:dd:ee:ff -> 11:22:33:44:55:66 ethertype=0x0806");
+ CHECK(line == "ETH aa:bb:cc:dd:ee:ff -> 11:22:33:44:55:66 ethertype=0x88cc");
+}
+
+TEST_CASE("summarize_packet decodes an ARP request end to end") {
+ std::vector<unsigned char> bytes = {
+ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF,
+ 0x08, 0x06, // ARP
+ 0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01,
+ 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 10, 0, 0, 1,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 10, 0, 0, 2,
+ };
+ auto line = packeteer::summarize_packet(bytes, DLT_EN10MB);
+ CHECK(line ==
+ "ETH aa:bb:cc:dd:ee:ff -> 11:22:33:44:55:66 ethertype=0x0806 | "
+ "ARP who-has 10.0.0.2 tell 10.0.0.1 (aa:bb:cc:dd:ee:ff)");
}
TEST_CASE("hex_dump_lines produces one line per 16 bytes, with the right byte count") {