これをどうすれば良いのか?おそらく/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# }"
}
つまり,
rc.confでcloned_interfacesに同時にepair*を指定すれば良いだけ
たとえば cloned_interfaces="bridge0 epair0" とすれば, epair0[a,b] が無ければ自動的に epair0[a,b] を生成してから bridge0 を作る操作をやってくれる.