On Tue, Jun 13, 2017 at 12:43:51AM +0200, Adam Wolk wrote:
> On Mon, Jun 12, 2017 at 11:43:44PM +0200, Alexandr Nedvedicky wrote:
> > Hello Adam,
> > 
> > </snip>
> > 
> > > It was a rainy evening here, so here's the updated pfctl diff.
> > 
> >     I'm sorry to hear about the rainy weather [1].
> >     anyway, you might want to run regression test for pfctl.
> > 
> >     cd $SRC/src/regress/sbin/pfctl
> >     cat Makefile
> >     # follow instructions
> > 
> >     just for sure.
> 
> Ran the tests both on the unmodified and changed pfctl using a stock 
> unmodified
> GENERIC kernel.
> 
> One test case fails pfcmd1.
> 

Yet another rainy day, so revisiting the diff.

1. Re-basing the diff on the recently committed change from the OP

2. Removed the redundant error reporting from:
 - pfctl_clear_tables
 - pfctl_show_tables

3. pfctl_show_ifaces back to using radix_perror for output consistency

4. regress test altered, we are passing in the -n which just results in the
rules being parsed.

The definition for the pfctlcmd testing group in the Makefile is:
# pfcmd: test pfctl command line parsing
after the change the test failed not because of command line parsing but
from the attempt of trying to clear tables from a non existing anchor.

with the -n flag we still test if the anchor command can be combined
with -Fa but don't actually attempt to run the clearing code.

This regress modification passes both with the pfctl before this change as well
as the newly modified one.

Feedback, OK's?
? openbsd-daily-pfctl-1.diff
? openbsd-daily-pfctl-2.diff
? openbsd-daily-pfctl-3.diff
? parse.c
? pfctl
? rain.diff
Index: pfctl.h
===================================================================
RCS file: /cvs/src/sbin/pfctl/pfctl.h,v
retrieving revision 1.53
diff -u -p -r1.53 pfctl.h
--- pfctl.h     19 Jan 2015 23:52:02 -0000      1.53
+++ pfctl.h     16 Jun 2017 21:05:38 -0000
@@ -75,12 +75,12 @@ int  pfi_get_ifaces(const char *, struct
 int     pfi_clr_istats(const char *, int *, int);
 
 void    pfctl_print_title(char *);
-int     pfctl_clear_tables(const char *, int);
-int     pfctl_show_tables(const char *, int);
+void    pfctl_clear_tables(const char *, int);
+void    pfctl_show_tables(const char *, int);
 int     pfctl_command_tables(int, char *[], char *, const char *, char *,
            const char *, int);
 void    warn_namespace_collision(const char *);
-int     pfctl_show_ifaces(const char *, int);
+void    pfctl_show_ifaces(const char *, int);
 FILE   *pfctl_fopen(const char *, const char *);
 
 /*
Index: pfctl_table.c
===================================================================
RCS file: /cvs/src/sbin/pfctl/pfctl_table.c,v
retrieving revision 1.75
diff -u -p -r1.75 pfctl_table.c
--- pfctl_table.c       13 Apr 2017 07:30:21 -0000      1.75
+++ pfctl_table.c       16 Jun 2017 21:05:38 -0000
@@ -102,16 +102,18 @@ static const char *istats_text[2][2][2] 
                table.pfrt_flags &= ~PFR_TFLAG_PERSIST;                 \
        } while(0)
 
-int
+void
 pfctl_clear_tables(const char *anchor, int opts)
 {
-       return pfctl_table(0, NULL, NULL, "-F", NULL, anchor, opts);
+       if (pfctl_table(0, NULL, NULL, "-F", NULL, anchor, opts) == -1)
+               exit(1);
 }
 
-int
+void
 pfctl_show_tables(const char *anchor, int opts)
 {
-       return pfctl_table(0, NULL, NULL, "-s", NULL, anchor, opts);
+       if (pfctl_table(0, NULL, NULL, "-s", NULL, anchor, opts) == -1)
+               exit(1);
 }
 
 int
@@ -594,7 +596,7 @@ xprintf(int opts, const char *fmt, ...)
 
 /* interface stuff */
 
-int
+void
 pfctl_show_ifaces(const char *filter, int opts)
 {
        struct pfr_buffer        b;
@@ -608,7 +610,7 @@ pfctl_show_ifaces(const char *filter, in
                b.pfrb_size = b.pfrb_msize;
                if (pfi_get_ifaces(filter, b.pfrb_caddr, &b.pfrb_size)) {
                        radix_perror();
-                       return (1);
+                       exit(1);
                }
                if (b.pfrb_size <= b.pfrb_msize)
                        break;
@@ -618,7 +620,6 @@ pfctl_show_ifaces(const char *filter, in
                pfctl_print_title("INTERFACES:");
        PFRB_FOREACH(p, &b)
                print_iface(p, opts);
-       return (0);
 }
 
 void
? pfctl-regress-2.diff
? pfctl-regress.diff
Index: pfcmd1.opts
===================================================================
RCS file: /cvs/src/regress/sbin/pfctl/pfcmd1.opts,v
retrieving revision 1.1
diff -u -p -r1.1 pfcmd1.opts
--- pfcmd1.opts 3 Jul 2010 02:32:45 -0000       1.1
+++ pfcmd1.opts 16 Jun 2017 21:34:29 -0000
@@ -1 +1 @@
--a regress/does_not_exist -Fa
+-n -a regress/does_not_exist -Fa

Reply via email to