On Tue, Nov 22, 2016 at 01:44:09PM +0100, Mike Belopuhov wrote:
> OK, all I wanted to know was if this is know to work and if it has
> been tested.  I'd argue that we don't put the code that doesn't work
> or not tested or we don't know what it does :)

After looking at all the cases, it will be hard to test the at-to
with route-to combinations.  As the feature never worked, let's
disable it.  If someone has a usecase, he can put it back.

ok?

bluhm

Index: sys/net/pf.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/net/pf.c,v
retrieving revision 1.1001
diff -u -p -r1.1001 pf.c
--- sys/net/pf.c        22 Nov 2016 19:29:54 -0000      1.1001
+++ sys/net/pf.c        23 Nov 2016 00:00:30 -0000
@@ -6878,28 +6878,16 @@ done:
                        action = PF_DROP;
                        break;
                }
-               if (r->rt) {
-                       switch (pd.naf) {
-                       case AF_INET:
-                               pf_route(&pd, r, s);
-                               break;
-                       case AF_INET6:
-                               pf_route6(&pd, r, s);
-                               break;
-                       }
-               }
-               if (pd.m) {
-                       pd.m->m_pkthdr.pf.flags |= PF_TAG_GENERATED;
-                       switch (pd.naf) {
-                       case AF_INET:
-                               ip_output(pd.m, NULL, NULL, 0, NULL, NULL, 0);
-                               break;
-                       case AF_INET6:
-                               ip6_output(pd.m, NULL, NULL, 0, NULL, NULL);
-                               break;
-                       }
-                       pd.m = NULL;
+               pd.m->m_pkthdr.pf.flags |= PF_TAG_GENERATED;
+               switch (pd.naf) {
+               case AF_INET:
+                       ip_output(pd.m, NULL, NULL, 0, NULL, NULL, 0);
+                       break;
+               case AF_INET6:
+                       ip6_output(pd.m, NULL, NULL, 0, NULL, NULL);
+                       break;
                }
+               pd.m = NULL;
                action = PF_PASS;
                break;
 #endif /* INET6 */
Index: sbin/pfctl/parse.y
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sbin/pfctl/parse.y,v
retrieving revision 1.655
diff -u -p -r1.655 parse.y
--- sbin/pfctl/parse.y  26 Aug 2016 06:06:58 -0000      1.655
+++ sbin/pfctl/parse.y  23 Nov 2016 00:07:42 -0000
@@ -1530,6 +1530,11 @@ pfrule           : action dir logquick interface 
                                yyerror("af-to can only be used with direction 
in");
                                YYERROR;
                        }
+                       if (($8.marker & FOM_AFTO) && $8.route.rt) {
+                               yyerror("af-to cannot be used together with "
+                                   "route-to, reply-to, dup-to");
+                               YYERROR;
+                       }
                        r.af = $5;
 
                        if ($8.tag)

Reply via email to