On Friday 2010-07-23 15:43, Eric Dumazet wrote: >+ >+static const struct option cpu_opts[] = { >+ { "cpu", 1, NULL, '1' }, >+ { .name = NULL } >+}; I will never understand that sort of style mix logic. Why the C99 initializer only on the sentinel? { {.name = "cpu", .has_arg = true, .val = '1'}, {NULL}, }; >+cpu_print(const void *ip, const struct xt_entry_match *match, int numeric) >+{ >+ const struct xt_cpu_info *info = (void *)match->data; >+ >+ printf("cpu %s%u ", info->invert ? "! ":"", info->cpu); >+} >+ >+static void cpu_save(const void *ip, const struct xt_entry_match *match) >+{ >+ const struct xt_cpu_info *info = (void *)match->data; >+ >+ printf("%s--cpu %u ", info->invert ? "! ":"", info->cpu); >+} Using if (info->invert) would save the empty string. >diff --git a/extensions/libxt_cpu.man b/extensions/libxt_cpu.man >index e69de29..f42ac7a 100644 >--- a/extensions/libxt_cpu.man >+++ b/extensions/libxt_cpu.man >@@ -0,0 +1,16 @@ >+.TP >+[\fB!\fP] \fB\-\-cpu\fP \fInumber\fP >+ >+Match cpu handling this packet. cpus are numbered from 0 to NR_CPUS-1 Unwanted blank line. >+Can be used in combination with RPS (Remote Packet Steering) or >+multiqueue NICS to spread network traffic on different queues. >+.PP >+Example: >+.PP >+iptables \-t nat \-A PREROUTING \-p tcp \-\-dport 80 \-m cpu \-\-cpu 0 >+ \-j REDIRECT \-\-to\-port 8080 Unwanted indent. >+.PP >+iptables \-t nat \-A PREROUTING \-p tcp \-\-dport 80 \-m cpu \-\-cpu 1 >+ \-j REDIRECT \-\-to\-port 8081 >+.PP >+Available since linux 2.6.36 Linux. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html