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]

Reply via email to