#include #include "ipv6_helpers.h" /* * Internet Protocol Version 6, Src: fe80::250:56ff:fe69:dc00, Dst: ff02::1:2 * 0110 .... = Version: 6 * .... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT) * .... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0) * .... .... ..00 .... .... .... .... .... = Explicit Congestion Notification: Not ECN-Capable Transport (0) * .... 0000 0000 0000 0000 0000 = Flow Label: 0x00000 * Payload Length: 60 * Next Header: UDP (17) * Hop Limit: 1 * Source Address: fe80::250:56ff:fe69:dc00 * Destination Address: ff02::1:2 * [Source SLAAC MAC: VMware_69:dc:00 (00:50:56:69:dc:00)] * */ unsigned char data[] = { 0x60, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x11, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x50, 0x56, 0xff, 0xfe, 0x69, 0xdc, 0x00, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02}; TEST(IPV6_HELPERS, TEST) { char src_str[INET6_ADDRSTRLEN]; char dst_str[INET6_ADDRSTRLEN]; const struct ip6_hdr *hdr = (struct ip6_hdr *)data; EXPECT_TRUE(ipv6_hdr_get_version(hdr) == 6); EXPECT_TRUE(ipv6_hdr_get_traffic_class(hdr) == 0); EXPECT_TRUE(ipv6_hdr_get_flow_label(hdr) == 0); EXPECT_TRUE(ipv6_hdr_get_payload_len(hdr) == 60); EXPECT_TRUE(ipv6_hdr_get_next_header(hdr) == 17); EXPECT_TRUE(ipv6_hdr_get_hop_limit(hdr) == 1); struct in6_addr src_addr = ipv6_hdr_get_net_order_saddr(hdr); struct in6_addr dst_addr = ipv6_hdr_get_net_order_daddr(hdr); inet_ntop(AF_INET6, &src_addr, src_str, INET6_ADDRSTRLEN); inet_ntop(AF_INET6, &dst_addr, dst_str, INET6_ADDRSTRLEN); EXPECT_TRUE(strcmp(src_str, "fe80::250:56ff:fe69:dc00") == 0); EXPECT_TRUE(strcmp(dst_str, "ff02::1:2") == 0); } int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }