Bug 213408

Summary: /etc/rc.d/netif restart not correctly work
Product: Base System Reporter: Andrii Hromov <andrii.hromov>
Component: confAssignee: Hiroki Sato <hrs>
Status: New ---    
Severity: Affects Many People CC: hrs
Priority: ---    
Version: 10.1-RELEASE   
Hardware: amd64   
OS: Any   

Description Andrii Hromov 2016-10-12 07:16:54 UTC
This script does not correctly overloaded interfaces. When stopping, first dismantle basic user interface of the network then vlans, and at the start of the first vlan then parent interfaces. Here is my solution: 

in the script I made changes to these blocks, and now everything is working properly

...
network_start()
{
        local _if

        # Set the list of interfaces to work on.
        #
        cmdifn=$*

        if [ -z "$cmdifn" ]; then
                #
                # We're operating as a general network start routine.
                #

                # disable SIGINT (Ctrl-c) when running at startup
                trap : 2

                # Create Fast EtherChannel interfaces
                fec_up
        fi

        # Rename interfaces.
        ifnet_rename $cmdifn

        # Configure the interface(s).
        network_common ifn_start $cmdifn

        # Create cloned interfaces
        clone_up $cmdifn

        if [ -f /etc/rc.d/ipfilter ] ; then
                # Resync ipfilter
                /etc/rc.d/ipfilter quietresync
        fi
        if [ -f /etc/rc.d/bridge -a -n "$cmdifn" ] ; then
                /etc/rc.d/bridge start $cmdifn
        fi
        if [ -f /etc/rc.d/routing -a -n "$cmdifn" ] ; then
                for _if in $cmdifn; do
                        /etc/rc.d/routing start any $_if
                done
        fi
}
...



...
network_stop0()
{
        local _if

        # Set the list of interfaces to work on.
        #
        cmdifn=$*

        # Destroy cloned interfaces
        if [ -n "$_clone_down" ]; then
                clone_down $cmdifn
        fi

        # Deconfigure the interface(s)
        network_common ifn_stop $cmdifn

        if [ -f /etc/rc.d/routing -a -n "$cmdifn" ] ; then
                for _if in $cmdifn; do
                        /etc/rc.d/routing stop any $_if
                done
        fi
}
...