__bird_ospf: ass -extra-area-configuration parameter

This commit is contained in:
fnux 2022-01-11 16:12:06 +01:00
parent 023206d3d9
commit eecb2b4629
No known key found for this signature in database
GPG Key ID: 4502C902C00A1E12
5 changed files with 26 additions and 7 deletions

View File

@ -24,12 +24,6 @@ import
export export
The keyword or filter to decide what to export in the above channel. The keyword or filter to decide what to export in the above channel.
REQUIRED MULTIPLE PARAMETERS
----------------------------
interface
An interface to include in OSPF area 0.
OPTIONAL PARAMETERS OPTIONAL PARAMETERS
------------------- -------------------
description description
@ -39,12 +33,19 @@ instance-id
An OSPF instance ID, allowing several OSPF instances to run on the same An OSPF instance ID, allowing several OSPF instances to run on the same
links. links.
extra-area-configuration
Configuration string added to the `area` section of the OSPF configuration.
OPTIONAL MULTIPLE PARAMETERS OPTIONAL MULTIPLE PARAMETERS
---------------------------- ----------------------------
stubnet stubnet
Add an optionless stubnet definition to the configuration. Add an optionless stubnet definition to the configuration.
interface
An interface to include in OSPF area 0. Is required unless
extra-area-configuration is set.
SEE ALSO SEE ALSO
-------- --------
cdist-type__bird_core(7) cdist-type__bird_core(7)

View File

@ -44,6 +44,21 @@ then
instance_id="$(cat "${__object:?}/parameter/instance-id")" instance_id="$(cat "${__object:?}/parameter/instance-id")"
fi fi
extra_area_configuration=
if [ -f "${__object:?}/parameter/extra-area-configuration" ];
then
extra_area_configuration="$(cat "${__object:?}/parameter/extra-area-configuration")"
if [ "$extra_area_configuration" = "-" ]; then
extra_area_configuration=$(cat "$__object/stdin")
fi
fi
if [ ! -f "${__object:?}/parameter/interface" ] && [ -z "$extra_area_configuration" ]; then
echo "Either --interface or --extra-area-configuration must be set." >&2
exit 1
fi
__file "${confdir:?}/ospf-${__object_id:?}.conf" \ __file "${confdir:?}/ospf-${__object_id:?}.conf" \
--mode 0640 --owner root --group bird \ --mode 0640 --owner root --group bird \
--source - << EOF --source - << EOF
@ -59,6 +74,8 @@ $([ -n "${instance_id?}" ] && printf "\tinstance id %s;\n" "${instance_id?}")
area 0 { area 0 {
$(sed -e 's/^/\t\tinterface "/' -e 's/$/";/' "${__object:?}/parameter/interface") $(sed -e 's/^/\t\tinterface "/' -e 's/$/";/' "${__object:?}/parameter/interface")
$(sed -e 's/^/\t\tsubnet /' -e 's/$/;/' "${__object:?}/parameter/subnet") $(sed -e 's/^/\t\tsubnet /' -e 's/$/;/' "${__object:?}/parameter/subnet")
$extra_area_configuration
}; };
} }
EOF EOF

View File

@ -1,2 +1,3 @@
description description
instance-id instance-id
extra-area-configuration

View File

@ -1 +1,2 @@
stubnet stubnet
interface

View File

@ -1 +0,0 @@
interface