Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 02 Apr 2007 22:37:19 -0400
From:      Mike Tancsa <mike@sentex.net>
To:        JoaoBR <joao@matik.com.br>, freebsd-stable@freebsd.org
Cc:        julian@freebsd.org
Subject:   Re: ipfw add pipe broken in RELENG_6
Message-ID:  <200704030239.l332dC89044128@lava.sentex.ca>
In-Reply-To: <200704011107.22750.joao@matik.com.br>
References:  <200704011107.22750.joao@matik.com.br>

next in thread | previous in thread | raw e-mail | index | archive | help
At 10:07 AM 4/1/2007, JoaoBR wrote:

>it seems I can not add pipes with releng6 sources from the last days
>
>ipfw add pipe 1 ip from any to any
>ipfw: getsockopt(IP_FW_ADD): Invalid argument

I think this is whats needed in /usr/src/sbin/ipfw.  Looking at the 
diffs between HEAD and RELENG_6 (apart from the kernel nat stuff), 
below seems to be whats different.


[smicro1U]# diff -u ipfw2.c.orig ipfw2.c
--- ipfw2.c.orig        Mon Apr  2 22:28:33 2007
+++ ipfw2.c     Mon Apr  2 22:30:45 2007
@@ -3973,11 +3973,9 @@
                 break;

         case TOK_QUEUE:
-               action->len = F_INSN_SIZE(ipfw_insn_pipe);
                 action->opcode = O_QUEUE;
                 goto chkarg;
         case TOK_PIPE:
-               action->len = F_INSN_SIZE(ipfw_insn_pipe);
                 action->opcode = O_PIPE;
                 goto chkarg;
         case TOK_SKIPTO:
@@ -4043,11 +4041,13 @@
                                     "illegal forwarding port ``%s''", s);
                         p->sa.sin_port = (u_short)i;
                 }
-               lookup_host(*av, &(p->sa.sin_addr));
-               }
+               if (_substrcmp(*av, "tablearg") == 0)
+                       p->sa.sin_addr.s_addr = INADDR_ANY;
+               else
+                       lookup_host(*av, &(p->sa.sin_addr));
                 ac--; av++;
                 break;
-
+            }
         case TOK_COMMENT:
                 /* pretend it is a 'count' rule followed by the comment */
                 action->opcode = O_COUNT;
[smicro1U]#



The command seems to be getting tripped up in /usr/src/sys/netinet/ip_fw2.c

                 case O_QUEUE:
                         if (cmdlen != F_INSN_SIZE(ipfw_insn))
                                 goto bad_size;
                         goto check_action;

where size=2 and cmdlen=1 on opcode=50

         ---Mike 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200704030239.l332dC89044128>