TEST_F(IPTest, SpoofedOptions) { IP pdu; uint8_t a[] = { 1,2,3,4,5,6 }; pdu.add_option( IP::option(IP::NOOP, 250, a, a + sizeof(a)) ); pdu.add_option( IP::option(IP::NOOP, 250, a, a + sizeof(a)) ); pdu.add_option( IP::option(IP::NOOP, 250, a, a + sizeof(a)) ); // probably we'd expect it to crash if it's not working, valgrind plx EXPECT_EQ(3U, pdu.options().size()); EXPECT_EQ(pdu.serialize().size(), pdu.size()); }
TEST_F(IPTest, AddOption) { IP ip; const uint8_t data[] = { 0x15, 0x17, 0x94, 0x66, 0xff }; IP::option_identifier id(IP::SEC, IP::CONTROL, 1); ip.add_option(IP::option(id, data, data + sizeof(data))); const IP::option *opt; ASSERT_TRUE((opt = ip.search_option(id))); ASSERT_EQ(opt->data_size(), sizeof(data)); EXPECT_TRUE(memcmp(opt->data_ptr(), data, sizeof(data)) == 0); }