All of lore.kernel.org
 help / color / mirror / Atom feed
* [net PATCH v2 0/6] net sched: Fix broken late binding of actions
@ 2016-05-10 20:49 Jamal Hadi Salim
  2016-05-10 20:49 ` [net PATCH v2 1/6] net sched: vlan action fix late binding Jamal Hadi Salim
                   ` (6 more replies)
  0 siblings, 7 replies; 14+ messages in thread
From: Jamal Hadi Salim @ 2016-05-10 20:49 UTC (permalink / raw)
  To: davem; +Cc: netdev, xiyou.wangcong, jiri, alexander.duyck, Jamal Hadi Salim

From: Jamal Hadi Salim <jhs@mojatatu.com>

Some actions were broken in allowing for late binding of actions.
Late binding workflow is as follows:
a) create an action and provide all necessary parameters for it
Optionally provide an index or let the kernel give you one.
Example:
sudo tc actions add action police rate 1kbit burst 90k drop index 1

b) later on bind to the pre-created action from a filter definition
by merely specifying the index.
Example:
sudo tc filter add dev lo parent ffff: protocol ip prio 8 \
u32 match ip src 127.0.0.8/32 flowid 1:8 action police index 1


Jamal Hadi Salim (6):
  net sched: vlan action fix late binding
  net sched: ipt action fix late binding
  net sched: mirred action fix late binding
  net sched: simple action fix late binding
  net sched: skbedit action fix late binding
  net sched: ife action fix late binding

 net/sched/act_ife.c     | 14 ++++++++++----
 net/sched/act_ipt.c     | 19 ++++++++++++-------
 net/sched/act_mirred.c  | 19 +++++++++++++------
 net/sched/act_simple.c  | 18 ++++++++++++------
 net/sched/act_skbedit.c | 18 +++++++++++-------
 net/sched/act_vlan.c    | 22 ++++++++++++++++------
 6 files changed, 74 insertions(+), 36 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [net PATCH v2 1/6] net sched: vlan action fix late binding
  2016-05-10 20:49 [net PATCH v2 0/6] net sched: Fix broken late binding of actions Jamal Hadi Salim
