From eecb2b4629d36fd971aa5456df8dedbddf3f19e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Tue, 11 Jan 2022 16:12:06 +0100 Subject: [PATCH] __bird_ospf: ass -extra-area-configuration parameter --- type/__bird_ospf/man.rst | 13 +++++++------ type/__bird_ospf/manifest | 17 +++++++++++++++++ type/__bird_ospf/parameter/optional | 1 + type/__bird_ospf/parameter/optional_multiple | 1 + type/__bird_ospf/parameter/required_multiple | 1 - 5 files changed, 26 insertions(+), 7 deletions(-) delete mode 100644 type/__bird_ospf/parameter/required_multiple diff --git a/type/__bird_ospf/man.rst b/type/__bird_ospf/man.rst index f3f4c9a..66c2e4a 100644 --- a/type/__bird_ospf/man.rst +++ b/type/__bird_ospf/man.rst @@ -24,12 +24,6 @@ import export 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 ------------------- description @@ -39,12 +33,19 @@ instance-id An OSPF instance ID, allowing several OSPF instances to run on the same links. +extra-area-configuration + Configuration string added to the `area` section of the OSPF configuration. + OPTIONAL MULTIPLE PARAMETERS ---------------------------- stubnet 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 -------- cdist-type__bird_core(7) diff --git a/type/__bird_ospf/manifest b/type/__bird_ospf/manifest index 211e91d..68d9c16 100755 --- a/type/__bird_ospf/manifest +++ b/type/__bird_ospf/manifest @@ -44,6 +44,21 @@ then instance_id="$(cat "${__object:?}/parameter/instance-id")" 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" \ --mode 0640 --owner root --group bird \ --source - << EOF @@ -59,6 +74,8 @@ $([ -n "${instance_id?}" ] && printf "\tinstance id %s;\n" "${instance_id?}") area 0 { $(sed -e 's/^/\t\tinterface "/' -e 's/$/";/' "${__object:?}/parameter/interface") $(sed -e 's/^/\t\tsubnet /' -e 's/$/;/' "${__object:?}/parameter/subnet") + + $extra_area_configuration }; } EOF diff --git a/type/__bird_ospf/parameter/optional b/type/__bird_ospf/parameter/optional index cf6dd53..880f228 100644 --- a/type/__bird_ospf/parameter/optional +++ b/type/__bird_ospf/parameter/optional @@ -1,2 +1,3 @@ description instance-id +extra-area-configuration diff --git a/type/__bird_ospf/parameter/optional_multiple b/type/__bird_ospf/parameter/optional_multiple index ed3f25a..8e5902d 100644 --- a/type/__bird_ospf/parameter/optional_multiple +++ b/type/__bird_ospf/parameter/optional_multiple @@ -1 +1,2 @@ stubnet +interface diff --git a/type/__bird_ospf/parameter/required_multiple b/type/__bird_ospf/parameter/required_multiple deleted file mode 100644 index b529896..0000000 --- a/type/__bird_ospf/parameter/required_multiple +++ /dev/null @@ -1 +0,0 @@ -interface