/** * Asserts the "bib" entry was correctly inserted into the tables. * -> if udp_table_has_it, will test the entry exists and is correctly indexed by the UDP table. * Else it will assert the bib is not indexed by the UDP table. * -> if tcp_table_has_it, will test the entry exists and is correctly indexed by the TCP table. * Else it will assert the bib is not indexed by the TCP table. * -> if icmp_table_has_it, will test the entry exists and is correctly indexed by the ICMP table. * Else it will assert the bib is not indexed by the ICMP table. */ static bool assert_bib(char* test_name, struct bib_entry* bib, bool udp_table_has_it, bool tcp_table_has_it, bool icmp_table_has_it) { l4_protocol l4_protos[] = { L4PROTO_UDP, L4PROTO_TCP, L4PROTO_ICMP }; bool table_has_it[3]; 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++) { struct bib_entry *expected_bib = table_has_it[i] ? bib : NULL; struct bib_entry *retrieved_bib; int success = true; success &= assert_equals_int(table_has_it[i] ? 0 : -ESRCH, bibdb_get_by_ipv4(&bib->ipv4, l4_protos[i], &retrieved_bib), test_name); success &= assert_bib_entry_equals(expected_bib, retrieved_bib, test_name); success &= assert_equals_int(table_has_it[i] ? 0 : -ESRCH, bibdb_get_by_ipv6(&bib->ipv6, l4_protos[i], &retrieved_bib), test_name); success &= assert_bib_entry_equals(expected_bib, retrieved_bib, test_name); if (!success) return false; } return true; }
/** * Asserts the "bib" entry was correctly inserted into the tables. * -> if udp_table_has_it, will test the entry exists and is correctly indexed by the UDP table. * Else it will assert the bib is not indexed by the UDP table. * -> if tcp_table_has_it, will test the entry exists and is correctly indexed by the TCP table. * Else it will assert the bib is not indexed by the TCP table. * -> if icmp_table_has_it, will test the entry exists and is correctly indexed by the ICMP table. * Else it will assert the bib is not indexed by the ICMP table. */ bool assert_bib(char* test_name, struct bib_entry* bib, 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 bib_entry *expected_bib = table_has_it[i] ? bib : NULL; struct bib_entry *retrieved_bib; retrieved_bib = bib_get_by_ipv4(&bib->ipv4, l4protocols[i]); if (!assert_bib_entry_equals(expected_bib, retrieved_bib, test_name)) return false; retrieved_bib = bib_get_by_ipv6(&bib->ipv6, l4protocols[i]); if (!assert_bib_entry_equals(expected_bib, retrieved_bib, test_name)) return false; } return true; }