static int ipq_set_verdict(ipq_queue_t *q, ipq_verdict_msg_t *v, unsigned int len) { ipq_queue_element_t *e; if (v->value > NF_MAX_VERDICT) return -EINVAL; e = ipq_dequeue(q, id_cmp, v->id); if (e == NULL) return -ENOENT; else { e->verdict = v->value; if (v->data_len && v->data_len == len) if (ipq_mangle_ipv4(v, e) < 0) e->verdict = NF_DROP; nf_reinject(e->skb, e->info, e->verdict); kfree(e); return 0; } }
static int ipq_set_verdict(ipq_queue_t *q, ipq_verdict_msg_t *v, unsigned int len) { ipq_queue_element_t *e; if (v->value > NF_MAX_VERDICT) return -EINVAL; e = ipq_dequeue(q, id_cmp, v->id); if (e == NULL) return -ENOENT; else { e->verdict = v->value; if (v->data_len && v->data_len == len) if (ipq_mangle_ipv4(v, e) < 0) e->verdict = NF_DROP; /* APE: Always re-route packets... UGLY HACK!!! */ route_me_harder(e->skb); /* END APE */ nf_reinject(e->skb, e->info, e->verdict); kfree(e); return 0; } }