Date: Mon, 02 Apr 2007 23:56:54 -0700 From: Julian Elischer <julian@elischer.org> To: Mike Tancsa <mike@sentex.net> Cc: julian@freebsd.org, freebsd-stable@freebsd.org, JoaoBR <joao@matik.com.br> Subject: Re: ipfw add pipe broken in RELENG_6 Message-ID: <4611FAB6.4090201@elischer.org> In-Reply-To: <200704030239.l332dC89044128@lava.sentex.ca> References: <200704011107.22750.joao@matik.com.br> <200704030239.l332dC89044128@lava.sentex.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
Mike Tancsa wrote: > 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. somewhere between my MFC testing and the commits there seems to have been a screwup. I think it happenned because I reverted a MFC out of my list of MFC's to do after I had done some tests because they causled a failure and I hadn't realised that they affected this code too. I'm doing testing now and should be able to confirm this in a short while. > > > [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?4611FAB6.4090201>