@ 2016-05-10 20:49 ` Jamal Hadi Salim
  2016-05-10 21:22   ` Cong Wang
  2016-05-10 20:49 ` [net PATCH v2 2/6] net sched: ipt " Jamal Hadi Salim
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Jamal Hadi Salim @ 2016-05-10 20:49 UTC (permalink / raw)
  To: davem; +Cc: netdev, xiyou.wangcong, jiri, alexander.duyck, Jamal Hadi Salim

From: Jamal Hadi Salim <jhs@mojatatu.com>

Late vlan action binding was broken and is fixed with this patch.

//add a vlan action to pop and give it an instance id of 1
sudo tc actions add action vlan pop index 1
//create filter which binds to vlan action id 1
sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32 \
match ip dst 17.0.0.1/32 flowid 1:1 action vlan index 1

current message(before bug fix) was:
RTNETLINK answers: Invalid argument
We have an error talking to the kernel

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
---
 net/sched/act_vlan.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/net/sched/act_vlan.c b/net/sched/act_vlan.c
index bab8ae0..c45f926 100644
--- a/net/sched/act_vlan.c
+++ b/net/sched/act_vlan.c
@@ -77,7 +77,7 @@ static int tcf_vlan_init(struct net *net, struct nlattr *nla,
 	int action;
 	__be16 push_vid = 0;
 	__be16 push_proto = 0;
-	int ret = 0;
+	int ret = 0, exists = 0;
 	int err;
 
 	if (!nla)
@@ -90,15 +90,25 @@ static int tcf_vlan_init(struct net *net, struct nlattr *nla,
 	if (!tb[TCA_VLAN_PARMS])
 		return -EINVAL;
 	parm = nla_data(tb[TCA_VLAN_PARMS]);
+	exists = tcf_hash_check(tn, parm->index, a, bind);
+	if (exists && bind)
+		return 0;
+
 	switch (parm->v_action) {
 	case TCA_VLAN_ACT_POP:
 		break;
 	case TCA_VLAN_ACT_PUSH:
-		if (!tb[TCA_VLAN_PUSH_VLAN_ID])
+		if (!tb[TCA_VLAN_PUSH_VLAN_ID]) {
+			if (exists)
+				tcf_hash_release(a, bind);
 			return -EINVAL;
+		}
 		push_vid = nla_get_u16(tb[TCA_VLAN_PUSH_VLAN_ID]);
-		if (push_vid >= VLAN_VID_MASK)
+		if (push_vid >= VLAN_VID_MASK) {
+			if (exists)
+				tcf_hash_release(a, bind);
 			return -ERANGE;
+		}
 
 		if (tb[TCA_VLAN_PUSH_VLAN_PROTOCOL]) {
 			push_proto = nla_get_be16(tb[TCA_VLAN_PUSH_VLAN_PROTOCOL]);
@@ -114,11 +124,13 @@ static int tcf_vlan_init(struct net *net, struct nlattr *nla,
 		}
 		break;
 	default:
+		if (exists)
+			tcf_hash_release(a, bind);
 		return -EINVAL;
 	}
 	action = parm->v_action;
 
-	if (!tcf_hash_check(tn, parm->index, a, bind)) {
+	if (!exists) {
 		ret = tcf_hash_create(tn, parm->index, est, a,
 				      sizeof(*v), bind, false);
 		if (ret)
@@ -126,8 +138,6 @@ static int tcf_vlan_init(struct net *net, struct nlattr *nla,
 
 		ret = ACT_P_CREATED;
 	} else {
-		if (bind)
-			return 0;
 		tcf_hash_release(a, bind);
 		if (!ovr)
 			return -EEXIST;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [net PATCH v2 2/6] net sched: ipt action fix late binding
  2016-05-10 20:49 [net PATCH v2 0/6] net sched: Fix broken late binding of actions Jamal Hadi Salim
  2016-05-10 20:49 ` [net PATCH v2 1/6] net sched: vlan action fix late binding Jamal Hadi Salim
@ 2016-05-10 20:49 ` Jamal Hadi Salim
  2016-05-10 21:24   ` Cong Wang
  2016-05-10 20:49 ` [net PATCH v2 3/6] net sched: mirred " Jamal Hadi Salim
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Jamal Hadi Salim @ 2016-05-10 20:49 UTC (permalink / raw)
  To: davem; +Cc: netdev, xiyou.wangcong, jiri, alexander.duyck, Jamal Hadi Salim

From: Jamal Hadi Salim <jhs@mojatatu.com>

This was broken and is fixed with this patch.

//add an ipt action and give it an instance id of 1
sudo tc actions add action ipt -j mark --set-mark 2 index 1
//create a filter which binds to ipt action id 1
sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
match ip dst 17.0.0.1/32 flowid 1:10 action ipt index 1

Message before bug fix was:
RTNETLINK answers: Invalid argument
We have an error talking to the kernel

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
---
 net/sched/act_ipt.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/net/sched/act_ipt.c b/net/sched/act_ipt.c
index 350e134..8b52700 100644
--- a/net/sched/act_ipt.c
+++ b/net/sched/act_ipt.c
@@ -96,7 +96,7 @@ static int __tcf_ipt_init(struct tc_action_net *tn, struct nlattr *nla,
 	struct tcf_ipt *ipt;
 	struct xt_entry_target *td, *t;
 	char *tname;
-	int ret = 0, err;
+	int ret = 0, err, exists = 0;
 	u32 hook = 0;
 	u32 index = 0;
 
@@ -107,18 +107,23 @@ static int __tcf_ipt_init(struct tc_action_net *tn, struct nlattr *nla,
 	if (err < 0)
 		return err;
 
-	if (tb[TCA_IPT_HOOK] == NULL)
-		return -EINVAL;
-	if (tb[TCA_IPT_TARG] == NULL)
+	if (tb[TCA_IPT_INDEX] != NULL)
+		index = nla_get_u32(tb[TCA_IPT_INDEX]);
+
+	exists = tcf_hash_check(tn, index, a, bind);
+	if (exists && bind)
+		return 0;
+
+	if (tb[TCA_IPT_HOOK] == NULL || tb[TCA_IPT_TARG] == NULL) {
+		if (exists)
+			tcf_hash_release(a, bind);
 		return -EINVAL;
+	}
 
 	td = (struct xt_entry_target *)nla_data(tb[TCA_IPT_TARG]);
 	if (nla_len(tb[TCA_IPT_TARG]) < td->u.target_size)
 		return -EINVAL;
 
-	if (tb[TCA_IPT_INDEX] != NULL)
-		index = nla_get_u32(tb[TCA_IPT_INDEX]);
-
 	if (!tcf_hash_check(tn, index, a, bind)) {
 		ret = tcf_hash_create(tn, index, est, a, sizeof(*ipt), bind,
 				      false);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [net PATCH v2 3/6] net sched: mirred action fix late binding
  2016-05-10 20:49 [net PATCH v2 0/6] net sched: Fix broken late binding of actions Jamal Hadi Salim
  2016-05-10 20:49 ` [net PATCH v2 1/6] net sched: vlan action fix late binding Jamal Hadi Salim
  2016-05-10 20:49 ` [net PATCH v2 2/6] net sched: ipt " Jamal Hadi Salim
@ 2016-05-10 20:49 ` Jamal Hadi Salim
  2016-05-10 21:25   ` Cong Wang
  2016-05-10 20:49 ` [net PATCH v2 4/6] net sched: simple " Jamal Hadi Salim
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Jamal Hadi Salim @ 2016-05-10 20:49 UTC (permalink / raw)
  To: davem; +Cc: netdev, xiyou.wangcong, jiri, alexander.duyck, Jamal Hadi Salim

