Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Jan 2004 13:01:22 -0800
From:      Luigi Rizzo <rizzo@icir.org>
To:        ipfw@freebsd.org
Subject:   Request for review: ipfw2 for IPV6
Message-ID:  <20040114130122.A86000@xorpc.icir.org>

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

--ReaqsoxgOBHFXBhH
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,
I am attaching some very experimental (and only partly functional)
code to use ipfw2/dummynet with IPV6.

THIS IS NOT RECOMMENDED FOR REGULAR USE, JUST FOR EVALUATION.

The code has been developed by two students of mine, Mariano
Tortoriello and Raffaele De Lorenzo, and I only revised it briefly.
I think the overall architecture is reasonably close to the final 
one, although there are some optimizations and changes to improve
compatibility with other kernel options.

We would really appreciate testing by someone who is a kernel programmer
who has access to ipv6 network and some knowledge of the ipv6 code,
and thus can give advice on how to improve this code, and possibly
suggest fixes for the trivial bugs that are there.

Installation instructions:

  + the patch is based on 4.9_RELEASE
  + move just above your src/ directory and do a
        gzcat ipfw6.040114a.diff.gz | patch
  + install the patched copy of netinet/ip_dummynet.h and ip_fw2.h
    into /usr/include/netinet
  + add the IPFIREWALL and IPFW2 options in the kernel, together with the
    IPV6 options (no IPV6FIREWALL)
  + rebuild and reinstall the kernel and /sbin/ipfw, remember
    to use  "make -DIPFW2" for  the latter

At this point you should be able to use ipv6 addresses in ipfw
instruction, the new option "ipv6" which only matches ipv6
packets. 

The system _will_ panic if you are trying to use dummynet on
output packets, the reasons of the panic are still to investigate.
Dummynet on the input path seems to work, as well as on layer2.
There might be other bugs, which I would be happy to hear about
as i only did very limited testing.
 
        cheers 
        luigi

--ReaqsoxgOBHFXBhH
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="ipfw6.040114a.diff.gz"
Content-Transfer-Encoding: base64

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

--ReaqsoxgOBHFXBhH--



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