naccyde / rpms / iproute

Forked from rpms/iproute 9 months ago
Clone

Blame SOURCES/0029-pedit-Do-not-allow-using-retain-for-too-big-fields.patch

be97f7
From 2bf855b076bbe5aa4665f7efd8bcaf882821cab5 Mon Sep 17 00:00:00 2001
be97f7
From: Kamal Heib <kheib@redhat.com>
be97f7
Date: Thu, 9 Nov 2017 04:44:32 -0500
be97f7
Subject: [PATCH] pedit: Do not allow using retain for too big fields
be97f7
be97f7
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1456539
be97f7
be97f7
commit cdca191862775c47533908301760edd55763e861
be97f7
Author: Amir Vadai <amir@vadai.me>
be97f7
Date:   Sun May 14 11:17:44 2017 +0300
be97f7
be97f7
    pedit: Do not allow using retain for too big fields
be97f7
be97f7
    Using retain for fields longer than 32 bits is not supported.
be97f7
    Do not allow user to do it.
be97f7
be97f7
    Signed-off-by: Amir Vadai <amir@vadai.me>
be97f7
be97f7
Signed-off-by: Kamal Heib <kheib@redhat.com>
be97f7
---
be97f7
 man/man8/tc-pedit.8 | 3 ++-
be97f7
 tc/m_pedit.c        | 6 ++++++
be97f7
 2 files changed, 8 insertions(+), 1 deletion(-)
be97f7
be97f7
diff --git a/man/man8/tc-pedit.8 b/man/man8/tc-pedit.8
be97f7
index 7f482ea..9c4d57b 100644
be97f7
--- a/man/man8/tc-pedit.8
be97f7
+++ b/man/man8/tc-pedit.8
be97f7
@@ -266,7 +266,8 @@ Keep the addressed data as is.
be97f7
 .BI retain " RVAL"
be97f7
 This optional extra part of
be97f7
 .I CMD_SPEC
be97f7
-allows to exclude bits from being changed.
be97f7
+allows to exclude bits from being changed. Supported only for 32 bits fields
be97f7
+or smaller.
be97f7
 .TP
be97f7
 .I CONTROL
be97f7
 The following keywords allow to control how the tree of qdisc, classes,
be97f7
diff --git a/tc/m_pedit.c b/tc/m_pedit.c
be97f7
index 7ef2acc..9b74c96 100644
be97f7
--- a/tc/m_pedit.c
be97f7
+++ b/tc/m_pedit.c
be97f7
@@ -353,6 +353,12 @@ int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type, __u32 retain,
be97f7
 		argv++;
be97f7
 	}
be97f7
 
be97f7
+	if (len > 4 && retain != ~0) {
be97f7
+		fprintf(stderr,
be97f7
+			"retain is not supported for fields longer the 32 bits\n");
be97f7
+		return -1;
be97f7
+	}
be97f7
+
be97f7
 	if (type == TMAC) {
be97f7
 		res = pack_mac(sel, tkey, (__u8 *)val);
be97f7
 		goto done;
be97f7
-- 
be97f7
1.8.3.1
be97f7