I guess what you want is simply this
Index: pfctl.c
===================================================================
RCS file: /cvs/src/sbin/pfctl/pfctl.c,v
retrieving revision 1.244
diff -u -r1.244 pfctl.c
--- pfctl.c 17 Nov 2005 20:52:39 -0000 1.244
+++ pfctl.c 21 Apr 2006 20:00:46 -0000
@@ -1929,7 +1929,8 @@
err(1, "%s", rulesopt);
}
}
- if ((rulesopt != NULL) && (!*anchorname))
+ if ((rulesopt != NULL) && (loadopt & PFCTL_FLAG_OPTION) &&
+ !anchorname[0])
if (pfctl_clear_interface_flags(dev, opts | PF_OPT_QUIET))
error = 1;
i.e. only reset the interface flags if we're subsequently loading
options. If we're not loading any options, there's no reason to reset
them beforehand.
Note that plain -f will set that flag, as will -O and any combination of
-O with -N/-R.
For me, this makes sense. This allows stuff like
pfctl -sn | sed some-replacement | pfctl -Nf -
without affecting options.
Daniel