Sebastien Roy wrote:
My take on this is that create-interface is sufficient for all
autoconfigured IPv6 address management. By default, when an IP
interface is created, a link-local IPv6 address is implicitly created on
that interface and autoconfigured IPv6 addresses are managed by in.ndpd
automatically when that link-local address is brought up. With "IPv6 on
by default" (which naturally falls out of this design), there should be
no need to explicitly do anything to "enable" the autoconfiguration of
any IPv6 addresses. There should, however, be a way to turn it off,
perhaps using an interface property.
First of all I think that the model must be uniform across IPv4 and
IPv6, so the above would only make sense if DHCPv4 was implicit and
always there.
If we think there is utility in separating interface management from
address management (Do we? Your question implies that we might not want
to keep them separate) then having the ability to ask libipadm to create
an interface without any addresses would make sense.
Note that the CLI can still do implicit interface creation so that
ipadm create-ipv6 bge0
is all that is needed to get interface created (if it didn't already
exist) and the link locals, SLAAC, and DHCPv6 addresses in place.
But if the CLI and/or library is unable to create an interface without
creating IP address(es) on that interface then I think the abstraction
is incomplete, and we might find that an obstacle as the system evolves.
If the user wants to do things like use a non-default interface-ID, then
I think that should also be an interface property.
While it might be expedient to shuffle all the unusual things into a
property, I think it would be a mistake in this case. What is key to any
system is how the objects are named, so that we can have operations on
those objects. And I don't think it makes sense having different part of
the name live in properties, nor do I think we should carry the logical
interface name forward since it can't handle multiple (IPv6) addresses
being associated with a single address object. For static IP addresses
the tuple <IP interface, IP address> is sufficient to name the address
object. For dynamic ones we need something different.
Erik
_______________________________________________
networking-discuss mailing list
[email protected]