static int nl_flush_selective_cb(enum nf_conntrack_msg_type type, struct nf_conntrack *ct, void *data) { /* don't delete this conntrack, it's in the ignore filter */ if (ct_filter_conntrack(ct, 1)) return NFCT_CB_CONTINUE; switch(type) { case NFCT_T_UPDATE: nl_destroy_conntrack(STATE(flush), ct); break; default: STATE(stats).nl_dump_unknown_type++; break; } return NFCT_CB_CONTINUE; }
static int internal_bypass_ct_dump_cb(enum nf_conntrack_msg_type type, struct nf_conntrack *ct, void *data) { char buf[1024]; int size, *fd = data; if (ct_filter_conntrack(ct, 1)) return NFCT_CB_CONTINUE; size = nfct_snprintf(buf, 1024, ct, NFCT_T_UNKNOWN, NFCT_O_DEFAULT, 0); if (size < 1024) { buf[size] = '\n'; size++; } send(*fd, buf, size, 0); return NFCT_CB_CONTINUE; }