|
@@ -173,9 +173,11 @@ next_hook:
|
|
|
outdev, &elem, okfn, hook_thresh);
|
|
|
if (verdict == NF_ACCEPT || verdict == NF_STOP) {
|
|
|
ret = 1;
|
|
|
- } else if (verdict == NF_DROP) {
|
|
|
+ } else if ((verdict & NF_VERDICT_MASK) == NF_DROP) {
|
|
|
kfree_skb(skb);
|
|
|
- ret = -EPERM;
|
|
|
+ ret = -(verdict >> NF_VERDICT_BITS);
|
|
|
+ if (ret == 0)
|
|
|
+ ret = -EPERM;
|
|
|
} else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE) {
|
|
|
if (!nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
|
|
|
verdict >> NF_VERDICT_BITS))
|