diff --git a/extensions/xt_quota2.c b/extensions/xt_quota2.c index ff91fcb..aa00207 100644 --- a/extensions/xt_quota2.c +++ b/extensions/xt_quota2.c @@ -219,13 +219,14 @@ quota_mt2(const struct sk_buff *skb, struct xt_action_param *par) } ret = true; } else { - if (e->quota >= skb->len) { + if (e->quota >= ((q->flags & XT_QUOTA_PACKET) ? 1 : skb->len)) { if (!(q->flags & XT_QUOTA_NO_CHANGE)) e->quota -= (q->flags & XT_QUOTA_PACKET) ? 1 : skb->len; ret = !ret; } else { /* we do not allow even small packets from now on */ - e->quota = 0; + if (!(q->flags & XT_QUOTA_NO_CHANGE)) + e->quota = 0; } q->quota = e->quota; }