git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
SCTP: Update RCU handling during the ADD-IP case
[safe/jmp/linux-2.6]
/
include
/
net
/
pkt_cls.h
diff --git
a/include/net/pkt_cls.h
b/include/net/pkt_cls.h
index
4abda6a
..
f285de6
100644
(file)
--- a/
include/net/pkt_cls.h
+++ b/
include/net/pkt_cls.h
@@
-2,6
+2,7
@@
#define __NET_PKT_CLS_H
#include <linux/pkt_cls.h>
#define __NET_PKT_CLS_H
#include <linux/pkt_cls.h>
+#include <net/net_namespace.h>
#include <net/sch_generic.h>
#include <net/act_api.h>
#include <net/sch_generic.h>
#include <net/act_api.h>
@@
-65,8
+66,6
@@
struct tcf_exts
{
#ifdef CONFIG_NET_CLS_ACT
struct tc_action *action;
{
#ifdef CONFIG_NET_CLS_ACT
struct tc_action *action;
-#elif defined CONFIG_NET_CLS_POLICE
- struct tcf_police *police;
#endif
};
#endif
};
@@
-91,8
+90,6
@@
tcf_exts_is_predicative(struct tcf_exts *exts)
{
#ifdef CONFIG_NET_CLS_ACT
return !!exts->action;
{
#ifdef CONFIG_NET_CLS_ACT
return !!exts->action;
-#elif defined CONFIG_NET_CLS_POLICE
- return !!exts->police;
#else
return 0;
#endif
#else
return 0;
#endif
@@
-129,11
+126,7
@@
tcf_exts_exec(struct sk_buff *skb, struct tcf_exts *exts,
#ifdef CONFIG_NET_CLS_ACT
if (exts->action)
return tcf_action_exec(skb, exts->action, res);
#ifdef CONFIG_NET_CLS_ACT
if (exts->action)
return tcf_action_exec(skb, exts->action, res);
-#elif defined CONFIG_NET_CLS_POLICE
- if (exts->police)
- return tcf_police(skb, exts->police);
#endif
#endif
-
return 0;
}
return 0;
}
@@
-306,6
+299,8
@@
static inline int tcf_em_tree_match(struct sk_buff *skb,
return 1;
}
return 1;
}
+#define MODULE_ALIAS_TCF_EMATCH(kind) MODULE_ALIAS("ematch-kind-" __stringify(kind))
+
#else /* CONFIG_NET_EMATCH */
struct tcf_ematch_tree
#else /* CONFIG_NET_EMATCH */
struct tcf_ematch_tree
@@
-326,18
+321,18
@@
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:
case TCF_LAYER_LINK:
return skb->data;
case TCF_LAYER_NETWORK:
- return skb
->nh.raw
;
+ return skb
_network_header(skb)
;
case TCF_LAYER_TRANSPORT:
case TCF_LAYER_TRANSPORT:
- return skb
->h.raw
;
+ return skb
_transport_header(skb)
;
}
return NULL;
}
}
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);
+ return unlikely((ptr + len) < skb
_tail_pointer(skb)
&& ptr > skb->head);
}
#ifdef CONFIG_NET_CLS_IND
}
#ifdef CONFIG_NET_CLS_IND
@@
-352,10
+347,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)
{
static inline int
tcf_match_indev(struct sk_buff *skb, char *indev)
{
- if (0 != indev[0]) {
- if (NULL == skb->input_dev)
+ struct net_device *dev;
+
+ if (indev[0]) {
+ if (!skb->iif)
return 0;
return 0;
- else if (0 != strcmp(indev, skb->input_dev->name))
+ dev = __dev_get_by_index(&init_net, skb->iif);
+ if (!dev || strcmp(indev, dev->name))
return 0;
}
return 0;
}