Thread (13 messages) 13 messages, 5 authors, 2019-05-08

Re: [net-next v3] net: sched: Introduce act_ctinfo action

From: David Miller <davem@davemloft.net>
Date: 2019-05-07 19:39:55
Also in: linux-kselftest, lkml

From: Kevin 'ldir' Darbyshire-Bryant <redacted>
Date: Sun, 5 May 2019 13:20:13 +0000
ctinfo is a new tc filter action module.  It is designed to restore
information contained in conntrack marks to other places.  At present it
can restore DSCP values to IPv4/6 diffserv fields and also copy
conntrack marks to skb marks.  As such the 2nd function effectively
replaces the existing act_connmark module
This needs more time for review and therefore I'm deferring this to the
next merge window.

Also:
+static int tcf_ctinfo_act(struct sk_buff *skb, const struct tc_action *a,
+			  struct tcf_result *res)
+{
+	const struct nf_conntrack_tuple_hash *thash = NULL;
+	struct nf_conntrack_tuple tuple;
+	enum ip_conntrack_info ctinfo;
+	struct tcf_ctinfo *ca = to_ctinfo(a);
+	struct tcf_ctinfo_params *cp;
+	struct nf_conntrack_zone zone;
+	struct nf_conn *ct;
+	int proto, wlen;
+	int action;
Reverse christmas tree for these local variables please.
+static int tcf_ctinfo_init(struct net *net, struct nlattr *nla,
+			   struct nlattr *est, struct tc_action **a,
+			   int ovr, int bind, bool rtnl_held,
+			   struct tcf_proto *tp,
+			   struct netlink_ext_ack *extack)
+{
+	struct tc_action_net *tn = net_generic(net, ctinfo_net_id);
+	struct tcf_ctinfo_params *cp_new;
+	struct nlattr *tb[TCA_CTINFO_MAX + 1];
+	struct tcf_chain *goto_ch = NULL;
+	struct tcf_ctinfo *ci;
+	struct tc_ctinfo *actparm;
+	struct tc_ctinfo_dscp *dscpparm;
+	int ret = 0, err, i;
Likewise.
+static inline int tcf_ctinfo_dump(struct sk_buff *skb, struct tc_action *a,
+				  int bind, int ref)
+{
+	unsigned char *b = skb_tail_pointer(skb);
+	struct tcf_ctinfo *ci = to_ctinfo(a);
+	struct tcf_ctinfo_params *cp;
+	struct tc_ctinfo opt = {
+		.index   = ci->tcf_index,
+		.refcnt  = refcount_read(&ci->tcf_refcnt) - ref,
+		.bindcnt = atomic_read(&ci->tcf_bindcnt) - bind,
+	};
+	struct tcf_t t;
+	struct tc_ctinfo_dscp dscpparm;
+	struct tc_ctinfo_stats_dscp dscpstats;
Likewise.

Also, never use the inline keyword in foo.c files, always let the compiler
decide.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help