Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Aug 2004 18:57:18 +0200
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        Pawel Malachowski <pawmal-posting@freebsd.lublin.pl>
Cc:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   Re: bin/70311: ipfw(8) pipe/queue show N displays data not only for N
Message-ID:  <20040823165718.GQ30151@darkness.comp.waw.pl>
In-Reply-To: <20040811163426.E06283474C2@shellma.zin.lublin.pl>
References:  <20040811163426.E06283474C2@shellma.zin.lublin.pl>

next in thread | previous in thread | raw e-mail | index | archive | help

--7vS62bsm3BVGCDKV
Content-Type: text/plain; charset=iso-8859-2
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Wed, Aug 11, 2004 at 06:34:26PM +0200, Pawel Malachowski wrote:
+> 2. After patching:
+> `ipfw pipe  show N' displays data for pipe N and queues with parentpipe=
=3DN.
+> `ipfw queue show N' displays data for queue N and no pipes.
+>=20
+> *** /usr/src/sbin/ipfw/ipfw2.c.orig     Wed Aug 11 18:08:27 2004
+> --- /usr/src/sbin/ipfw/ipfw2.c  Wed Aug 11 18:27:21 2004
+> ***************
+> *** 1498,1504 ****
+>                 next =3D (char *)p + l;
+>                 nbytes -=3D l;
+>=20
+> !               if (rulenum !=3D 0 && rulenum !=3D p->pipe_nr)
+>                         continue;
+>=20
+>                 /*
+> --- 1498,1504 ----
+>                 next =3D (char *)p + l;
+>                 nbytes -=3D l;
+>=20
+> !               if ( (rulenum !=3D 0 && rulenum !=3D p->pipe_nr) || (do_=
pipe=3D=3D2) )
+>                         continue;
+>=20
+>                 /*
+> ***************
+> *** 1532,1537 ****
+> --- 1532,1542 ----
+>                 l =3D sizeof(*fs) + fs->rq_elements * sizeof(*q);
+>                 next =3D (char *)fs + l;
+>                 nbytes -=3D l;
+> +
+> +               if (rulenum !=3D 0 && ((rulenum !=3D fs->fs_nr && do_pip=
e=3D=3D2)
+> +               || (rulenum !=3D fs->parent_nr && do_pipe=3D=3D1)))
+> +                       continue;
+> +
+>                 q =3D (struct dn_flow_queue *)(fs+1);
+>                 sprintf(prefix, "q%05d: weight %d pipe %d ",
+>                     fs->fs_nr, fs->weight, fs->parent_nr);

This patch doesn't work for me as expected. It shows all pipes and queues
with parentpipe=3DN.
Could you check this patch (it is against -CURRENT, but it should be easy
to apply it to 4.x):

Index: ipfw2.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /private/FreeBSD/src/sbin/ipfw/ipfw2.c,v
retrieving revision 1.54
diff -u -p -r1.54 ipfw2.c
--- ipfw2.c	12 Aug 2004 22:06:55 -0000	1.54
+++ ipfw2.c	23 Aug 2004 16:51:26 -0000
@@ -1564,6 +1564,12 @@ list_pipes(void *data, uint nbytes, int=20
 		l =3D sizeof(*fs) + fs->rq_elements * sizeof(*q);
 		next =3D (char *)fs + l;
 		nbytes -=3D l;
+
+		if (rulenum !=3D 0 && ((rulenum !=3D fs->fs_nr && do_pipe =3D=3D 2) ||
+		    (rulenum !=3D fs->parent_nr && do_pipe =3D=3D 1))) {
+			continue;
+		}
+
 		q =3D (struct dn_flow_queue *)(fs+1);
 		sprintf(prefix, "q%05d: weight %d pipe %d ",
 		    fs->fs_nr, fs->weight, fs->parent_nr);

Basically, it looks that first addition of 'do_pipe=3D=3D2' is bogus.

PS. Could you use unified diff format for patches generation?

--=20
Pawel Jakub Dawidek                       http://www.FreeBSD.org
pjd@FreeBSD.org                           http://garage.freebsd.pl
FreeBSD committer                         Am I Evil? Yes, I Am!

--7vS62bsm3BVGCDKV
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)

iD8DBQFBKiHuForvXbEpPzQRAr79AKChjiIY5ShwiIU+KZO76i1LfXhOOACfTQAm
+gD5Y8Oo0SVqDdg5d28LbGk=
=mOse
-----END PGP SIGNATURE-----

--7vS62bsm3BVGCDKV--



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