Since changing to trim blocks the output of the bfd code no longer matches what is required by FRR.
And example is removing peers it makes this configuration file:
no peer 172.31.50.1 interface vtun0 no peer 172.31.51.1 interface vtun1 no peer 172.31.52.1 interface vtun2
It should output each on their own line:
no peer 172.31.50.1 interface vtun0
no peer 172.31.51.1 interface vtun1
no peer 172.31.52.1 interface vtun2
The template bfd.frr.tmpl could be changed to:
!
bfd
{% for peer in old_peers %}
no peer {{ peer.remote }}{% if peer.multihop %} multihop{% endif %}{% if peer.src_addr %} local-address {{ peer.src_addr }}{% endif %}{% if peer.src_if %} interface {{ peer.src_if }}{% endif %}
{% endfor %}
!
{% for peer in new_peers %}
peer {{ peer.remote }}{% if peer.multihop %} multihop{% endif %}{% if peer.src_addr %} local-address {{ peer.src_addr }}{% endif %}{% if peer.src_if %} interface {{ peer.src_if }}{% endif %}
detect-multiplier {{ peer.multiplier }}
receive-interval {{ peer.rx_interval }}
transmit-interval {{ peer.tx_interval }}
{% if peer.echo_mode %}
echo-mode
{% endif %}
{% if peer.echo_interval != '' %}
echo-interval {{ peer.echo_interval }}
{% endif %}
{% if not peer.shutdown %}no {% endif %}shutdown
{% endfor %}
!