From 8e9ca1108100ce68542998d71a98092b66e17398 Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Thu, 28 May 2009 22:25:33 +0000 Subject: [PATCH] Changes to make VNET+ work again --- extensions/libxt_MARK.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/extensions/libxt_MARK.c b/extensions/libxt_MARK.c index 4be5633..146a5d6 100644 --- a/extensions/libxt_MARK.c +++ b/extensions/libxt_MARK.c @@ -39,6 +39,7 @@ static const struct option mark_tg_opts[] = { {.name = "and-mark", .has_arg = true, .val = '&'}, {.name = "or-mark", .has_arg = true, .val = '|'}, {.name = "xor-mark", .has_arg = true, .val = '^'}, + {.name = "copy-xid", .has_arg = true, .val = '%'}, { .name = NULL } }; @@ -50,6 +51,7 @@ static void mark_tg_help(void) " --set-mark value[/mask] Clear bits in mask and OR value into nfmark\n" " --and-mark bits Binary AND the nfmark with bits\n" " --or-mark bits Binary OR the nfmark with bits\n" +" --copy-xid Set nfmark to be the connection xid (PlanetLab specific)\n" " --xor-mask bits Binary XOR the nfmark with bits\n" "\n"); } @@ -184,6 +186,12 @@ static int mark_tg_parse(int c, char **argv, int invert, unsigned int *flags, info->mask = 0; break; + case '%': /* --copy-xid */ + param_act(P_ONE_ACTION, "MARK", *flags & F_MARK); + info->mark = 0; + info->mask = mask; + break; + default: return false; } @@ -196,7 +204,7 @@ static void mark_tg_check(unsigned int flags) { if (flags == 0) exit_error(PARAMETER_PROBLEM, "MARK: One of the --set-xmark, " - "--{and,or,xor,set}-mark options is required"); + "--{and,or,xor,set}-mark, or --copy-xid options is required"); } static void -- 2.43.0