iptables-restore/ip6tables-restore: add --version/-V argument
PATCH 1/1 iptables-restore/ip6tables-restore: add --version/-V argument
Prints program version just like iptables/ip6tables.
--- iptables/ip6tables-restore.c | 15 +++++++++++---- iptables/iptables-restore.c | 10 ++++++++-- 2 files changed, 20 insertions(+), 11 deletions(-)
iptables/ip6tables-restore.c +11 -4
@@ -36,6 +36,7 @@ static struct timeval wait_interval = {static const struct option options[] = { {.name ="counters" , .has_arg =0 , .val ='c' }, {.name ="verbose" , .has_arg =0 , .val ='v' }, + {.name ="version" , .has_arg =0 , .val ='V' }, {.name ="test" , .has_arg =0 , .val ='t' }, {.name ="help" , .has_arg =0 , .val ='h' }, {.name ="noflush" , .has_arg =0 , .val ='n' },
@@ -48,11 +49,15 @@ static const struct option options[] = {static void print_usage (const char *name,const char *version) __attribute__((noreturn)); +#define prog_name ip6tables_globals.program_name +#define prog_vers ip6tables_globals.program_version +static void print_usage (const char *name,const char *version) { -fprintf (stderr,"Usage: %s [-c] [-v] [-t] [-h] [-n] [-w secs] [-W usecs] [-T table] [-M command]\n" +fprintf (stderr,"Usage: %s [-c] [-v] [-V] [-t] [-h] [-n] [-w secs] [-W usecs] [-T table] [-M command]\n" " [ --counters ]\n" " [ --verbose ]\n" +" [ --version]\n" " [ --test ]\n" " [ --help ]\n" " [ --noflush ]\n"
@@ -78,8 +83,7 @@ static struct xtc_handle *create_handle(const char *tablename)if (!handle) {xtables_error (PARAMETER_PROBLEM ,"%s: unable to initialize " -"table '%s'\n" , ip6tables_globals.program_name, - tablename); +"table '%s'\n" , prog_name, tablename);exit (1 ); }return handle;
@@ -213,7 +217,7 @@ int ip6tables_restore_main(int argc, char *argv[])init_extensions6 ();#endif -while ((c =getopt_long (argc, argv,"bcvthnwWM:T:" , options,NULL )) !=-1 ) { +while ((c =getopt_long (argc, argv,"bcvVthnwWM:T:" , options,NULL )) !=-1 ) {switch (c) {case 'b' :fprintf (stderr,"-b/--binary option is not implemented\n" );
@@ -224,6 +228,9 @@ int ip6tables_restore_main(int argc, char *argv[])case 'v' : verbose =1 ;break ; +case 'V' : +printf ("%s v%s\n" , prog_name, prog_vers); +exit (0 );case 't' : testing =1 ;break ;
iptables/iptables-restore.c +8 -2
@@ -33,6 +33,7 @@ static struct timeval wait_interval = {static const struct option options[] = { {.name ="counters" , .has_arg =0 , .val ='c' }, {.name ="verbose" , .has_arg =0 , .val ='v' }, + {.name ="version" , .has_arg =0 , .val ='V' }, {.name ="test" , .has_arg =0 , .val ='t' }, {.name ="help" , .has_arg =0 , .val ='h' }, {.name ="noflush" , .has_arg =0 , .val ='n' },
@@ -46,12 +47,14 @@ static const struct option options[] = {static void print_usage (const char *name,const char *version) __attribute__((noreturn));#define prog_name iptables_globals.program_name +#define prog_vers iptables_globals.program_versionstatic void print_usage (const char *name,const char *version) { -fprintf (stderr,"Usage: %s [-c] [-v] [-t] [-h] [-n] [-w secs] [-W usecs] [-T table] [-M command]\n" +fprintf (stderr,"Usage: %s [-c] [-v] [-V] [-t] [-h] [-n] [-w secs] [-W usecs] [-T table] [-M command]\n" " [ --counters ]\n" " [ --verbose ]\n" +" [ --version]\n" " [ --test ]\n" " [ --help ]\n" " [ --noflush ]\n"
@@ -212,7 +215,7 @@ iptables_restore_main(int argc, char *argv[])init_extensions4 ();#endif -while ((c =getopt_long (argc, argv,"bcvthnwWM:T:" , options,NULL )) !=-1 ) { +while ((c =getopt_long (argc, argv,"bcvVthnwWM:T:" , options,NULL )) !=-1 ) {switch (c) {case 'b' :fprintf (stderr,"-b/--binary option is not implemented\n" );
@@ -223,6 +226,9 @@ iptables_restore_main(int argc, char *argv[])case 'v' : verbose =1 ;break ; +case 'V' : +printf ("%s v%s\n" , prog_name, prog_vers); +exit (0 );case 't' : testing =1 ;break ;
Signature · 1 line
2.9.3
Quoted 1 line · Dan Williams
Prints program version just like iptables/ip6tables.
Applied, thanks.
You sent us a chunk for the manpage?
Quoted 6 lines · Pablo Neira Ayuso
Quoted 1 line · Dan Williams
Prints program version just like iptables/ip6tables.
Applied, thanks.
You sent us a chunk for the manpage?
I did not, but I will. I noticed there wasn't one for the iptables- restore --wait changes either, was Lorenzo going to send one? Mine would probably conflict with that.
Dan
Pablo Neira Ayuso
maintainerQuoted 11 lines · Dan Williams
Quoted 6 lines · Pablo Neira Ayuso
Quoted 1 line · Dan Williams
Prints program version just like iptables/ip6tables.
Applied, thanks.
You sent us a chunk for the manpage?
I did not, but I will. I noticed there wasn't one for the iptables- restore --wait changes either, was Lorenzo going to send one? Mine would probably conflict with that.
Right. I forgot to ask for that chunk to Lorenzo.
If you can help us on adding these missing chunks to the manpage, I would really appreciate this. Thanks!
PATCH v2 1/2 iptables-restore/ip6tables-restore: add --version/-V argument
Prints program version just like iptables/ip6tables.
---
v2: documented new options in manpage
iptables/ip6tables-restore.c | 15 +++++++++++---- iptables/iptables-restore.8.in | 7 +++++-- iptables/iptables-restore.c | 10 ++++++++-- 4 files changed, 25 insertions(+), 13 deletions(-)
iptables/ip6tables-restore.c +11 -4
@@ -36,6 +36,7 @@ static struct timeval wait_interval = {static const struct option options[] = { {.name ="counters" , .has_arg =0 , .val ='c' }, {.name ="verbose" , .has_arg =0 , .val ='v' }, + {.name ="version" , .has_arg =0 , .val ='V' }, {.name ="test" , .has_arg =0 , .val ='t' }, {.name ="help" , .has_arg =0 , .val ='h' }, {.name ="noflush" , .has_arg =0 , .val ='n' },
@@ -48,11 +49,15 @@ static const struct option options[] = {static void print_usage (const char *name,const char *version) __attribute__((noreturn)); +#define prog_name ip6tables_globals.program_name +#define prog_vers ip6tables_globals.program_version +static void print_usage (const char *name,const char *version) { -fprintf (stderr,"Usage: %s [-c] [-v] [-t] [-h] [-n] [-w secs] [-W usecs] [-T table] [-M command]\n" +fprintf (stderr,"Usage: %s [-c] [-v] [-V] [-t] [-h] [-n] [-w secs] [-W usecs] [-T table] [-M command]\n" " [ --counters ]\n" " [ --verbose ]\n" +" [ --version]\n" " [ --test ]\n" " [ --help ]\n" " [ --noflush ]\n"
@@ -78,8 +83,7 @@ static struct xtc_handle *create_handle(const char *tablename)if (!handle) {xtables_error (PARAMETER_PROBLEM ,"%s: unable to initialize " -"table '%s'\n" , ip6tables_globals.program_name, - tablename); +"table '%s'\n" , prog_name, tablename);exit (1 ); }return handle;
@@ -213,7 +217,7 @@ int ip6tables_restore_main(int argc, char *argv[])init_extensions6 ();#endif -while ((c =getopt_long (argc, argv,"bcvthnwWM:T:" , options,NULL )) !=-1 ) { +while ((c =getopt_long (argc, argv,"bcvVthnwWM:T:" , options,NULL )) !=-1 ) {switch (c) {case 'b' :fprintf (stderr,"-b/--binary option is not implemented\n" );
@@ -224,6 +228,9 @@ int ip6tables_restore_main(int argc, char *argv[])case 'v' : verbose =1 ;break ; +case 'V' : +printf ("%s v%s\n" , prog_name, prog_vers); +exit (0 );case 't' : testing =1 ;break ;
iptables/iptables-restore.8.in +5 -2
@@ -23,10 +23,10 @@ iptables-restore \(em Restore IP Tables .P ip6tables-restore \(em Restore IPv6 Tables .SH SYNOPSIS -\fBiptables\-restore\fP [\fB\-chntv\fP] [\fB\-M\fP \fImodprobe\fP] +\fBiptables\-restore\fP [\fB\-chntvV\fP] [\fB\-M\fP \fImodprobe\fP] [\fB\-T\fP \fIname\fP] [\fBfile\fP] .P -\fBip6tables\-restore\fP [\fB\-chntv\fP] [\fB\-M\fP \fImodprobe\fP] +\fBip6tables\-restore\fP [\fB\-chntvV\fP] [\fB\-M\fP \fImodprobe\fP] [\fB\-T\fP \fIname\fP] [\fBfile\fP] .SH DESCRIPTION .PP
@@ -53,6 +53,9 @@ Only parse and construct the ruleset, but do not commit it. \fB\-v\fP, \fB\-\-verbose\fP Print additional debug info during ruleset processing. .TP +\fB\-V\fP, \fB\-\-version\fP +Print the program version number. +.TP \fB\-M\fP, \fB\-\-modprobe\fP \fImodprobe_program\fP Specify the path to the modprobe program. By default, iptables-restore will inspect /proc/sys/kernel/modprobe to determine the executable's path.
iptables/iptables-restore.c +8 -2
@@ -33,6 +33,7 @@ static struct timeval wait_interval = {static const struct option options[] = { {.name ="counters" , .has_arg =0 , .val ='c' }, {.name ="verbose" , .has_arg =0 , .val ='v' }, + {.name ="version" , .has_arg =0 , .val ='V' }, {.name ="test" , .has_arg =0 , .val ='t' }, {.name ="help" , .has_arg =0 , .val ='h' }, {.name ="noflush" , .has_arg =0 , .val ='n' },
@@ -46,12 +47,14 @@ static const struct option options[] = {static void print_usage (const char *name,const char *version) __attribute__((noreturn));#define prog_name iptables_globals.program_name +#define prog_vers iptables_globals.program_versionstatic void print_usage (const char *name,const char *version) { -fprintf (stderr,"Usage: %s [-c] [-v] [-t] [-h] [-n] [-w secs] [-W usecs] [-T table] [-M command]\n" +fprintf (stderr,"Usage: %s [-c] [-v] [-V] [-t] [-h] [-n] [-w secs] [-W usecs] [-T table] [-M command]\n" " [ --counters ]\n" " [ --verbose ]\n" +" [ --version]\n" " [ --test ]\n" " [ --help ]\n" " [ --noflush ]\n"
@@ -212,7 +215,7 @@ iptables_restore_main(int argc, char *argv[])init_extensions4 ();#endif -while ((c =getopt_long (argc, argv,"bcvthnwWM:T:" , options,NULL )) !=-1 ) { +while ((c =getopt_long (argc, argv,"bcvVthnwWM:T:" , options,NULL )) !=-1 ) {switch (c) {case 'b' :fprintf (stderr,"-b/--binary option is not implemented\n" );
@@ -223,6 +226,9 @@ iptables_restore_main(int argc, char *argv[])case 'v' : verbose =1 ;break ; +case 'V' : +printf ("%s v%s\n" , prog_name, prog_vers); +exit (0 );case 't' : testing =1 ;break ;
Signature · 1 line
2.9.3
PATCH v2 2/2 iptables-restore.8: document -w/-W options
--- iptables/iptables-restore.8.in | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-)
iptables/iptables-restore.8.in +21 -4
@@ -23,11 +23,13 @@ iptables-restore \(em Restore IP Tables .P ip6tables-restore \(em Restore IPv6 Tables .SH SYNOPSIS -\fBiptables\-restore\fP [\fB\-chntvV\fP] [\fB\-M\fP \fImodprobe\fP] -[\fB\-T\fP \fIname\fP] [\fBfile\fP] +\fBiptables\-restore\fP [\fB\-chntvV\fP] [\fB\-w\fP \fIsecs\fP] +[\fB\-W\fP \fIusecs\fP] [\fB\-M\fP \fImodprobe\fP] [\fB\-T\fP \fIname\fP] +[\fBfile\fP] .P -\fBip6tables\-restore\fP [\fB\-chntvV\fP] [\fB\-M\fP \fImodprobe\fP] -[\fB\-T\fP \fIname\fP] [\fBfile\fP] +\fBip6tables\-restore\fP [\fB\-chntvV\fP] [\fB\-w\fP \fIsecs\fP] +[\fB\-W\fP \fIusecs\fP] [\fB\-M\fP \fImodprobe\fP] [\fB\-T\fP \fIname\fP] +[\fBfile\fP] .SH DESCRIPTION .PP .B iptables-restore
@@ -56,6 +58,21 @@ Print additional debug info during ruleset processing. \fB\-V\fP, \fB\-\-version\fP Print the program version number. .TP +\fB\-w\fP, \fB\-\-wait\fP [\fIseconds\fP] +Wait for the xtables lock. +To prevent multiple instances of the program from running concurrently, +an attempt will be made to obtain an exclusive lock at launch. By default, +the program will exit if the lock cannot be obtained. This option will +make the program wait (indefinitely or for optional \fIseconds\fP) until +the exclusive lock can be obtained. +.TP +\fB\-W\fP, \fB\-\-wait-interval\fP \fImicroseconds\fP +Interval to wait per each iteration. +When running latency sensitive applications, waiting for the xtables lock +for extended durations may not be acceptable. This option will make each +iteration take the amount of time specified. The default interval is +1 second. This option only works with \fB\-w\fP. +.TP \fB\-M\fP, \fB\-\-modprobe\fP \fImodprobe_program\fP Specify the path to the modprobe program. By default, iptables-restore will inspect /proc/sys/kernel/modprobe to determine the executable's path.
Signature · 1 line
2.9.3
Pablo Neira Ayuso
maintainerRe: [PATCH 2/2 v2] iptables-restore.8: document -w/-W options
Quoted 1 line · Dan Williams
Fixes 999eaa241212d3952ddff39a99d0d55a74e3639e
Also applied, thanks.
Quoted 1 line · Dan Williams
Prints program version just like iptables/ip6tables.
Applied, thanks.