mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 07:34:06 +08:00
2874c5fd28
Based on 1 normalized pattern(s): 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 extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 3029 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
63 lines
1.6 KiB
C
63 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (c) 2016, Amir Vadai <amir@vadai.me>
|
|
* Copyright (c) 2016, Mellanox Technologies. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __NET_TC_TUNNEL_KEY_H
|
|
#define __NET_TC_TUNNEL_KEY_H
|
|
|
|
#include <net/act_api.h>
|
|
#include <linux/tc_act/tc_tunnel_key.h>
|
|
#include <net/dst_metadata.h>
|
|
|
|
struct tcf_tunnel_key_params {
|
|
struct rcu_head rcu;
|
|
int tcft_action;
|
|
struct metadata_dst *tcft_enc_metadata;
|
|
};
|
|
|
|
struct tcf_tunnel_key {
|
|
struct tc_action common;
|
|
struct tcf_tunnel_key_params __rcu *params;
|
|
};
|
|
|
|
#define to_tunnel_key(a) ((struct tcf_tunnel_key *)a)
|
|
|
|
static inline bool is_tcf_tunnel_set(const struct tc_action *a)
|
|
{
|
|
#ifdef CONFIG_NET_CLS_ACT
|
|
struct tcf_tunnel_key *t = to_tunnel_key(a);
|
|
struct tcf_tunnel_key_params *params = rtnl_dereference(t->params);
|
|
|
|
if (a->ops && a->ops->id == TCA_ID_TUNNEL_KEY)
|
|
return params->tcft_action == TCA_TUNNEL_KEY_ACT_SET;
|
|
#endif
|
|
return false;
|
|
}
|
|
|
|
static inline bool is_tcf_tunnel_release(const struct tc_action *a)
|
|
{
|
|
#ifdef CONFIG_NET_CLS_ACT
|
|
struct tcf_tunnel_key *t = to_tunnel_key(a);
|
|
struct tcf_tunnel_key_params *params = rtnl_dereference(t->params);
|
|
|
|
if (a->ops && a->ops->id == TCA_ID_TUNNEL_KEY)
|
|
return params->tcft_action == TCA_TUNNEL_KEY_ACT_RELEASE;
|
|
#endif
|
|
return false;
|
|
}
|
|
|
|
static inline struct ip_tunnel_info *tcf_tunnel_info(const struct tc_action *a)
|
|
{
|
|
#ifdef CONFIG_NET_CLS_ACT
|
|
struct tcf_tunnel_key *t = to_tunnel_key(a);
|
|
struct tcf_tunnel_key_params *params = rtnl_dereference(t->params);
|
|
|
|
return ¶ms->tcft_enc_metadata->u.tun_info;
|
|
#else
|
|
return NULL;
|
|
#endif
|
|
}
|
|
#endif /* __NET_TC_TUNNEL_KEY_H */
|