#!/bin/sh -e # # 2021 Joachim Desroches (joachim.desroches@epfl.ch) # # This file is part of cdist. # # cdist is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # cdist is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # os=$(cat "${__global:?}/explorer/os") case "$os" in "alpine"|"debian"|"ubuntu") confdir="/etc/bird.d" ;; *) printf "Your operating system (%s) is currently not supported by __bird_bgp\n" "$os" >&2 printf "Please contribute an implementation for it if you can.\n" >&2 exit 1 ;; esac # Required parameters local_as="$(cat "${__object:?}"/parameter/local-as)" export local_as neighbor_as="$(cat "${__object:?}"/parameter/neighbor-as)" export neighbor_as neighbor_ip="$(cat "${__object:?}"/parameter/neighbor-ip)" export neighbor_ip # Optional parameters description= if [ -f "${__object:?}"/parameter/description ]; then description="$(cat "${__object:?}"/parameter/description)" fi export description direct= if [ -f "${__object:?}"/parameter/direct ]; then direct="true" fi export direct ipv4_extended_next_hop= if [ -f "${__object:?}"/parameter/ipv4-extended-next-hop ]; then ipv4_extended_next_hop="true" fi export ipv4_extended_next_hop ipv6_extended_next_hop= if [ -f "${__object:?}"/parameter/ipv6-extended-next-hop ]; then ipv6_extended_next_hop="true" fi export ipv6_extended_next_hop local_ip= if [ -f "${__object:?}"/parameter/local-ip ]; then local_ip="$(cat "${__object:?}"/parameter/local-ip)" fi export local_ip password= if [ -f "${__object:?}"/parameter/password ]; then password="$(cat "${__object:?}"/parameter/password)" fi export password ipv4_import= if [ -f "${__object:?}"/parameter/ipv4-import ]; then ipv4_import="$(cat "${__object:?}"/parameter/ipv4-import)" fi export ipv4_import ipv4_export= if [ -f "${__object:?}"/parameter/ipv4-export ]; then ipv4_export="$(cat "${__object:?}"/parameter/ipv4-export)" fi export ipv4_export ipv6_import= if [ -f "${__object:?}"/parameter/ipv6-import ]; then ipv6_import="$(cat "${__object:?}"/parameter/ipv6-import)" fi export ipv6_import ipv6_export= if [ -f "${__object:?}"/parameter/ipv6-export ]; then ipv6_export="$(cat "${__object:?}"/parameter/ipv6-export)" fi export ipv6_export # Run template "${__type:?}"/files/template.sh > "${__files:?}/bgp-${__object_id:?}.conf" # Install resulting configuration __file "${confdir:?}"/bgp-"${__object_id:?}".conf \ --mode 0640 --owner root --group bird \ --source "${__files:?}/bgp-${__object_id:?}.conf"