X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Fcompat.h;h=c7fd2252676e7fdb8944d7494d74a9700345859c;hb=f31282b9c152d5e993c8fe0068b7a4ed8c8d98c8;hp=3113b961e7b4ba336a07e3bfa189df2f76f84f64;hpb=e0edde6fee279cdbbf3c179f5f50adaf0c7c7f1e;p=sliver-openvswitch.git diff --git a/datapath/compat.h b/datapath/compat.h index 3113b961e..c7fd22526 100644 --- a/datapath/compat.h +++ b/datapath/compat.h @@ -53,26 +53,6 @@ static inline void skb_clear_rxhash(struct sk_buff *skb) #endif } -/* - * Enforces, mutual exclusion with the Linux bridge module, by declaring and - * exporting br_should_route_hook. Because the bridge module also exports the - * same symbol, the module loader will refuse to load both modules at the same - * time (e.g. "bridge: exports duplicate symbol br_should_route_hook (owned by - * openvswitch)"). - * - * Before Linux 2.6.36, Open vSwitch cannot safely coexist with the Linux - * bridge module, so openvswitch uses this macro in those versions. In - * Linux 2.6.36 and later, Open vSwitch can coexist with the bridge module, - * but it makes no sense to load both bridge and brcompat, so brcompat uses - * this macro in those versions. - * - * The use of "typeof" here avoids the need to track changes in the type of - * br_should_route_hook over various kernel versions. - */ -#define BRIDGE_MUTUAL_EXCLUSION \ - typeof(br_should_route_hook) br_should_route_hook; \ - EXPORT_SYMBOL(br_should_route_hook) - #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32) #define GENL_SOCK(net) (genl_sock) #define SET_NETNSOK @@ -81,4 +61,37 @@ static inline void skb_clear_rxhash(struct sk_buff *skb) #define SET_NETNSOK .netnsok = true, #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) +#ifdef CONFIG_NETFILTER +static inline u32 skb_get_mark(struct sk_buff *skb) +{ + return skb->nfmark; +} + +static inline void skb_set_mark(struct sk_buff *skb, u32 mark) +{ + skb->nfmark = mark; +} +#else /* CONFIG_NETFILTER */ +static inline u32 skb_get_mark(struct sk_buff *skb) +{ + return 0; +} + +static inline void skb_set_mark(struct sk_buff *skb, u32 mark) +{ +} +#endif +#else /* before 2.6.20 */ +static inline u32 skb_get_mark(struct sk_buff *skb) +{ + return skb->mark; +} + +static inline void skb_set_mark(struct sk_buff *skb, u32 mark) +{ + skb->mark = mark; +} +#endif /* after 2.6.20 */ + #endif /* compat.h */