static void eth_proto_info_ctor(struct eth_proto_info *info, struct parser *parser, struct proto_info *parent, size_t head_len, size_t payload, uint16_t proto, int vlan_id, struct eth_hdr const *ethhdr) { proto_info_ctor(&info->info, parser, parent, head_len, payload); info->vlan_id = collapse_vlans ? vlan_unset : vlan_id; ASSERT_COMPILE(sizeof(info->addr[0]) == sizeof(ethhdr->src)); memcpy(info->addr[0], ethhdr->src, sizeof(info->addr[0])); ASSERT_COMPILE(sizeof(info->addr[1]) == sizeof(ethhdr->dst)); memcpy(info->addr[1], ethhdr->dst, sizeof(info->addr[1])); info->protocol = proto; }
TEST_F(AnonymousTest, AnonymousTest) { AnonFunc func; ASSERT_COMPILE(TR::TypeDictionary, Anonymous, func); ASSERT_EQ( func(), 1024u); }
bool ip_addr_is_broadcast(struct ip_addr const *addr) { if (ip_addr_is_v6(addr)) { static uint8_t all_nodes[16] = { 0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, }; ASSERT_COMPILE(sizeof(all_nodes) == sizeof(addr->u.v6.s6_addr)); return 0 == memcmp(addr->u.v6.s6_addr, all_nodes, sizeof(all_nodes)); } else { uint32_t netmask = netmask_of_address(addr->u.v4); return (netmask | ntohl(addr->u.v4.s_addr)) == 0xffffffffU; } }