Automatically compute vlans for base card.
This commit is contained in:
@@ -53,6 +53,9 @@ rc_router_ula_prefix_size="48"
|
|||||||
fib_setup_enable="YES"
|
fib_setup_enable="YES"
|
||||||
rc_router_fibs="1"
|
rc_router_fibs="1"
|
||||||
|
|
||||||
|
# The SLA and v4 net addresses for cards start here, incrementing as seen.
|
||||||
|
# This actual value is incremented during the execution of the user directives.
|
||||||
|
rc_router_card_base="0"
|
||||||
|
|
||||||
route_policy_enable="YES"
|
route_policy_enable="YES"
|
||||||
route_policy_file="${rc_router_gen_dir}/pf.route-policies.conf"
|
route_policy_file="${rc_router_gen_dir}/pf.route-policies.conf"
|
||||||
|
|||||||
@@ -299,12 +299,25 @@ _emit_dhcpv6_for_isp()
|
|||||||
do
|
do
|
||||||
_iface=`echo ${_iface_desc} | sed -e 's;/.*$;;'`
|
_iface=`echo ${_iface_desc} | sed -e 's;/.*$;;'`
|
||||||
_sla=`echo ${_iface_desc} | sed -e 's;^.*/;;'`
|
_sla=`echo ${_iface_desc} | sed -e 's;^.*/;;'`
|
||||||
|
|
||||||
|
# Raw cards use a special rule.
|
||||||
|
if [ -z "${_sla}" ]
|
||||||
|
then
|
||||||
|
eval "_sla=\${vlan_for_card_base_${_iface_desc}}"
|
||||||
|
fi
|
||||||
_emit_dhcpv6_for_iface ${_iface} ${_sla}
|
_emit_dhcpv6_for_iface ${_iface} ${_sla}
|
||||||
done
|
done
|
||||||
for _iface in ${_isp_list}
|
for _iface in ${_isp_list}
|
||||||
do
|
do
|
||||||
_vlan=`echo ${_iface} | sed -e 's/^.*\.//'`
|
_vlan=`echo ${_iface} | sed -e 's/^.*\.//'`
|
||||||
_num=`echo ${_vlan} | sed -e 's/\([0-9]\)0\([0-9]\)/\1\2/'`
|
if [ "${_vlan}" = "${_iface}" ]
|
||||||
|
then
|
||||||
|
_compute_card_base ${_iface}
|
||||||
|
_num=${_vlan}
|
||||||
|
else
|
||||||
|
_num=`echo ${_vlan} | sed -e 's/\([0-9]\)0\([0-9]\)/\1\2/'`
|
||||||
|
fi
|
||||||
|
|
||||||
_vlan_sla=`printf "%d" 0x${_num}`
|
_vlan_sla=`printf "%d" 0x${_num}`
|
||||||
_emit_dhcpv6_for_iface ${_iface} ${_vlan_sla}
|
_emit_dhcpv6_for_iface ${_iface} ${_vlan_sla}
|
||||||
done
|
done
|
||||||
@@ -463,22 +476,49 @@ _emit_dhcpv4()
|
|||||||
do
|
do
|
||||||
_iface_root=$( echo ${_iface} | sed -e 's/\.[0-9][0-9]*//' )
|
_iface_root=$( echo ${_iface} | sed -e 's/\.[0-9][0-9]*//' )
|
||||||
_vlan=$( echo ${_iface} | sed -e 's/[a-z][a-z]*[0-9][0-9]*\.//' )
|
_vlan=$( echo ${_iface} | sed -e 's/[a-z][a-z]*[0-9][0-9]*\.//' )
|
||||||
|
_echo "In building for _iface_root:<${_iface_root}> we first found _vlan:<${_vlan}>"
|
||||||
|
if [ "${_vlan}" = "${_iface_root}" ]
|
||||||
|
then
|
||||||
|
_compute_card_base ${_iface_root}
|
||||||
|
fi
|
||||||
|
|
||||||
|
_echo "Emitting _iface_root:<${_iface_root}> and _vlan:<${_vlan}>"
|
||||||
|
|
||||||
|
|
||||||
_emit_dhcpv4_for_iface ${_iface_root} ${_vlan} >> ${_dhcp_file}
|
_emit_dhcpv4_for_iface ${_iface_root} ${_vlan} >> ${_dhcp_file}
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_compute_card_base()
|
||||||
|
{
|
||||||
|
_echo "Compute card base called with <${*}>"
|
||||||
|
_compute_card_base_for_card="${1}"
|
||||||
|
eval _local_vlan="\${vlan_for_card_base_${_compute_card_base_for_card}}"
|
||||||
|
_echo "First read for <${_compute_card_base_for_card}> found <${_local_vlan}>"
|
||||||
|
if [ -z "${_local_vlan}" ]
|
||||||
|
then
|
||||||
|
_echo "Override of <${_local_vlan}> ${_compute_card_base_for_card} to <${rc_router_card_base}>"
|
||||||
|
_local_vlan="${rc_router_card_base}"
|
||||||
|
rc_router_card_base=$(( ${rc_router_card_base} + 1 ))
|
||||||
|
eval vlan_for_card_base_${_compute_card_base_for_card}="${_local_vlan}"
|
||||||
|
fi
|
||||||
|
_vlan=${_local_vlan}
|
||||||
|
}
|
||||||
|
|
||||||
add_v4_net()
|
add_v4_net()
|
||||||
{
|
{
|
||||||
_compute_nets $*
|
_compute_nets $*
|
||||||
_card_and_vlan="${_card}_${_vlan}"
|
_card_and_vlan="${_card}_${_vlan}"
|
||||||
_card_dot_vlan="${_card}.${_vlan}"
|
_card_dot_vlan="${_card}.${_vlan}"
|
||||||
_echo "In v4 net for ${_card_and_vlan} with ${_card_dot_vlan}"
|
_echo "In v4 net for ${_card_and_vlan} with ${_card_dot_vlan}"
|
||||||
|
_vlan_arg="${_vlan}"
|
||||||
if [ ${_vlan} -ne 0 ]
|
if [ ${_vlan} -ne 0 ]
|
||||||
then
|
then
|
||||||
add_vlan $_card $_vlan
|
add_vlan $_card $_vlan
|
||||||
else
|
else
|
||||||
_card_and_vlan="${_card}"
|
_card_and_vlan="${_card}"
|
||||||
_card_dot_vlan="${_card}"
|
_card_dot_vlan="${_card}"
|
||||||
|
_compute_card_base ${_card}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_class_group=""
|
_class_group=""
|
||||||
@@ -486,7 +526,19 @@ add_v4_net()
|
|||||||
then
|
then
|
||||||
_class_group="group ${_class}"
|
_class_group="group ${_class}"
|
||||||
fi
|
fi
|
||||||
eval ifconfig_${_card_and_vlan}=\"$(compute_v4_net ${_card} ${_vlan}) group internal ${_class_group}\"
|
|
||||||
|
_extra_opts=""
|
||||||
|
if [ "${_vlan_arg}" = "0" ]
|
||||||
|
then
|
||||||
|
eval _extra_opts="\${${_card}_extra_opts}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${_extra_address}" ]
|
||||||
|
then
|
||||||
|
eval ifconfig_${_card_and_vlan}=\"$(compute_v4_net ${_card} ${_vlan}) group internal ${_class_group} ${_extra_opts}\"
|
||||||
|
else
|
||||||
|
eval ifconfig_${_card_and_vlan}=\"${_extra_address} group internal ${_class_group} ${_extra_opts}\"
|
||||||
|
fi
|
||||||
eval dhcpd_ifaces=\"${dhcpd_ifaces} ${_card_dot_vlan}\"
|
eval dhcpd_ifaces=\"${dhcpd_ifaces} ${_card_dot_vlan}\"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -509,12 +561,14 @@ add_v6_net()
|
|||||||
_compute_nets $*
|
_compute_nets $*
|
||||||
_card_and_vlan="${_card}_${_vlan}"
|
_card_and_vlan="${_card}_${_vlan}"
|
||||||
_card_dot_vlan="${_card}.${_vlan}"
|
_card_dot_vlan="${_card}.${_vlan}"
|
||||||
|
_vlan_arg="${_vlan}"
|
||||||
if [ ${_vlan} -ne 0 ]
|
if [ ${_vlan} -ne 0 ]
|
||||||
then
|
then
|
||||||
add_vlan $_card $_vlan
|
add_vlan $_card $_vlan
|
||||||
else
|
else
|
||||||
_card_and_vlan="${_card}"
|
_card_and_vlan="${_card}"
|
||||||
_card_dot_vlan="${_card}"
|
_card_dot_vlan="${_card}"
|
||||||
|
_compute_card_base ${_card}
|
||||||
fi
|
fi
|
||||||
add_rtadv ${_card_dot_vlan}
|
add_rtadv ${_card_dot_vlan}
|
||||||
|
|
||||||
@@ -526,7 +580,13 @@ add_v6_net()
|
|||||||
_class_group="group ${_class}"
|
_class_group="group ${_class}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
eval ifconfig_${_card_and_vlan}_ipv6=\"inet6 fe80::1/64 group internal ${_class_group}\"
|
_extra_opts=""
|
||||||
|
if [ "${_vlan_arg}" = "0" ]
|
||||||
|
then
|
||||||
|
eval _extra_opts="\${${_card}_extra_opts}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
eval ifconfig_${_card_and_vlan}_ipv6=\"inet6 fe80::1/64 group internal ${_class_group} ${_extra_opts}\"
|
||||||
|
|
||||||
_next_alias=0
|
_next_alias=0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user