[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MirageOS-devel] Fwd: [mirage] RFC: Initial support for IPv6 (#319)

  • To: mirageos-devel <mirageos-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Anil Madhavapeddy <anil@xxxxxxxxxx>
  • Date: Mon, 10 Nov 2014 16:36:53 +0000
  • Delivery-date: Mon, 10 Nov 2014 16:37:05 +0000
  • List-id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>

Nicolas has been making tremendous progress on Mirage IPv6!  See below for the GitHub discussion.

Begin forwarded message:

Date: 10 November 2014 16:26:42 GMT
From: Nicolas Ojeda Bar <notifications@xxxxxxxxxx>
To: mirage/mirage <mirage@xxxxxxxxxxxxxxxxxx>
Subject: [mirage] RFC: Initial support for IPv6 (#319)

I have started working on integrating IPv6 to the current code base. I made a first stab at modifying the signatures in V2.mli and V2_LWT.mli and would appreciate any comments on this. The commit message follows. I am particularly interested in discussing the last three points of the list.

Initial support for IPv6

Summary of changes:

  • Moved ARP stuff from ETHIF to IPV4. In particular, ETHIF no longer
    has a type called ipv4addr.

  • Make a new signature IP which is included in both IPV4 and IPV6. The
    idea is that TCP and UDP should be functors of IP only and should work
    the same way regardless of whether it is an IPV4 or IPV6.

  • IPV4 includes IP and should include anything else that only makes
    sense for IPv4 (e.g. the ARP stuff).

  • IPV6 includes IP and should include anything else that only makes
    sense for IPv6 (nothing currently).

  • Rename ipv4addr to ipaddr since it should not matter whether it is
    a v4 addr or a v6 addr most of the time.

  • Rename TCPV4 to TCP and UDPV4 to UDP.

  • STACKV4 is now called STACK (better name anyone?). Since it would be
    useful to run both IPv4 and IPv6 at the same time, this module now
    contains submodules IPV{4,6}, UDP{4,6}, TCPV{4,6} and associated
    functions & types.

  • Removed the function `allocate_frame' from the IP signature.

    In the current IPV4 module this function does two very different
    things: 1) allocates an ethernet frame, and 2) performs address
    resolution. In order to present an uniform interface for IPV4 and
    IPV6 we believe it is better to separate these two functions.
    Furthermore, there is no need to expose packet allocation (which
    happens in the IP layer) to the higher layers. Thus we replaced the
    allocate_frame and the write/writev function by a single
    function called write/writev. The payload to be transmitted is
    passed as value with type buffer -> buffer list. This function
    receives the header of the ethernet frame to be sent and returns the
    whole packet.

  • Added a function checksum to IP which is used to compute checksums
    by upper-layer protocols such as UDP & TCP.

You can merge this Pull Request by running

  git pull https://github.com/nojb/mirage master

Or view, comment on, or merge it at:


Commit Summary

  • Initial support for IPv6

File Changes

Patch Links:

Reply to this email directly or view it on GitHub.

MirageOS-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.