]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - include/net/pkt_cls.h
[SK_BUFF]: Introduce ip_hdr(), remove skb->nh.iph
[net-next-2.6.git] / include / net / pkt_cls.h
index b902d24a32563f424d0934a6fb04d504a0b1e3ca..880eb7b541643880a0870017948162d4212a9fa1 100644 (file)
@@ -326,7 +326,7 @@ static inline unsigned char * tcf_get_base_ptr(struct sk_buff *skb, int layer)
                case TCF_LAYER_LINK:
                        return skb->data;
                case TCF_LAYER_NETWORK:
-                       return skb->nh.raw;
+                       return skb_network_header(skb);
                case TCF_LAYER_TRANSPORT:
                        return skb->h.raw;
        }
@@ -334,8 +334,8 @@ static inline unsigned char * tcf_get_base_ptr(struct sk_buff *skb, int layer)
        return NULL;
 }
 
-static inline int tcf_valid_offset(struct sk_buff *skb, unsigned char *ptr,
-                                  int len)
+static inline int tcf_valid_offset(const struct sk_buff *skb,
+                                  const unsigned char *ptr, const int len)
 {
        return unlikely((ptr + len) < skb->tail && ptr > skb->head);
 }
@@ -352,10 +352,13 @@ tcf_change_indev(struct tcf_proto *tp, char *indev, struct rtattr *indev_tlv)
 static inline int
 tcf_match_indev(struct sk_buff *skb, char *indev)
 {
+       struct net_device *dev;
+
        if (indev[0]) {
-               if  (!skb->input_dev)
+               if  (!skb->iif)
                        return 0;
-               if (strcmp(indev, skb->input_dev->name))
+               dev = __dev_get_by_index(skb->iif);
+               if (!dev || strcmp(indev, dev->name))
                        return 0;
        }