From: jamal <hadi@cyberus.ca>
To: Stephen Hemminger <shemminger@vyatta.com>
Cc: netdev@vger.kernel.org, Alexander Duyck <alexander.h.duyck@intel.com>
Subject: [PATCH 2/2] iproute2 skbedit: Add support to mark packets
Date: Thu, 03 Dec 2009 08:32:48 -0500 [thread overview]
Message-ID: <1259847168.3766.40.camel@bigi> (raw)
[-- Attachment #1: Type: text/plain, Size: 229 bytes --]
I did this originally because i was getting too many support
questions on ipt with mark. It still makes sense since skbedit
seems to be the mother action of skb metadata (should probably
have been called skbmeta).
cheers,
jamal
[-- Attachment #2: skbeiprt-mark-p --]
[-- Type: text/plain, Size: 3201 bytes --]
commit 90afac29b6e8c62bc1b2a4da7c0dd4407ea9dd3f
Author: Jamal Hadi Salim <hadi@cyberus.ca>
Date: Thu Dec 3 08:18:41 2009 -0500
skbedit: Add support to mark packets
This adds support for setting the skb mark.
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
diff --git a/include/linux/tc_act/tc_skbedit.h b/include/linux/tc_act/tc_skbedit.h
index a14e461..7a2e910 100644
--- a/include/linux/tc_act/tc_skbedit.h
+++ b/include/linux/tc_act/tc_skbedit.h
@@ -26,6 +26,7 @@
#define SKBEDIT_F_PRIORITY 0x1
#define SKBEDIT_F_QUEUE_MAPPING 0x2
+#define SKBEDIT_F_MARK 0x4
struct tc_skbedit {
tc_gen;
@@ -37,6 +38,7 @@ enum {
TCA_SKBEDIT_PARMS,
TCA_SKBEDIT_PRIORITY,
TCA_SKBEDIT_QUEUE_MAPPING,
+ TCA_SKBEDIT_MARK,
__TCA_SKBEDIT_MAX
};
#define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
diff --git a/tc/m_skbedit.c b/tc/m_skbedit.c
index ecb1f2d..623dc53 100644
--- a/tc/m_skbedit.c
+++ b/tc/m_skbedit.c
@@ -31,11 +31,13 @@
static void
explain(void)
{
- fprintf(stderr, "Usage: ... skbedit <[QM] [PM]>\n"
+ fprintf(stderr, "Usage: ... skbedit <[QM] [PM] [MM]>\n"
"QM = queue_mapping QUEUE_MAPPING\n"
"PM = priority PRIORITY \n"
+ "MM = mark MARK \n"
"QUEUE_MAPPING = device transmit queue to use\n"
- "PRIORITY = classID to assign to priority field\n");
+ "PRIORITY = classID to assign to priority field\n"
+ "MARK = firewall mark to set\n");
}
static void
@@ -55,7 +57,7 @@ parse_skbedit(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
struct rtattr *tail;
unsigned int tmp;
__u16 queue_mapping;
- __u32 flags = 0, priority;
+ __u32 flags = 0, priority, mark;
struct tc_skbedit sel = { 0 };
if (matches(*argv, "skbedit") != 0)
@@ -81,6 +83,14 @@ parse_skbedit(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
return -1;
}
ok++;
+ } else if (matches(*argv, "mark") == 0) {
+ flags |= SKBEDIT_F_MARK;
+ NEXT_ARG();
+ if (get_tc_classid(&mark, *argv)) {
+ fprintf(stderr, "Illegal mark\n");
+ return -1;
+ }
+ ok++;
} else if (matches(*argv, "help") == 0) {
usage();
} else {
@@ -138,6 +148,9 @@ parse_skbedit(struct action_util *a, int *argc_p, char ***argv_p, int tca_id,
if (flags & SKBEDIT_F_PRIORITY)
addattr_l(n, MAX_MSG, TCA_SKBEDIT_PRIORITY,
&priority, sizeof(priority));
+ if (flags & SKBEDIT_F_MARK)
+ addattr_l(n, MAX_MSG, TCA_SKBEDIT_MARK,
+ &mark, sizeof(mark));
tail->rta_len = (char *)NLMSG_TAIL(n) - (char *)tail;
*argc_p = argc;
@@ -151,6 +164,7 @@ static int print_skbedit(struct action_util *au, FILE *f, struct rtattr *arg)
struct rtattr *tb[TCA_SKBEDIT_MAX + 1];
SPRINT_BUF(b1);
__u32 *priority;
+ __u32 *mark;
__u16 *queue_mapping;
if (arg == NULL)
@@ -175,6 +189,10 @@ static int print_skbedit(struct action_util *au, FILE *f, struct rtattr *arg)
priority = RTA_DATA(tb[TCA_SKBEDIT_PRIORITY]);
fprintf(f, " priority %s", sprint_tc_classid(*priority, b1));
}
+ if (tb[TCA_SKBEDIT_MARK] != NULL) {
+ mark = RTA_DATA(tb[TCA_SKBEDIT_MARK]);
+ fprintf(f, " mark %d", *mark);
+ }
if (show_stats) {
if (tb[TCA_SKBEDIT_TM]) {
next reply other threads:[~2009-12-03 13:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-03 13:32 jamal [this message]
2009-12-26 19:08 ` [PATCH 2/2] iproute2 skbedit: Add support to mark packets Stephen Hemminger
2010-03-04 0:36 ` Stephen Hemminger
2010-03-04 2:51 ` jamal
2010-03-04 16:48 ` Stephen Hemminger
2010-03-04 16:58 ` jamal
2010-03-04 17:43 ` Stephen Hemminger
2010-03-04 18:30 ` jamal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1259847168.3766.40.camel@bigi \
--to=hadi@cyberus.ca \
--cc=alexander.h.duyck@intel.com \
--cc=netdev@vger.kernel.org \
--cc=shemminger@vyatta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).