]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/netfilter/xt_hashlimit.c
X25: remove bkl in inq and outq ioctls
[net-next-2.6.git] / net / netfilter / xt_hashlimit.c
index b46a8390896d012dc4524e220a14d817d378dfd7..9228ee0dc11a307a49d131e7f879c738351dcef5 100644 (file)
@@ -448,6 +448,7 @@ hashlimit_init_dst(const struct xt_hashlimit_htable *hinfo,
 {
        __be16 _ports[2], *ports;
        u8 nexthdr;
+       int poff;
 
        memset(dst, 0, sizeof(*dst));
 
@@ -492,19 +493,13 @@ hashlimit_init_dst(const struct xt_hashlimit_htable *hinfo,
                return 0;
        }
 
-       switch (nexthdr) {
-       case IPPROTO_TCP:
-       case IPPROTO_UDP:
-       case IPPROTO_UDPLITE:
-       case IPPROTO_SCTP:
-       case IPPROTO_DCCP:
-               ports = skb_header_pointer(skb, protoff, sizeof(_ports),
+       poff = proto_ports_offset(nexthdr);
+       if (poff >= 0) {
+               ports = skb_header_pointer(skb, protoff + poff, sizeof(_ports),
                                           &_ports);
-               break;
-       default:
+       } else {
                _ports[0] = _ports[1] = 0;
                ports = _ports;
-               break;
        }
        if (!ports)
                return -1;