I'm submitting the following fast-track for Girish Moodalbail, the timer 
is set for 03/09/2010.  This case depends on PSARC 2009/306, the release 
binding is Minor.

1. Introduction:
================

In the course of completing the implementation of Brussels II - ipadm
and libipadm (PSARC 2009/306), few interface changes were made. They
are all documented below.

1.1 Following new interfaces were added since PSARC 2009/306.
-------------------------------------------------------------
------------------------------------------------------------------------------
Interface               Classification          Comments
------------------------------------------------------------------------------
ipadm down-addr         Committed               See section 5.6 of [1]
ipadm up-addr           Committed               See section 5.7 of [1]
ipadm reset-addrprop    Committed               See section 5.8 of [1]
ipadm disable-if        Committed               See section 6.0 of [1]
ipadm enable-if         Committed               See section 6.0 of [1]
ipadm disable-addr      Committed               See section 6.0 of [1]
ipadm enable-addr       Committed               See section 6.0 of [1]

SIOCGLIFDADSTATE        Consolidation
                        Private                 See section 5.2 of [1]

SIOCSLIFPREFIX          Consolidation
                        Private                 See section 5.1.2 of [1]

IFF_NOLINKLOCAL         Consolidation
                        Private                 See section 4.1 of [1]

1.2 updates to 'show-if', 'show-addr', 'show-[if|addr]prop' parsable output
---------------------------------------------------------------------------

     * '-P' option has been removed from all of the 'show-*'
       subcommands. All the 'show-*' subcommands will always show both
       CURRENT and PERSISTENT values.

1.2.1 updates to 'show-if' parsable output
------------------------------------------
[For more details, see section 4.3 of [1] and 'ipadm show-if' in [2]]

     * MTU,FLAGS column has been removed
     * CURRENT and PERSISTENT column, which represents both current and
       persistent flags are added.

1.2.2 updates to 'show-addr' parsable output
--------------------------------------------
[For more details, see section 5.2 of [1] and 'ipadm show-addr' in [2]]

     * Following column headers are renamed:
        ** s/OBJECT/ADDROBJ/
        ** s/ORIGIN/TYPE/
     * FLAGS column has been removed
     * Following changes are made to STATE column
        ** 'invalid' is renamed to 'down'
        ** 'unknown' and 'preferred' state is removed
        ** 'disabled' state is added.
     * New CURRENT and PERSISTENT columns, which represents current and
       persistent flags respectively are added.

1.3 updates to subcommand options
----------------------------------
[Refer to ipadm man page [2] for more details]

     * 'create-if' subcommand will not take '-f inet|inet6' option
     * 'delete-if' subcommand will not take '-t' or '-f inet|inet6'
       option
     * 'create-addr -T addrconf' takes '-i' option instead of '-I'
     * 'create-addr -T dhcp' will not take '-p' option
     * 'refresh-addr' will take -i option to perform DHCP inform.
     * 'delete-addr' will not take '-t' option
     * 'set-ifprop' and 'reset-ifprop' will not take '-f inet|inet6'
       option instead they take '-m protocol' option

1.4 Reduced set of ndd IP/TCP/UDP/SCTP/ICMP tunables
----------------------------------------------------

The number of protocol tunables that will be made public or Committed
has been substantially reduced. The basic premise is to design a
framework that provides persistence of protocol settings and
improvement over the current ndd(1M). Once we have this framework,
more and more tunables can be Committed through PSARC, after
sufficient scrutiny. Following table lists the protocol properties
that will be Committed.

------------------------------------------------------------------------------
Properties              Protocol(s)     Classification  Comments
------------------------------------------------------------------------------

forwarding              ipv4, ipv6      Committed       See [2]
ttl                     ipv4            Committed       See [2]
hoplimit                ipv6            Committed       See [2]


ecn                     tcp             Committed       See [2]
sack                    tcp             Committed       See [2]

recv_maxbuf             
send_maxbuf             tcp, udp, sctp
                        icmp            Committed       See [2]

extra_priv_ports
largest_anon_port
smallest_anon_port      
smallest_nonpriv_port   tcp, udp, sctp  Committed       See [2]

1.5 Modifications to address and interface properties
-----------------------------------------------------

     * Two new address properties, broadcast[2] and deprecated[2] were
       added
     * 'xmit' address property was renamed to 'transmit'
     * 'reasm-timeout' interface property was removed
     * 'rtexchg' interface property was renamed to 'exchange_routes'

1.6 No need for /sbin/netstart binary
--------------------------------------

PSARC 2009/306 proposed using /sbin/netstart to restore persistent
protocol tunables during boot. This process would be started by
init(1M), by reading /etc/inittab, before svc.startd(1M) comes up. The
initial idea was to restore settings close to the execution of
`soconfig(1M)' (soconfig(1M) maps sockets to service providers and
networking applications are useless without the execution of
soconfig(1M))

However, modifying /etc/inittab in the post-SMF world was something
that was not well received and also with IPS obsoleting SVR4
post-install scripts, modifying /etc/inittab during the upgrade path
was not possible. Therefore, we will now restore the persistent
protocol tunables from a SMF script that starts the `ipmgmtd'
daemon. Further `ipmgmtd' daemon is one of the first networking
services to come up and it comes up even before network/loopback. That
way the protocol properties would be re-instantiated before any of the
IP interfaces are plumbed and before any of the networking
applications starts.

1.7 non-contiguous netmask support removed
------------------------------------------

Non-contiguous netmasks are a relic of yesteryear architectures for
which we still retain support in the kernel today, and which create
more complications than they solve. Very few customers use these
today, and when used, they only create confusion.

This is a hindrance for this project, which strives for an API where
addresses are input and displayed in the "address/prefixlen" CIDR
format. Thus, even if ipadm itself will not allow non-contiguous
netmasks, if ifconfig is used to add non-contiguous netmask, ipadm
would be forced to either lie about the mask or otherwise mangle its
output format to display it.

Therefore, this project will be adding checks in the kernel to prevent
such netmasks from being created.

1.8 Obsoleting routeadm(1M) forwarding interface
------------------------------------------------

The routeadm(1M) command is used to administer system-wide
configuration for IP forwarding and routing. It currently uses ndd(1M)
to enable IP forwarding.  Since ndd(1M) does not provide persistence,
the persistence is achieved using a SMF service, for ipv4 it is
svc:/network/ipv4-forwarding:default and for ipv6 it is
svc:/network/ipv6-forwarding:default. The whole purpose of this
service, when enabled, is to execute `ndd -set /dev/ip ip_forwarding
[0|1]`, in short provide persistence.

The ipadm(1M) command, which provides persistence and allows setting
of forwarding (ipadm set-prop -p forwarding=[on|off] ipv[4|6]) is an
obvious fit for this feature. So this project will mark routeadm(1M)
interfaces to enable/disable IPv4/IPv6 forwarding 'Obsolete' and will
eventually EOF that feature. We have updated the routeadm(1M)[3] man
page to reflect the same. Until that point in time, when both the
tools continue to exist, we will modify the SMF script
(/lib/svc/method/svc-forwarding) to invoke ipadm(1M). So that both
routeadm(1M) and ipadm(1M) will be modifying the same repository and
hence will have the same view.

2. References (enclosed in case directory)
==========================================
[1] "Brussels II design document - brussels2_design.pdf
[2] ipadm MAN page - ipadm.1m.txt
[3] routeadm.1m.txt.diffs

Reply via email to