Powered by SmartDoc

4.2.1 まず epairx[a,b]を起動時に作る

これをどうすれば良いのか?おそらく/etc/rc.d/netifあたりをいじらないといけないのか?と思っていたが,ふと/etc/network.subrを見るとclone_up()の中にその回答があった:-)

# clone_up
#       Create cloneable interfaces.
#
clone_up()
{
        local _list ifn ifopt _iflist _inet6 _n tmpargs
        _list=
        _iflist=$*

        # create_args_IF
        for ifn in ${cloned_interfaces}; do
                # Parse ifn:ifopt.
                OIFS=$IFS; IFS=:; set -- $ifn; ifn=$1; ifopt=$2; IFS=$OIFS
                case $_iflist in
                ""|$ifn|$ifn\ *|*\ $ifn\ *|*\ $ifn)     ;;
                *)      continue ;;
                esac
                case $ifn in
                epair[0-9]*)
                        # epair(4) uses epair[0-9] for creation and
                        # epair[0-9][ab] for configuration.
                        #
                        # Skip if ${ifn}a or ${ifn}b already exist.
                        if ${IFCONFIG_CMD} ${ifn}a > /dev/null 2>&1; then
                                continue
                        elif ${IFCONFIG_CMD} ${ifn}b > /dev/null 2>&1; then
                                continue
                        fi
                        ${IFCONFIG_CMD} ${ifn} create \
                            `get_if_var ${ifn} create_args_IF`
                        if [ $? -eq 0 ]; then
                                _list="$_list ${ifn}a ${ifn}b"
                        fi
                ;;
                *)
                        # Skip if ${ifn} already exists.
                        if ${IFCONFIG_CMD} $ifn > /dev/null 2>&1; then
                                continue
                        fi
                        ${IFCONFIG_CMD} ${ifn} create \
                            `get_if_var ${ifn} create_args_IF`
                        if [ $? -eq 0 ]; then
                                _list="$_list $ifn"
                        fi
                esac
        done
        for ifn in ${gif_interfaces}; do
                # Parse ifn:ifopt.
                OIFS=$IFS; IFS=:; set -- $ifn; ifn=$1; ifopt=$2; IFS=$OIFS
                case $_iflist in
                ""|$ifn|$ifn\ *|*\ $ifn\ *|*\ $ifn)     ;;
                *)      continue ;;
                esac
                # Skip if ifn already exists.
                if ${IFCONFIG_CMD} $ifn > /dev/null 2>&1; then
                        continue
                fi
                case $ifn in
                gif[0-9]*)
                        ${IFCONFIG_CMD} $ifn create
                ;;
                *)
                        _n=$(${IFCONFIG_CMD} gif create)
                        ${IFCONFIG_CMD} $_n name $ifn
                ;;
                esac
                if [ $? -eq 0 ]; then
                        _list="$_list $ifn"
                        tmpargs=$(get_if_var $ifn gifconfig_IF)
                        _inet6=''
                        case "$tmpargs" in
                        '')
                        ;;
                        inet6[[:space:]]*)
                                tmpargs=${tmpargs#inet6}
                                _inet6=inet6
                                # FALLTHROUGH
                        ;&
                        *)
                                ${IFCONFIG_CMD} $ifn $_inet6 tunnel $tmpargs
                        ;;
                        esac
                fi
        done
        if [ -n "${_list# }" ]; then
                echo "Created clone interfaces: ${_list# }."
        fi
        debug "Cloned: ${_list# }"
}

つまり,