rem: iptcc_delete_rule(r);
add: iptcc_delete_rule(i);
context: TC_DELETE_ENTRY(const IPT_CHAINLABEL chain,		const STRUCT_ENTRY *origfw,		unsigned char *matchmask,		TC_HANDLE_T *handle){	struct chain_head *c;	struct rule_head *r;	STRUCT_ENTRY *e, *fw;	iptc_fn = TC_DELETE_ENTRY;	if (!(c = iptcc_find_label(chain, *handle))) {		errno = ENOENT;		return 0;	}	fw = malloc(origfw->next_offset);	if (fw == NULL) {		errno = ENOMEM;		return 0;	}	list_for_each_entry(r, &c->rules, list) {		memcpy(fw, origfw, origfw->next_offset);#if 0		/* FIXME: handle this in is_same --RR */		if (!map_target(*handle, fw, offset, &discard)) {			free(fw);			return 0;		}#endif		e = r->entry;		if (is_same(e, fw, matchmask)) {			/* If we are about to delete the rule that is the			 * current iterator, move rule iterator back.  next			 * pointer will then point to real next node */			if (r == (*handle)->rule_iterator_cur) {				(*handle)->rule_iterator_cur = 					list_entry((*handle)->rule_iterator_cur->list.prev,						   struct rule_head, list);			}			c->num_rules--;			iptcc_delete_rule(r);			set_changed(*handle);			return 1;		}	}	free(fw);	errno = ENOENT;	return 0;}