From: Jamal Hadi Salim <jhs@mojatatu.com>

The process below was broken and is fixed with this patch.

//add an mirred action and give it an instance id of 1
sudo tc actions add action mirred egress mirror dev $MDEV  index 1
//create a filter which binds to mirred action id 1
sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
match ip dst 17.0.0.1/32 flowid 1:10 action mirred index 1

Message before bug fix was:
RTNETLINK answers: Invalid argument
We have an error talking to the kernel

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
---
 net/sched/act_mirred.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c
index e8a760c..8f3948d 100644
--- a/net/sched/act_mirred.c
+++ b/net/sched/act_mirred.c
@@ -61,7 +61,7 @@ static int tcf_mirred_init(struct net *net, struct nlattr *nla,
 	struct tc_mirred *parm;
 	struct tcf_mirred *m;
 	struct net_device *dev;
-	int ret, ok_push = 0;
+	int ret, ok_push = 0, exists = 0;
 
 	if (nla == NULL)
 		return -EINVAL;
@@ -71,17 +71,27 @@ static int tcf_mirred_init(struct net *net, struct nlattr *nla,
 	if (tb[TCA_MIRRED_PARMS] == NULL)
 		return -EINVAL;
 	parm = nla_data(tb[TCA_MIRRED_PARMS]);
+
+	exists = tcf_hash_check(tn, parm->index, a, bind);
+	if (exists && bind)
+		return 0;
+
 	switch (parm->eaction) {
 	case TCA_EGRESS_MIRROR:
 	case TCA_EGRESS_REDIR:
 		break;
 	default:
+		if (exists)
+			tcf_hash_release(a, bind);
 		return -EINVAL;
 	}
 	if (parm->ifindex) {
 		dev = __dev_get_by_index(net, parm->ifindex);
-		if (dev == NULL)
+		if (dev == NULL) {
+			if (exists)
+				tcf_hash_release(a, bind);
 			return -ENODEV;
+		}
 		switch (dev->type) {
 		case ARPHRD_TUNNEL:
 		case ARPHRD_TUNNEL6:
@@ -99,7 +109,7 @@ static int tcf_mirred_init(struct net *net, struct nlattr *nla,
 		dev = NULL;
 	}
 
-	if (!tcf_hash_check(tn, parm->index, a, bind)) {
+	if (!exists) {
 		if (dev == NULL)
 			return -EINVAL;
 		ret = tcf_hash_create(tn, parm->index, est, a,
@@ -108,9 +118,6 @@ static int tcf_mirred_init(struct net *net, struct nlattr *nla,
 			return ret;
 		ret = ACT_P_CREATED;
 	} else {
-		if (bind)
-			return 0;
-
 		tcf_hash_release(a, bind);
 		if (!ovr)
 			return -EEXIST;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [net PATCH v2 4/6] net sched: simple action fix late binding
  2016-05-10 20:49 [net PATCH v2 0/6] net sched: Fix broken late binding of actions Jamal Hadi Salim
                   ` (2 preceding siblings ...)
  2016-05-10 20:49 ` [net PATCH v2 3/6] net sched: mirred " Jamal Hadi Salim
@ 2016-05-10 20:49 ` Jamal Hadi Salim
  2016-05-10 21:26   ` Cong Wang
  2016-05-10 20:49 ` [net PATCH v2 5/6] net sched: skbedit " Jamal Hadi Salim
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Jamal Hadi Salim @ 2016-05-10 20:49 UTC (permalink / raw)
  To: davem; +Cc: netdev, xiyou.wangcong, jiri, alexander.duyck, Jamal Hadi Salim

From: Jamal Hadi Salim <jhs@mojatatu.com>

The process below was broken and is fixed with this patch.

//add a simple action and give it an instance id of 1
sudo tc actions add action simple sdata "foobar" index 1
//create a filter which binds to simple action id 1
sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
match ip dst 17.0.0.1/32 flowid 1:10 action simple index 1

Message before fix was:
RTNETLINK answers: Invalid argument
We have an error talking to the kernel

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
---
 net/sched/act_simple.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/net/sched/act_simple.c b/net/sched/act_simple.c
index 75b2be1..3a33fb6 100644
--- a/net/sched/act_simple.c
+++ b/net/sched/act_simple.c
@@ -87,7 +87,7 @@ static int tcf_simp_init(struct net *net, struct nlattr *nla,
 	struct tc_defact *parm;
 	struct tcf_defact *d;
 	char *defdata;
-	int ret = 0, err;
+	int ret = 0, err, exists = 0;
 
 	if (nla == NULL)
 		return -EINVAL;
@@ -99,13 +99,21 @@ static int tcf_simp_init(struct net *net, struct nlattr *nla,
 	if (tb[TCA_DEF_PARMS] == NULL)
 		return -EINVAL;
 
-	if (tb[TCA_DEF_DATA] == NULL)
-		return -EINVAL;
 
 	parm = nla_data(tb[TCA_DEF_PARMS]);
+	exists = tcf_hash_check(tn, parm->index, a, bind);
+	if (exists && bind)
+		return 0;
+
+	if (tb[TCA_DEF_DATA] == NULL) {
+		if (exists)
+			tcf_hash_release(a, bind);
+		return -EINVAL;
+	}
+
 	defdata = nla_data(tb[TCA_DEF_DATA]);
 
-	if (!tcf_hash_check(tn, parm->index, a, bind)) {
+	if (!exists) {
 		ret = tcf_hash_create(tn, parm->index, est, a,
 				      sizeof(*d), bind, false);
 		if (ret)
@@ -122,8 +130,6 @@ static int tcf_simp_init(struct net *net, struct nlattr *nla,
 	} else {
 		d = to_defact(a);
 
-		if (bind)
-			return 0;
 		tcf_hash_release(a, bind);
 		if (!ovr)
 			return -EEXIST;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [net PATCH v2 5/6] net sched: skbedit action fix late binding
  2016-05-10 20:49 [net PATCH v2 0/6] net sched: Fix broken late binding of actions Jamal Hadi Salim
                   ` (3 preceding siblings ...)
  2016-05-10 20:49 ` [net PATCH v2 4/6] net sched: simple " Jamal Hadi Salim
@ 2016-05-10 20:49 ` Jamal Hadi Salim
  2016-05-10 21:27   ` Cong Wang
  2016-05-10 20:49 ` [net PATCH v2 6/6] net sched: ife " Jamal Hadi Salim
  2016-05-11  3:50 ` [net PATCH v2 0/6] net sched: Fix broken late binding of actions David Miller
  6 siblings, 1 reply; 14+ messages in thread
From: Jamal Hadi Salim @ 2016-05-10 20:49 UTC (permalink / raw)
  To: davem; +Cc: netdev, xiyou.wangcong, jiri, alexander.duyck, Jamal Hadi Salim

From: Jamal Hadi Salim <jhs@mojatatu.com>

The process below was broken and is fixed with this patch.

//add a skbedit action and give it an instance id of 1
sudo tc actions add action skbedit mark 10 index 1
//create a filter which binds to skbedit action id 1
sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
match ip dst 17.0.0.1/32 flowid 1:10 action skbedit index 1

Message before fix was:
RTNETLINK answers: Invalid argument
We have an error talking to the kernel

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
---
 net/sched/act_skbedit.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/net/sched/act_skbedit.c b/net/sched/act_skbedit.c
index cfcdbdc..69da5a8 100644
--- a/net/sched/act_skbedit.c
+++ b/net/sched/act_skbedit.c
@@ -69,7 +69,7 @@ static int tcf_skbedit_init(struct net *net, struct nlattr *nla,
 	struct tcf_skbedit *d;
 	u32 flags = 0, *priority = NULL, *mark = NULL;
 	u16 *queue_mapping = NULL;
-	int ret = 0, err;
+	int ret = 0, err, exists = 0;
 
 	if (nla == NULL)
 		return -EINVAL;
@@ -96,12 +96,18 @@ static int tcf_skbedit_init(struct net *net, struct nlattr *nla,
 		mark = nla_data(tb[TCA_SKBEDIT_MARK]);
 	}
 
-	if (!flags)
-		return -EINVAL;
-
 	parm = nla_data(tb[TCA_SKBEDIT_PARMS]);
 
-	if (!tcf_hash_check(tn, parm->index, a, bind)) {
+	exists = tcf_hash_check(tn, parm->index, a, bind);
+	if (exists && bind)
+		return 0;
+
+	if (!flags) {
+		tcf_hash_release(a, bind);
+		return -EINVAL;
+	}
+
+	if (!exists) {
 		ret = tcf_hash_create(tn, parm->index, est, a,
 				      sizeof(*d), bind, false);
 		if (ret)
@@ -111,8 +117,6 @@ static int tcf_skbedit_init(struct net *net, struct nlattr *nla,
 		ret = ACT_P_CREATED;
 	} else {
 		d = to_skbedit(a);
-		if (bind)
-			return 0;
 		tcf_hash_release(a, bind);
 		if (!ovr)
 			return -EEXIST;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [net PATCH v2 6/6] net sched: ife action fix late binding
  2016-05-10 20:49 [net PATCH v2 0/6] net sched: Fix broken late binding of actions Jamal Hadi Salim
                   ` (4 preceding siblings ...)
  2016-05-10 20:49 ` [net PATCH v2 5/6] net sched: skbedit " Jamal Hadi Salim
@ 2016-05-10 20:49 ` Jamal Hadi Salim
  2016-05-10 21:28   ` Cong Wang
  2016-05-11  3:50 ` [net PATCH v2 0/6] net sched: Fix broken late binding of actions David Miller
  6 siblings, 1 reply; 14+ messages in thread
From: Jamal Hadi Salim @ 2016-05-10 20:49 UTC (permalink / raw)
  To: davem; +Cc: netdev, xiyou.wangcong, jiri, alexander.duyck, Jamal Hadi Salim

From: Jamal Hadi Salim <jhs@mojatatu.com>

The process below was broken and is fixed with this patch.

//add an ife action and give it an instance id of 1
sudo tc actions add action ife encode \
type 0xDEAD allow mark dst 02:15:15:15:15:15 index 1

//create a filter which binds to ife action id 1
sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
match ip dst 17.0.0.1/32 flowid 1:11 action ife index 1

Message before fix was:
RTNETLINK answers: Invalid argument
We have an error talking to the kernel

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
---
 net/sched/act_ife.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c
index c589a9b..343d011 100644
--- a/net/sched/act_ife.c
+++ b/net/sched/act_ife.c
@@ -423,7 +423,7 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla,
 	u16 ife_type = 0;
 	u8 *daddr = NULL;
 	u8 *saddr = NULL;
-	int ret = 0;
+	int ret = 0, exists = 0;
 	int err;
 
 	err = nla_parse_nested(tb, TCA_IFE_MAX, nla, ife_policy);
@@ -435,25 +435,29 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla,
 
 	parm = nla_data(tb[TCA_IFE_PARMS]);
 
+	exists = tcf_hash_check(tn, parm->index, a, bind);
+	if (exists && bind)
+		return 0;
+
 	if (parm->flags & IFE_ENCODE) {
 		/* Until we get issued the ethertype, we cant have
 		 * a default..
 		**/
 		if (!tb[TCA_IFE_TYPE]) {
+			if (exists)
+				tcf_hash_release(a, bind);
 			pr_info("You MUST pass etherype for encoding\n");
 			return -EINVAL;
 		}
 	}
 
-	if (!tcf_hash_check(tn, parm->index, a, bind)) {
+	if (!exists) {
 		ret = tcf_hash_create(tn, parm->index, est, a, sizeof(*ife),
 				      bind, false);
 		if (ret)
 			return ret;
 		ret = ACT_P_CREATED;
 	} else {
-		if (bind)	/* dont override defaults */
-			return 0;
 		tcf_hash_release(a, bind);
 		if (!ovr)
 			return -EEXIST;
@@ -495,6 +499,8 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla,
 				       NULL);
 		if (err) {
 metadata_parse_err:
+			if (exists)
+				tcf_hash_release(a, bind);
 			if (ret == ACT_P_CREATED)
 				_tcf_ife_cleanup(a, bind);
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [net PATCH v2 1/6] net sched: vlan action fix late binding
  2016-05-10 20:49 ` [net PATCH v2 1/6] net sched: vlan action fix late binding Jamal Hadi Salim
@ 2016-05-10 21:22   ` Cong Wang
  0 siblings, 0 replies; 14+ messages in thread
From: Cong Wang @ 2016-05-10 21:22 UTC (permalink / raw)
  To: Jamal Hadi Salim
  Cc: David Miller, Linux Kernel Network Developers,
	Jiří Pírko, Alexander Duyck

On Tue, May 10, 2016 at 1:49 PM, Jamal Hadi Salim <jhs@mojatatu.com> wrote:
> From: Jamal Hadi Salim <jhs@mojatatu.com>
>
> Late vlan action binding was broken and is fixed with this patch.
>
> //add a vlan action to pop and give it an instance id of 1
> sudo tc actions add action vlan pop index 1
> //create filter which binds to vlan action id 1
> sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32 \
> match ip dst 17.0.0.1/32 flowid 1:1 action vlan index 1
>
> current message(before bug fix) was:
> RTNETLINK answers: Invalid argument
> We have an error talking to the kernel
>
> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>

Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [net PATCH v2 2/6] net sched: ipt action fix late binding
  2016-05-10 20:49 ` [net PATCH v2 2/6] net sched: ipt " Jamal Hadi Salim
@ 2016-05-10 21:24   ` Cong Wang
  0 siblings, 0 replies; 14+ messages in thread
From: Cong Wang @ 2016-05-10 21:24 UTC (permalink / raw)
  To: Jamal Hadi Salim
  Cc: David Miller, Linux Kernel Network Developers,
	Jiří Pírko, Alexander Duyck

On Tue, May 10, 2016 at 1:49 PM, Jamal Hadi Salim <jhs@mojatatu.com> wrote:
> From: Jamal Hadi Salim <jhs@mojatatu.com>
>
> This was broken and is fixed with this patch.
>
> //add an ipt action and give it an instance id of 1
> sudo tc actions add action ipt -j mark --set-mark 2 index 1
> //create a filter which binds to ipt action id 1
> sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
> match ip dst 17.0.0.1/32 flowid 1:10 action ipt index 1
>
> Message before bug fix was:
> RTNETLINK answers: Invalid argument
> We have an error talking to the kernel
>
> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>


Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [net PATCH v2 3/6] net sched: mirred action fix late binding
  2016-05-10 20:49 ` [net PATCH v2 3/6] net sched: mirred " Jamal Hadi Salim
@ 2016-05-10 21:25   ` Cong Wang
  0 siblings, 0 replies; 14+ messages in thread
From: Cong Wang @ 2016-05-10 21:25 UTC (permalink / raw)
  To: Jamal Hadi Salim
  Cc: David Miller, Linux Kernel Network Developers,
	Jiří Pírko, Alexander Duyck

On Tue, May 10, 2016 at 1:49 PM, Jamal Hadi Salim <jhs@mojatatu.com> wrote:
> From: Jamal Hadi Salim <jhs@mojatatu.com>
>
> The process below was broken and is fixed with this patch.
>
> //add an mirred action and give it an instance id of 1
> sudo tc actions add action mirred egress mirror dev $MDEV  index 1
> //create a filter which binds to mirred action id 1
> sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
> match ip dst 17.0.0.1/32 flowid 1:10 action mirred index 1
>
> Message before bug fix was:
> RTNETLINK answers: Invalid argument
> We have an error talking to the kernel
>
> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>

Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [net PATCH v2 4/6] net sched: simple action fix late binding
  2016-05-10 20:49 ` [net PATCH v2 4/6] net sched: simple " Jamal Hadi Salim
@ 2016-05-10 21:26   ` Cong Wang
  0 siblings, 0 replies; 14+ messages in thread
From: Cong Wang @ 2016-05-10 21:26 UTC (permalink / raw)
  To: Jamal Hadi Salim
  Cc: David Miller, Linux Kernel Network Developers,
	Jiří Pírko, Alexander Duyck

On Tue, May 10, 2016 at 1:49 PM, Jamal Hadi Salim <jhs@mojatatu.com> wrote:
> From: Jamal Hadi Salim <jhs@mojatatu.com>
>
> The process below was broken and is fixed with this patch.
>
> //add a simple action and give it an instance id of 1
> sudo tc actions add action simple sdata "foobar" index 1
> //create a filter which binds to simple action id 1
> sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
> match ip dst 17.0.0.1/32 flowid 1:10 action simple index 1
>
> Message before fix was:
> RTNETLINK answers: Invalid argument
> We have an error talking to the kernel
>
> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>

Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [net PATCH v2 5/6] net sched: skbedit action fix late binding
  2016-05-10 20:49 ` [net PATCH v2 5/6] net sched: skbedit " Jamal Hadi Salim
@ 2016-05-10 21:27   ` Cong Wang
  0 siblings, 0 replies; 14+ messages in thread
From: Cong Wang @ 2016-05-10 21:27 UTC (permalink / raw)
  To: Jamal Hadi Salim
  Cc: David Miller, Linux Kernel Network Developers,
	Jiří Pírko, Alexander Duyck

On Tue, May 10, 2016 at 1:49 PM, Jamal Hadi Salim <jhs@mojatatu.com> wrote:
> From: Jamal Hadi Salim <jhs@mojatatu.com>
>
> The process below was broken and is fixed with this patch.
>
> //add a skbedit action and give it an instance id of 1
> sudo tc actions add action skbedit mark 10 index 1
> //create a filter which binds to skbedit action id 1
> sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
> match ip dst 17.0.0.1/32 flowid 1:10 action skbedit index 1
>
> Message before fix was:
> RTNETLINK answers: Invalid argument
> We have an error talking to the kernel
>
> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>

Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [net PATCH v2 6/6] net sched: ife action fix late binding
  2016-05-10 20:49 ` [net PATCH v2 6/6] net sched: ife " Jamal Hadi Salim
@ 2016-05-10 21:28   ` Cong Wang
  0 siblings, 0 replies; 14+ messages in thread
From: Cong Wang @ 2016-05-10 21:28 UTC (permalink / raw)
  To: Jamal Hadi Salim
  Cc: David Miller, Linux Kernel Network Developers,
	Jiří Pírko, Alexander Duyck

On Tue, May 10, 2016 at 1:49 PM, Jamal Hadi Salim <jhs@mojatatu.com> wrote:
> From: Jamal Hadi Salim <jhs@mojatatu.com>
>
> The process below was broken and is fixed with this patch.
>
> //add an ife action and give it an instance id of 1
> sudo tc actions add action ife encode \
> type 0xDEAD allow mark dst 02:15:15:15:15:15 index 1
>
> //create a filter which binds to ife action id 1
> sudo tc filter add dev $DEV parent ffff: protocol ip prio 1 u32\
> match ip dst 17.0.0.1/32 flowid 1:11 action ife index 1
>
> Message before fix was:
> RTNETLINK answers: Invalid argument
> We have an error talking to the kernel
>
> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>

Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [net PATCH v2 0/6] net sched: Fix broken late binding of actions
  2016-05-10 20:49 [net PATCH v2 0/6] net sched: Fix broken late binding of actions Jamal Hadi Salim
                   ` (5 preceding siblings ...)
  2016-05-10 20:49 ` [net PATCH v2 6/6] net sched: ife " Jamal Hadi Salim
@ 2016-05-11  3:50 ` David Miller
  6 siblings, 0 replies; 14+ messages in thread
From: David Miller @ 2016-05-11  3:50 UTC (permalink / raw)
  To: jhs; +Cc: netdev, xiyou.wangcong, jiri, alexander.duyck

From: Jamal Hadi Salim <jhs@mojatatu.com>
Date: Tue, 10 May 2016 16:49:25 -0400

> Some actions were broken in allowing for late binding of actions.
> Late binding workflow is as follows:
> a) create an action and provide all necessary parameters for it
> Optionally provide an index or let the kernel give you one.
> Example:
> sudo tc actions add action police rate 1kbit burst 90k drop index 1
> 
> b) later on bind to the pre-created action from a filter definition
> by merely specifying the index.
> Example:
> sudo tc filter add dev lo parent ffff: protocol ip prio 8 \
> u32 match ip src 127.0.0.8/32 flowid 1:8 action police index 1

Series applied, thanks Jamal.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2016-05-11  3:50 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-10 20:49 [net PATCH v2 0/6] net sched: Fix broken late binding of actions Jamal Hadi Salim
2016-05-10 20:49 ` [net PATCH v2 1/6] net sched: vlan action fix late binding Jamal Hadi Salim
2016-05-10 21:22   ` Cong Wang
2016-05-10 20:49 ` [net PATCH v2 2/6] net sched: ipt " Jamal Hadi Salim
2016-05-10 21:24   ` Cong Wang
2016-05-10 20:49 ` [net PATCH v2 3/6] net sched: mirred " Jamal Hadi Salim
2016-05-10 21:25   ` Cong Wang
2016-05-10 20:49 ` [net PATCH v2 4/6] net sched: simple " Jamal Hadi Salim
2016-05-10 21:26   ` Cong Wang
2016-05-10 20:49 ` [net PATCH v2 5/6] net sched: skbedit " Jamal Hadi Salim
2016-05-10 21:27   ` Cong Wang
2016-05-10 20:49 ` [net PATCH v2 6/6] net sched: ife " Jamal Hadi Salim
2016-05-10 21:28   ` Cong Wang
2016-05-11  3:50 ` [net PATCH v2 0/6] net sched: Fix broken late binding of actions David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.