/** * 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; }
/** * 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; }