Beispiel #1
0
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 );
}
Beispiel #2
0
void
test_parse_ether_vlan_succeeds() {
  buffer *buffer = setup_dummy_vlan_packet( );

  assert_int_equal( parse_ether( buffer ), true );

  free_buffer( buffer );
}
Beispiel #3
0
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 );
}
Beispiel #4
0
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 );
}
Beispiel #5
0
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 );
}
Beispiel #6
0
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 );
}
Beispiel #7
0
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 );
}
Beispiel #8
0
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 );
}
Beispiel #9
0
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 );
}
Beispiel #10
0
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;
}
Beispiel #11
0
void
test_parse_ether_fails_if_buffer_is_NULL() {
  expect_assert_failure( parse_ether( NULL ) );
}