-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
nfp: flower-ct: add pre and post ct checks
Add checks to see if a flow is a conntrack flow we can potentially handle. Just stub out the handling the different conntrack flows. Signed-off-by: Louis Peens <louis.peens@corigine.com> Signed-off-by: Yinjun Zhang <yinjun.zhang@corigine.com> Signed-off-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
Louis Peens
authored and
David S. Miller
committed
Jun 2, 2021
1 parent
2bda0a5
commit c8b034f
Showing
4 changed files
with
102 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
/* Copyright (C) 2021 Corigine, Inc. */ | ||
|
||
#include "conntrack.h" | ||
|
||
bool is_pre_ct_flow(struct flow_cls_offload *flow) | ||
{ | ||
struct flow_action_entry *act; | ||
int i; | ||
|
||
flow_action_for_each(i, act, &flow->rule->action) { | ||
if (act->id == FLOW_ACTION_CT && !act->ct.action) | ||
return true; | ||
} | ||
return false; | ||
} | ||
|
||
bool is_post_ct_flow(struct flow_cls_offload *flow) | ||
{ | ||
struct flow_rule *rule = flow_cls_offload_flow_rule(flow); | ||
struct flow_dissector *dissector = rule->match.dissector; | ||
struct flow_match_ct ct; | ||
|
||
if (dissector->used_keys & BIT(FLOW_DISSECTOR_KEY_CT)) { | ||
flow_rule_match_ct(rule, &ct); | ||
if (ct.key->ct_state & TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED) | ||
return true; | ||
} | ||
return false; | ||
} | ||
|
||
int nfp_fl_ct_handle_pre_ct(struct nfp_flower_priv *priv, | ||
struct net_device *netdev, | ||
struct flow_cls_offload *flow, | ||
struct netlink_ext_ack *extack) | ||
{ | ||
NL_SET_ERR_MSG_MOD(extack, "unsupported offload: Conntrack action not supported"); | ||
return -EOPNOTSUPP; | ||
} | ||
|
||
int nfp_fl_ct_handle_post_ct(struct nfp_flower_priv *priv, | ||
struct net_device *netdev, | ||
struct flow_cls_offload *flow, | ||
struct netlink_ext_ack *extack) | ||
{ | ||
NL_SET_ERR_MSG_MOD(extack, "unsupported offload: Conntrack match not supported"); | ||
return -EOPNOTSUPP; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ | ||
/* Copyright (C) 2021 Corigine, Inc. */ | ||
|
||
#ifndef __NFP_FLOWER_CONNTRACK_H__ | ||
#define __NFP_FLOWER_CONNTRACK_H__ 1 | ||
|
||
#include "main.h" | ||
|
||
bool is_pre_ct_flow(struct flow_cls_offload *flow); | ||
bool is_post_ct_flow(struct flow_cls_offload *flow); | ||
|
||
/** | ||
* nfp_fl_ct_handle_pre_ct() - Handles -trk conntrack rules | ||
* @priv: Pointer to app priv | ||
* @netdev: netdev structure. | ||
* @flow: TC flower classifier offload structure. | ||
* @extack: Extack pointer for errors | ||
* | ||
* Adds a new entry to the relevant zone table and tries to | ||
* merge with other +trk+est entries and offload if possible. | ||
* | ||
* Return: negative value on error, 0 if configured successfully. | ||
*/ | ||
int nfp_fl_ct_handle_pre_ct(struct nfp_flower_priv *priv, | ||
struct net_device *netdev, | ||
struct flow_cls_offload *flow, | ||
struct netlink_ext_ack *extack); | ||
/** | ||
* nfp_fl_ct_handle_post_ct() - Handles +trk+est conntrack rules | ||
* @priv: Pointer to app priv | ||
* @netdev: netdev structure. | ||
* @flow: TC flower classifier offload structure. | ||
* @extack: Extack pointer for errors | ||
* | ||
* Adds a new entry to the relevant zone table and tries to | ||
* merge with other -trk entries and offload if possible. | ||
* | ||
* Return: negative value on error, 0 if configured successfully. | ||
*/ | ||
int nfp_fl_ct_handle_post_ct(struct nfp_flower_priv *priv, | ||
struct net_device *netdev, | ||
struct flow_cls_offload *flow, | ||
struct netlink_ext_ack *extack); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters