+int
+remove_reject_mask(const char *mask1, const char *mask2)
+{
+ rb_dlink_node *ptr, *next;
+ rb_patricia_node_t *pnode;
+ struct reject_data *rdata;
+ uint32_t hashv;
+ int n = 0;
+
+ hashv = 0;
+ if (mask1 != NULL)
+ hashv ^= fnv_hash_upper(mask1, 32);
+ if (mask2 != NULL)
+ hashv ^= fnv_hash_upper(mask2, 32);
+ RB_DLINK_FOREACH_SAFE(ptr, next, reject_list.head)
+ {
+ pnode = ptr->data;
+ rdata = pnode->data;
+ if (rdata->mask_hashv == hashv)
+ {
+ rb_dlinkDelete(ptr, &reject_list);
+ rb_free(rdata);
+ rb_patricia_remove(reject_tree, pnode);
+ n++;
+ }
+ }
+ return n;
+}
+