END_TEST START_TEST(test_bdd_assignment_expand_3) { ipset_assignment_t *a; a = ipset_assignment_new(); ipset_assignment_set(a, 0, TRUE); ipset_assignment_set(a, 2, FALSE); ipset_expanded_assignment_t *it; it = ipset_assignment_expand(a, 3); GByteArray *ea = g_byte_array_sized_new(1); memset(ea->data, 0, 1); fail_if(it->finished, "Expanded assignment shouldn't be empty"); IPSET_BIT_SET(ea->data, 0, TRUE); IPSET_BIT_SET(ea->data, 1, FALSE); IPSET_BIT_SET(ea->data, 2, FALSE); fail_unless(memcmp(ea->data, it->values->data, 1) == 0, "Expanded assignment 1 doesn't match"); ipset_expanded_assignment_advance(it); fail_if(it->finished, "Expanded assignment should have at least 1 element"); IPSET_BIT_SET(ea->data, 0, TRUE); IPSET_BIT_SET(ea->data, 1, TRUE); IPSET_BIT_SET(ea->data, 2, FALSE); fail_unless(memcmp(ea->data, it->values->data, 1) == 0, "Expanded assignment 2 doesn't match"); ipset_expanded_assignment_advance(it); fail_unless(it->finished, "Expanded assignment should have 2 elements"); g_byte_array_free(ea, TRUE); ipset_expanded_assignment_free(it); ipset_assignment_free(a); }
/** * Expand the current assignment as IPv4 addresses. */ static void expand_ipv6(struct ipset_iterator *iterator) { unsigned int last_bit; if (iterator->summarize) { last_bit = find_last_non_either_bit (iterator->bdd_iterator->assignment, IPV6_BIT_SIZE); DEBUG("Last non-either bit is %u", last_bit); } else { last_bit = IPV6_BIT_SIZE; } iterator->assignment_iterator = ipset_assignment_expand (iterator->bdd_iterator->assignment, last_bit + 1); iterator->cidr_prefix = last_bit; process_expanded_assignment(iterator); }
static void expand_ipv6(ipset_iterator_t *iterator) { guint last_bit; if (iterator->summarize) { last_bit = find_last_non_either_bit (iterator->bdd_iterator->assignment, IPV6_BIT_SIZE); g_d_debug("Last non-either bit is %u", last_bit); } else { last_bit = IPV6_BIT_SIZE; } iterator->assignment_iterator = ipset_assignment_expand (iterator->bdd_iterator->assignment, last_bit + 1); iterator->netmask = last_bit; process_expanded_assignment(iterator); }