Hello all,
As IPv6 Addressing Architectures draft is being revised, I took the time
to go through the new spec and check (not very thoroughly, though) what
appears to be changed/missing (and some left over from the original spec).
(http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-addr-arch-v3-06.txt):
--8<--
2.5.2
The address 0:0:0:0:0:0:0:0 is called the unspecified address. It
must never be assigned to any node.
==> should adding this to interfaces be forbidden in
addrconf.c:ipv6_add_addr?
The unspecified address must not be used as the destination address
of IPv6 packets or in IPv6 Routing Headers. An IPv6 packet with a
source address of unspecified must never be forwarded by an IPv6
router.
==> the unspecified source address must not be forwarded, check it in
route.c:ipv6_route_input?
==> also check that unspecified is not destination address? (one could
argue that it's not router's business to police this, though)
2.5.3
The unicast address 0:0:0:0:0:0:0:1 is called the loopback address.
It may be used by a node to send an IPv6 packet to itself. It may
never be assigned to any physical interface.
==> should adding this to interfaces other than loopback be forbidden in
addrconf.c:ipv6_add_addr or the like? (probably not worth the pain)
The loopback address must not be used as the source address in IPv6
packets that are sent outside of a single node. An IPv6 packet with
a destination address of loopback must never be sent outside of a
single node and must never be forwarded by an IPv6 router. A packet
received on an interface with destination address of loopback must be
dropped.
==> dst and source loopback address should be checked in
route.c:ipv6_route_input ?
2.5.6
Routers must not forward any packets with link-local source or
destination addresses to other links.
==> destination already apparently checked in route.c:ipv6_route_input,
source too?
Routers must not forward any packets with site-local source or
destination addresses outside of the site.
==> not checked, but semantics of site site-scoped routing are quite
fuzzy..
2.6
o An anycast address must not be used as the source address of an
IPv6 packet.
==> check in source address selection (can't check otherwise) for
IPV6_ADDR_ANYCAST; addrconf.c:ipv6_get_saddr ?
Packets sent to the Subnet-Router anycast address will be delivered
to one router on the subnet. All routers are required to support the
Subnet-Router anycast addresses for the subnets to which they have
interfaces.
==> Anycast listening not supported yet (shouldn't be a big problem, but
userland tools lack the mechanism), but could add a comment.
2.7
Multicast addresses must not be used as source addresses in IPv6
packets or appear in any Routing header.
==> Multicast src checked in ipv6_route_input, need to check otherwise?;
routing header?
==> Check that multicast address can't be assigned to an interface, like
USAGI: addrconf.c.diff r1.69
Routers must not forward any multicast packets beyond of the scope
indicated by the scop field in the destination multicast address.
==> Multicast routing not supported yet, could add a comment so this
won't be forgotten.
2.8
A router is required to recognize all addresses that a host is
required to recognize, plus the following addresses as identifying.
itself:
o The Subnet-Router Anycast Addresses for all interfaces for which
it is configured to act as a router.
o The All-Routers Multicast Addresses defined in section 2.7.1.
==> Subnet-Router Anycast, when anycast support is added.
==> All-Routers Multicast Address added by the kernel
(as discussed on netdev); this is good because that way e.g. daemons
requiring these need not monitor interface state and rejoin if
interfaces are brough up and down
--
Pekka Savola "Tell me of difficulties surmounted,
Netcore Oy not those you stumble over and fall"
Systems. Networks. Security. -- Robert Jordan: A Crown of Swords
|