X-Git-Url: http://git.onelab.eu/?p=iptables.git;a=blobdiff_plain;f=copy-xid.patch;h=1886b128321cd69b7f0ffbdab167794dc6b63697;hp=776d7f40a94142d46c7b4b3afb13ae6ffe8795e8;hb=HEAD;hpb=3f19967612497a4acabc5c6011fe2b4b1bf94c57 diff --git a/copy-xid.patch b/copy-xid.patch index 776d7f4..1886b12 100644 --- a/copy-xid.patch +++ b/copy-xid.patch @@ -1,14 +1,14 @@ -commit 12aa2a62d05523e66b104b3f6840c592309d3a05 +commit a796550d217a8fc06829cac7bad72ac1fe34f85d Author: S.Çağlar Onur Date: Sat Apr 3 01:17:41 2010 -0400 copy-xid diff --git a/extensions/libxt_CLASSIFY.c b/extensions/libxt_CLASSIFY.c -index 82b8f4e..09c15c0 100644 +index ab5127c..477790e 100644 --- a/extensions/libxt_CLASSIFY.c +++ b/extensions/libxt_CLASSIFY.c -@@ -15,11 +15,13 @@ CLASSIFY_help(void) +@@ -16,11 +16,13 @@ CLASSIFY_help(void) { printf( "CLASSIFY target options:\n" @@ -18,12 +18,12 @@ index 82b8f4e..09c15c0 100644 } static const struct option CLASSIFY_opts[] = { - { "set-class", 1, NULL, '1' }, -+ { "add-mark", 0, 0, '2' }, - { .name = NULL } + {.name = "set-class", .has_arg = true, .val = '1'}, ++ {.name = "add-mark", .has_arg = false, .val = '2'}, + XT_GETOPT_TABLEEND, }; -@@ -42,6 +44,8 @@ CLASSIFY_parse(int c, char **argv, int invert, unsigned int *flags, +@@ -43,6 +45,8 @@ CLASSIFY_parse(int c, char **argv, int invert, unsigned int *flags, struct xt_classify_target_info *clinfo = (struct xt_classify_target_info *)(*target)->data; @@ -32,7 +32,7 @@ index 82b8f4e..09c15c0 100644 switch (c) { case '1': if (CLASSIFY_string_to_priority(optarg, &clinfo->priority)) -@@ -53,6 +57,10 @@ CLASSIFY_parse(int c, char **argv, int invert, unsigned int *flags, +@@ -54,6 +58,10 @@ CLASSIFY_parse(int c, char **argv, int invert, unsigned int *flags, *flags = 1; break; @@ -43,7 +43,7 @@ index 82b8f4e..09c15c0 100644 default: return 0; } -@@ -83,6 +91,9 @@ CLASSIFY_print(const void *ip, +@@ -84,6 +92,9 @@ CLASSIFY_print(const void *ip, (const struct xt_classify_target_info *)target->data; printf("CLASSIFY set "); CLASSIFY_print_class(clinfo->priority, numeric); @@ -53,7 +53,7 @@ index 82b8f4e..09c15c0 100644 } static void -@@ -93,6 +104,9 @@ CLASSIFY_save(const void *ip, const struct xt_entry_target *target) +@@ -94,6 +105,9 @@ CLASSIFY_save(const void *ip, const struct xt_entry_target *target) printf("--set-class %.4x:%.4x ", TC_H_MAJ(clinfo->priority)>>16, TC_H_MIN(clinfo->priority)); @@ -64,9 +64,17 @@ index 82b8f4e..09c15c0 100644 static struct xtables_target classify_target = { diff --git a/extensions/libxt_MARK.c b/extensions/libxt_MARK.c -index dbfc7c0..db58a1b 100644 +index 39996d0..09e13ca 100644 --- a/extensions/libxt_MARK.c +++ b/extensions/libxt_MARK.c +@@ -19,6 +19,7 @@ enum { + XT_MARK_SET=0, + XT_MARK_AND, + XT_MARK_OR, ++ IPT_MARK_COPYXID, + }; + + struct xt_mark_target_info_v1 { @@ -36,13 +37,15 @@ static void MARK_help(void) "MARK target options:\n" " --set-mark value Set nfmark value\n" @@ -77,11 +85,11 @@ index dbfc7c0..db58a1b 100644 } static const struct option MARK_opts[] = { - { "set-mark", 1, NULL, '1' }, - { "and-mark", 1, NULL, '2' }, - { "or-mark", 1, NULL, '3' }, -+ { "copy-xid", 1, 0, '4' }, - { .name = NULL } + {.name = "set-mark", .has_arg = true, .val = '1'}, + {.name = "and-mark", .has_arg = true, .val = '2'}, + {.name = "or-mark", .has_arg = true, .val = '3'}, ++ {.name = "copy-xid", .has_arg = true, .val = '4'}, + XT_GETOPT_TABLEEND, }; @@ -52,6 +55,7 @@ static const struct option mark_tg_opts[] = { @@ -89,7 +97,7 @@ index dbfc7c0..db58a1b 100644 {.name = "or-mark", .has_arg = true, .val = '|'}, {.name = "xor-mark", .has_arg = true, .val = '^'}, + {.name = "copy-xid", .has_arg = true, .val = '%'}, - { .name = NULL } + XT_GETOPT_TABLEEND, }; @@ -63,6 +67,7 @@ static void mark_tg_help(void) @@ -100,6 +108,16 @@ index dbfc7c0..db58a1b 100644 " --xor-mask bits Binary XOR the nfmark with bits\n" "\n"); } +@@ -126,6 +131,9 @@ MARK_parse_v1(int c, char **argv, int invert, unsigned int *flags, + case '3': + markinfo->mode = XT_MARK_OR; + break; ++ case '4': ++ markinfo->mode = IPT_MARK_COPYXID; ++ break; + default: + return 0; + } @@ -194,6 +202,12 @@ static int mark_tg_parse(int c, char **argv, int invert, unsigned int *flags, info->mask = 0; break; @@ -122,6 +140,16 @@ index dbfc7c0..db58a1b 100644 } static void +@@ -249,6 +263,9 @@ static void MARK_print_v1(const void *ip, const struct xt_entry_target *target, + case XT_MARK_OR: + printf("MARK or "); + break; ++ case IPT_MARK_COPYXID: ++ printf("MARK copyxid "); ++ break; + } + print_mark(markinfo->mark); + } @@ -258,7 +275,9 @@ static void mark_tg_print(const void *ip, const struct xt_entry_target *target, { const struct xt_mark_tginfo2 *info = (const void *)target->data; @@ -133,6 +161,16 @@ index dbfc7c0..db58a1b 100644 printf("MARK and 0x%x ", (unsigned int)(u_int32_t)~info->mask); else if (info->mark == info->mask) printf("MARK or 0x%x ", info->mark); +@@ -285,6 +304,9 @@ static void MARK_save_v1(const void *ip, const struct xt_entry_target *target) + case XT_MARK_OR: + printf("--or-mark "); + break; ++ case IPT_MARK_COPYXID: ++ printf("--copy-xid "); ++ break; + } + print_mark(markinfo->mark); + } @@ -293,7 +315,10 @@ static void mark_tg_save(const void *ip, const struct xt_entry_target *target) { const struct xt_mark_tginfo2 *info = (const void *)target->data;