mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
compat: Add tc compatibility headers for old kernels
Added compatibility headers for actions vlan and tunnel key. Do not use compat code when compiling kernel datapath there is no need for it as TC compatibility is not provided there. In other words, the compat code is only used when compiling user-space code against old kernel headers. Signed-off-by: Paul Blakey <paulb@mellanox.com> Reviewed-by: Roi Dayan <roid@mellanox.com> Acked-by: Flavio Leitner <fbl@sysclose.org> Signed-off-by: Simon Horman <simon.horman@netronome.com>
This commit is contained in:
committed by
Simon Horman
parent
a3c99b6def
commit
1dc0da67b0
26
acinclude.m4
26
acinclude.m4
@@ -155,6 +155,32 @@ AC_DEFUN([OVS_CHECK_LINUX], [
|
||||
AM_CONDITIONAL(LINUX_ENABLED, test -n "$KBUILD")
|
||||
])
|
||||
|
||||
dnl OVS_CHECK_LINUX_TC
|
||||
dnl
|
||||
dnl Configure Linux tc compat.
|
||||
AC_DEFUN([OVS_CHECK_LINUX_TC], [
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM([#include <linux/pkt_cls.h>], [
|
||||
int x = TCA_ACT_COOKIE;
|
||||
])],
|
||||
[AC_DEFINE([HAVE_TCA_ACT_COOKIE], [1],
|
||||
[Define to 1 if TCA_ACT_COOKIE is avaiable.])])
|
||||
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM([#include <linux/tc_act/tc_vlan.h>], [
|
||||
int x = TCA_VLAN_PUSH_VLAN_PRIORITY;
|
||||
])],
|
||||
[AC_DEFINE([HAVE_TCA_VLAN_PUSH_VLAN_PRIORITY], [1],
|
||||
[Define to 1 if TCA_VLAN_PUSH_VLAN_PRIORITY is avaiable.])])
|
||||
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM([#include <linux/tc_act/tc_tunnel_key.h>], [
|
||||
int x = TCA_TUNNEL_KEY_ENC_DST_PORT;
|
||||
])],
|
||||
[AC_DEFINE([HAVE_TCA_TUNNEL_KEY_ENC_DST_PORT], [1],
|
||||
[Define to 1 if TCA_TUNNEL_KEY_ENC_DST_PORT is avaiable.])])
|
||||
])
|
||||
|
||||
dnl OVS_CHECK_DPDK
|
||||
dnl
|
||||
dnl Configure DPDK source tree
|
||||
|
@@ -174,6 +174,7 @@ OVS_ENABLE_SPARSE
|
||||
AC_ARG_VAR(KARCH, [Kernel Architecture String])
|
||||
AC_SUBST(KARCH)
|
||||
OVS_CHECK_LINUX
|
||||
OVS_CHECK_LINUX_TC
|
||||
OVS_CHECK_DPDK
|
||||
OVS_CHECK_PRAGMA_MESSAGE
|
||||
AC_SUBST([OVS_CFLAGS])
|
||||
|
@@ -11,3 +11,4 @@ include include/openflow/automake.mk
|
||||
include include/openvswitch/automake.mk
|
||||
include include/sparse/automake.mk
|
||||
include include/windows/automake.mk
|
||||
include include/linux/automake.mk
|
||||
|
4
include/linux/automake.mk
Normal file
4
include/linux/automake.mk
Normal file
@@ -0,0 +1,4 @@
|
||||
noinst_HEADERS += \
|
||||
include/linux/pkt_cls.h \
|
||||
include/linux/tc_act/tc_tunnel_key.h \
|
||||
include/linux/tc_act/tc_vlan.h
|
165
include/linux/pkt_cls.h
Normal file
165
include/linux/pkt_cls.h
Normal file
@@ -0,0 +1,165 @@
|
||||
#ifndef __LINUX_PKT_CLS_WRAPPER_H
|
||||
#define __LINUX_PKT_CLS_WRAPPER_H 1
|
||||
|
||||
#if defined(__KERNEL__) || defined(HAVE_TCA_ACT_COOKIE)
|
||||
#include_next <linux/pkt_cls.h>
|
||||
#else
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/pkt_sched.h>
|
||||
|
||||
/* Action attributes */
|
||||
enum {
|
||||
TCA_ACT_UNSPEC,
|
||||
TCA_ACT_KIND,
|
||||
TCA_ACT_OPTIONS,
|
||||
TCA_ACT_INDEX,
|
||||
TCA_ACT_STATS,
|
||||
TCA_ACT_PAD,
|
||||
TCA_ACT_COOKIE,
|
||||
__TCA_ACT_MAX
|
||||
};
|
||||
|
||||
#define TCA_ACT_MAX __TCA_ACT_MAX
|
||||
#define TCA_OLD_COMPAT (TCA_ACT_MAX+1)
|
||||
#define TCA_ACT_MAX_PRIO 32
|
||||
#define TCA_ACT_BIND 1
|
||||
#define TCA_ACT_NOBIND 0
|
||||
#define TCA_ACT_UNBIND 1
|
||||
#define TCA_ACT_NOUNBIND 0
|
||||
#define TCA_ACT_REPLACE 1
|
||||
#define TCA_ACT_NOREPLACE 0
|
||||
|
||||
#define TC_ACT_UNSPEC (-1)
|
||||
#define TC_ACT_OK 0
|
||||
#define TC_ACT_RECLASSIFY 1
|
||||
#define TC_ACT_SHOT 2
|
||||
#define TC_ACT_PIPE 3
|
||||
#define TC_ACT_STOLEN 4
|
||||
#define TC_ACT_QUEUED 5
|
||||
#define TC_ACT_REPEAT 6
|
||||
#define TC_ACT_REDIRECT 7
|
||||
#define TC_ACT_JUMP 0x10000000
|
||||
|
||||
struct tc_police {
|
||||
__u32 index;
|
||||
int action;
|
||||
#define TC_POLICE_UNSPEC TC_ACT_UNSPEC
|
||||
#define TC_POLICE_OK TC_ACT_OK
|
||||
#define TC_POLICE_RECLASSIFY TC_ACT_RECLASSIFY
|
||||
#define TC_POLICE_SHOT TC_ACT_SHOT
|
||||
#define TC_POLICE_PIPE TC_ACT_PIPE
|
||||
|
||||
__u32 limit;
|
||||
__u32 burst;
|
||||
__u32 mtu;
|
||||
struct tc_ratespec rate;
|
||||
struct tc_ratespec peakrate;
|
||||
int refcnt;
|
||||
int bindcnt;
|
||||
__u32 capab;
|
||||
};
|
||||
|
||||
struct tcf_t {
|
||||
__u64 install;
|
||||
__u64 lastuse;
|
||||
__u64 expires;
|
||||
__u64 firstuse;
|
||||
};
|
||||
|
||||
#define tc_gen \
|
||||
__u32 index; \
|
||||
__u32 capab; \
|
||||
int action; \
|
||||
int refcnt; \
|
||||
int bindcnt
|
||||
|
||||
enum {
|
||||
TCA_POLICE_UNSPEC,
|
||||
TCA_POLICE_TBF,
|
||||
TCA_POLICE_RATE,
|
||||
TCA_POLICE_PEAKRATE,
|
||||
TCA_POLICE_AVRATE,
|
||||
TCA_POLICE_RESULT,
|
||||
TCA_POLICE_TM,
|
||||
TCA_POLICE_PAD,
|
||||
__TCA_POLICE_MAX
|
||||
#define TCA_POLICE_RESULT TCA_POLICE_RESULT
|
||||
};
|
||||
|
||||
/* tca flags definitions */
|
||||
#define TCA_CLS_FLAGS_SKIP_HW (1 << 0)
|
||||
#define TCA_CLS_FLAGS_SKIP_SW (1 << 1)
|
||||
|
||||
/* Basic filter */
|
||||
|
||||
enum {
|
||||
TCA_BASIC_UNSPEC,
|
||||
TCA_BASIC_CLASSID,
|
||||
TCA_BASIC_EMATCHES,
|
||||
TCA_BASIC_ACT,
|
||||
TCA_BASIC_POLICE,
|
||||
__TCA_BASIC_MAX
|
||||
};
|
||||
|
||||
/* Flower classifier */
|
||||
|
||||
enum {
|
||||
TCA_FLOWER_UNSPEC,
|
||||
TCA_FLOWER_CLASSID,
|
||||
TCA_FLOWER_INDEV,
|
||||
TCA_FLOWER_ACT,
|
||||
TCA_FLOWER_KEY_ETH_DST, /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ETH_DST_MASK, /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ETH_SRC, /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ETH_SRC_MASK, /* ETH_ALEN */
|
||||
TCA_FLOWER_KEY_ETH_TYPE, /* be16 */
|
||||
TCA_FLOWER_KEY_IP_PROTO, /* u8 */
|
||||
TCA_FLOWER_KEY_IPV4_SRC, /* be32 */
|
||||
TCA_FLOWER_KEY_IPV4_SRC_MASK, /* be32 */
|
||||
TCA_FLOWER_KEY_IPV4_DST, /* be32 */
|
||||
TCA_FLOWER_KEY_IPV4_DST_MASK, /* be32 */
|
||||
TCA_FLOWER_KEY_IPV6_SRC, /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_IPV6_SRC_MASK, /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_IPV6_DST, /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_IPV6_DST_MASK, /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_TCP_SRC, /* be16 */
|
||||
TCA_FLOWER_KEY_TCP_DST, /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_SRC, /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_DST, /* be16 */
|
||||
|
||||
TCA_FLOWER_FLAGS,
|
||||
TCA_FLOWER_KEY_VLAN_ID, /* be16 */
|
||||
TCA_FLOWER_KEY_VLAN_PRIO, /* u8 */
|
||||
TCA_FLOWER_KEY_VLAN_ETH_TYPE, /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_ENC_KEY_ID, /* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV4_SRC, /* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK,/* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV4_DST, /* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV4_DST_MASK,/* be32 */
|
||||
TCA_FLOWER_KEY_ENC_IPV6_SRC, /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK,/* struct in6_addr */
|
||||
TCA_FLOWER_KEY_ENC_IPV6_DST, /* struct in6_addr */
|
||||
TCA_FLOWER_KEY_ENC_IPV6_DST_MASK,/* struct in6_addr */
|
||||
|
||||
TCA_FLOWER_KEY_TCP_SRC_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_TCP_DST_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_SRC_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_DST_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_SCTP_SRC_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_SCTP_DST_MASK, /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_SCTP_SRC, /* be16 */
|
||||
TCA_FLOWER_KEY_SCTP_DST, /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_ENC_UDP_SRC_PORT, /* be16 */
|
||||
TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_ENC_UDP_DST_PORT, /* be16 */
|
||||
TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK, /* be16 */
|
||||
__TCA_FLOWER_MAX,
|
||||
};
|
||||
|
||||
#endif /* __KERNEL__ || !HAVE_TCA_ACT_COOKIE */
|
||||
|
||||
#endif /* __LINUX_PKT_CLS_WRAPPER_H */
|
46
include/linux/tc_act/tc_tunnel_key.h
Normal file
46
include/linux/tc_act/tc_tunnel_key.h
Normal file
@@ -0,0 +1,46 @@
|
||||
#ifndef __LINUX_TC_ACT_TC_TUNNEL_KEY_WRAPPER_H
|
||||
#define __LINUX_TC_ACT_TC_TUNNEL_KEY_WRAPPER_H 1
|
||||
|
||||
#if defined(__KERNEL__) || defined(HAVE_TCA_TUNNEL_KEY_ENC_DST_PORT)
|
||||
#include_next <linux/tc_act/tc_tunnel_key.h>
|
||||
#else
|
||||
|
||||
/*
|
||||
* Copyright (c) 2016, Amir Vadai <amir@vadai.me>
|
||||
* Copyright (c) 2016, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include <linux/pkt_cls.h>
|
||||
|
||||
#define TCA_TUNNEL_KEY_ACT_SET 1
|
||||
#define TCA_TUNNEL_KEY_ACT_RELEASE 2
|
||||
|
||||
struct tc_tunnel_key {
|
||||
tc_gen;
|
||||
int t_action;
|
||||
};
|
||||
|
||||
enum {
|
||||
TCA_TUNNEL_KEY_UNSPEC,
|
||||
TCA_TUNNEL_KEY_TM,
|
||||
TCA_TUNNEL_KEY_PARMS,
|
||||
TCA_TUNNEL_KEY_ENC_IPV4_SRC, /* be32 */
|
||||
TCA_TUNNEL_KEY_ENC_IPV4_DST, /* be32 */
|
||||
TCA_TUNNEL_KEY_ENC_IPV6_SRC, /* struct in6_addr */
|
||||
TCA_TUNNEL_KEY_ENC_IPV6_DST, /* struct in6_addr */
|
||||
TCA_TUNNEL_KEY_ENC_KEY_ID, /* be64 */
|
||||
TCA_TUNNEL_KEY_PAD,
|
||||
TCA_TUNNEL_KEY_ENC_DST_PORT, /* be16 */
|
||||
__TCA_TUNNEL_KEY_MAX,
|
||||
};
|
||||
|
||||
#define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
|
||||
|
||||
#endif /* __KERNEL__ || HAVE_TCA_TUNNEL_KEY_ENC_DST_PORT */
|
||||
|
||||
#endif /* __LINUX_TC_ACT_TC_TUNNEL_KEY_WRAPPER_H */
|
40
include/linux/tc_act/tc_vlan.h
Normal file
40
include/linux/tc_act/tc_vlan.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#ifndef __LINUX_TC_ACT_TC_VLAN_WRAPPER_H
|
||||
#define __LINUX_TC_ACT_TC_VLAN_WRAPPER_H 1
|
||||
|
||||
#if defined(__KERNEL__) || defined(HAVE_TCA_VLAN_PUSH_VLAN_PRIORITY)
|
||||
#include_next <linux/tc_act/tc_vlan.h>
|
||||
#else
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#define TCA_VLAN_ACT_POP 1
|
||||
#define TCA_VLAN_ACT_PUSH 2
|
||||
#define TCA_VLAN_ACT_MODIFY 3
|
||||
|
||||
struct tc_vlan {
|
||||
tc_gen;
|
||||
int v_action;
|
||||
};
|
||||
|
||||
enum {
|
||||
TCA_VLAN_UNSPEC,
|
||||
TCA_VLAN_TM,
|
||||
TCA_VLAN_PARMS,
|
||||
TCA_VLAN_PUSH_VLAN_ID,
|
||||
TCA_VLAN_PUSH_VLAN_PROTOCOL,
|
||||
TCA_VLAN_PAD,
|
||||
TCA_VLAN_PUSH_VLAN_PRIORITY,
|
||||
__TCA_VLAN_MAX,
|
||||
};
|
||||
#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1)
|
||||
|
||||
#endif /* __KERNEL__ || HAVE_TCA_VLAN_PUSH_VLAN_PRIORITY */
|
||||
|
||||
#endif /* __LINUX_TC_ACT_TC_VLAN_WRAPPER_H */
|
Reference in New Issue
Block a user