diff options
author | David S. Miller <davem@davemloft.net> | 2014-11-06 16:33:13 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-11-06 16:33:13 -0500 |
commit | 6b798d70d07a38e9ba0a32316f76495f9dcfc343 (patch) | |
tree | f1c6e7acc61511454ab27e8ecdb00dfdcc8766e8 /include/net | |
parent | 271d70f4b7f2990c84138be267f8e42c33506cc7 (diff) | |
parent | a85311bf1f9f8185682990cafdd4e0572c0ed373 (diff) | |
download | op-kernel-dev-6b798d70d07a38e9ba0a32316f76495f9dcfc343.zip op-kernel-dev-6b798d70d07a38e9ba0a32316f76495f9dcfc343.tar.gz |
Merge branch 'net_next_ovs' of git://git.kernel.org/pub/scm/linux/kernel/git/pshelar/openvswitch
Pravin B Shelar says:
====================
Open vSwitch
First two patches are related to OVS MPLS support. Rest of patches
are mostly refactoring and minor improvements to openvswitch.
v1-v2:
- Fix conflicts due to "gue: Remote checksum offload"
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/mpls.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/include/net/mpls.h b/include/net/mpls.h new file mode 100644 index 0000000..5b3b5ad --- /dev/null +++ b/include/net/mpls.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2014 Nicira, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ + +#ifndef _NET_MPLS_H +#define _NET_MPLS_H 1 + +#include <linux/if_ether.h> +#include <linux/netdevice.h> + +#define MPLS_HLEN 4 + +static inline bool eth_p_mpls(__be16 eth_type) +{ + return eth_type == htons(ETH_P_MPLS_UC) || + eth_type == htons(ETH_P_MPLS_MC); +} + +/* + * For non-MPLS skbs this will correspond to the network header. + * For MPLS skbs it will be before the network_header as the MPLS + * label stack lies between the end of the mac header and the network + * header. That is, for MPLS skbs the end of the mac header + * is the top of the MPLS label stack. + */ +static inline unsigned char *skb_mpls_header(struct sk_buff *skb) +{ + return skb_mac_header(skb) + skb->mac_len; +} +#endif |