void test_parse_ether_succeeds() { buffer *buffer = setup_dummy_ether_packet( sizeof( ether_header_t ) ); assert_int_equal( parse_ether( buffer ), true ); free_buffer( buffer ); }
void test_parse_ether_vlan_succeeds() { buffer *buffer = setup_dummy_vlan_packet( ); assert_int_equal( parse_ether( buffer ), true ); free_buffer( buffer ); }
void test_parse_ether_fails_if_ether_data_is_NULL() { buffer *buffer = setup_dummy_vlan_packet( ); packet_info( buffer )->l2_data.eth = NULL; expect_assert_failure( parse_ether( buffer ) ); free_buffer( buffer ); }
void test_parse_ether_fails_if_type_is_trancated_vlan() { buffer *buffer = setup_dummy_ether_packet(sizeof( ether_header_t ) ); packet_info( buffer )->l2_data.eth->type = htons( ETH_ETHTYPE_TPID ); assert_int_equal( parse_ether( buffer ), false ); free_buffer( buffer ); }
void test_parse_ether_fails_if_llc_is_unsupported_llc_snap() { buffer *buffer = setup_dummy_snap_packet( ); ( ( snap_header_t * ) packet_info( buffer )->vtag )->llc[ 2 ] = 1; assert_int_equal( parse_ether( buffer ), false ); free_buffer( buffer ); }
void test_parse_ether_fails_if_type_is_trancated_payload_ieee8023() { buffer *buffer = setup_dummy_snap_packet( ); packet_info( buffer )->l2_data.eth->type = htons( sizeof( ether_header_t ) + sizeof( snap_header_t ) ); assert_int_equal( parse_ether( buffer ), false ); free_buffer( buffer ); }
void test_parse_ether_fails_if_mac_address_is_wrong_mac() { buffer *buffer = setup_dummy_ether_packet( sizeof( ether_header_t ) ); packet_info( buffer )->l2_data.eth->macsa[ 0 ] = 0xff; assert_int_equal( parse_ether( buffer ), false ); free_buffer( buffer ); }
void test_parse_ether_fails_if_packet_size_is_short_ethernet_size() { buffer *buffer = setup_dummy_ether_packet( sizeof( ether_header_t ) ); buffer->length = sizeof( ether_header_t ) - ETH_ADDRLEN; assert_int_equal( parse_ether( buffer ), false ); free_buffer( buffer ); }
void test_parse_ether_not_llc_header_succeeds() { buffer *buffer = setup_dummy_snap_packet( ); ( ( snap_header_t * ) packet_info( buffer )->vtag )->llc[ 0 ] = 0xFF; ( ( snap_header_t * ) packet_info( buffer )->vtag )->llc[ 1 ] = 0xFF; assert_int_equal( parse_ether( buffer ), true ); assert_int_equal( packet_info( buffer )->ethtype, ETH_ETHTYPE_UKNOWN ); free_buffer( buffer ); }
static int parse_selector(int *argc_p, char ***argv_p, struct tc_u32_sel *sel, struct nlmsghdr *n) { int argc = *argc_p; char **argv = *argv_p; int res = -1; if (argc <= 0) return -1; if (matches(*argv, "u32") == 0) { NEXT_ARG(); res = parse_u32(&argc, &argv, sel, 0, 0); } else if (matches(*argv, "u16") == 0) { NEXT_ARG(); res = parse_u16(&argc, &argv, sel, 0, 0); } else if (matches(*argv, "u8") == 0) { NEXT_ARG(); res = parse_u8(&argc, &argv, sel, 0, 0); } else if (matches(*argv, "ip") == 0) { NEXT_ARG(); res = parse_ip(&argc, &argv, sel); } else if (matches(*argv, "ip6") == 0) { NEXT_ARG(); res = parse_ip6(&argc, &argv, sel); } else if (matches(*argv, "udp") == 0) { NEXT_ARG(); res = parse_udp(&argc, &argv, sel); } else if (matches(*argv, "tcp") == 0) { NEXT_ARG(); res = parse_tcp(&argc, &argv, sel); } else if (matches(*argv, "icmp") == 0) { NEXT_ARG(); res = parse_icmp(&argc, &argv, sel); } else if (matches(*argv, "mark") == 0) { NEXT_ARG(); res = parse_mark(&argc, &argv, n); } else if (matches(*argv, "ether") == 0) { NEXT_ARG(); res = parse_ether(&argc, &argv, sel); } else return -1; *argc_p = argc; *argv_p = argv; return res; }
void test_parse_ether_fails_if_buffer_is_NULL() { expect_assert_failure( parse_ether( NULL ) ); }