Example #1
0
/**
 * Same as assert_bib(), except asserting session entries on the session table.
 */
static bool assert_session(char* test_name, struct session_entry* session,
		bool udp_table_has_it, bool tcp_table_has_it, bool icmp_table_has_it)
{
	struct session_entry *retrieved_session, *expected_session;
	struct tuple tuple6, tuple4;
	l4_protocol l4_protos[] = { L4PROTO_UDP, L4PROTO_TCP, L4PROTO_ICMP };
	bool table_has_it[3];
	bool success;
	int i;

	table_has_it[0] = udp_table_has_it;
	table_has_it[1] = tcp_table_has_it;
	table_has_it[2] = icmp_table_has_it;

	for (i = 0; i < 3; i++) {
		tuple4.dst.addr4 = session->local4;
		tuple4.src.addr4 = session->remote4;
		tuple4.l3_proto = L3PROTO_IPV4;
		tuple4.l4_proto = l4_protos[i];

		tuple6.dst.addr6 = session->local6;
		tuple6.src.addr6 = session->remote6;
		tuple6.l3_proto = L3PROTO_IPV6;
		tuple6.l4_proto = l4_protos[i];

		expected_session = table_has_it[i] ? session : NULL;
		success = true;

		retrieved_session = NULL;
		success &= assert_equals_int(table_has_it[i] ? 0 : -ESRCH,
				sessiondb_get(&tuple4, &retrieved_session),
				test_name);
		success &= assert_session_entry_equals(expected_session, retrieved_session, test_name);

		retrieved_session = NULL;
		success &= assert_equals_int(table_has_it[i] ? 0 : -ESRCH,
				sessiondb_get(&tuple6, &retrieved_session),
				test_name);
		success &= assert_session_entry_equals(expected_session, retrieved_session, test_name);

		if (!success)
			return false;
	}

	return true;
}
Example #2
0
/**
 * Same as assert_bib(), except asserting session entries on the session table.
 */
bool assert_session(char* test_name, struct session_entry* session,
		bool udp_table_has_it, bool tcp_table_has_it, bool icmp_table_has_it)
{
	u_int8_t l4protocols[] = { IPPROTO_UDP, IPPROTO_TCP, IPPROTO_ICMP };
	bool table_has_it[] = { udp_table_has_it, tcp_table_has_it, icmp_table_has_it };
	int i;

	for (i = 0; i < 3; i++) {
		struct ipv4_pair pair_4 = { session->ipv4.remote, session->ipv4.local };
		struct ipv6_pair pair_6 = { session->ipv6.local, session->ipv6.remote };
		struct session_entry *expected_session = table_has_it[i] ? session : NULL;
		struct session_entry *retrieved_session;

		retrieved_session = session_get_by_ipv4(&pair_4, l4protocols[i]);
		if (!assert_session_entry_equals(expected_session, retrieved_session, test_name))
			return false;

		retrieved_session = session_get_by_ipv6(&pair_6, l4protocols[i]);
		if (!assert_session_entry_equals(expected_session, retrieved_session, test_name))
			return false;
	}

	return true;
}