diff options
Diffstat (limited to '')
-rwxr-xr-x | setup.sh | 32 |
1 files changed, 15 insertions, 17 deletions
@@ -39,7 +39,7 @@ run sysctl net.ipv6.conf.all.disable_ipv6=0 net.ipv6.conf.default.disable_ipv6=0 ospf="$(haskey OSPF)" escapebird() { - sed -e 's/\\/\\\\/g;s/"/\\"/g' + sed -e 's/\\/\\\\/g;s/"/\\"/g' } if [ -n "$ospf" ]; then @@ -47,7 +47,7 @@ if [ -n "$ospf" ]; then touch /var/log/bird.log chown bird:bird /var/log/bird.log - + selfas=$(getval AS) ( cat <<EOF @@ -56,21 +56,13 @@ log "/var/log/bird.log" all; $(getval RouterID | while read -r line; do echo "router id $line;"; done) protocol kernel { - ipv4 { - export filter { if source ~ [RTS_BGP, RTS_OSPF, RTS_OSPF_IA, RTS_OSPF_EXT1, RTS_OSPF_EXT2] then accept; else reject; }; - import all; - }; - learn; - scan time 10; + ipv4 { export all; }; } + protocol kernel { - ipv6 { - export filter { if source ~ [RTS_BGP, RTS_OSPF, RTS_OSPF_IA, RTS_OSPF_EXT1, RTS_OSPF_EXT2] then accept; else reject; }; - import all; - }; - learn; - scan time 10; + ipv6 { export all; }; } + protocol device { } @@ -79,6 +71,9 @@ protocol direct { ipv6; } +protocol static { + ipv4; +} EOF if [ -n "$ospf" ]; then @@ -89,6 +84,7 @@ EOF val="$(getval "interface $inter" OSPF)" if [ "$?" = "0" ]; then echo " interface \"$(printf "%s" "$inter" | escapebird)\" {" + echo " type ptp;" if [ -n "$val" ]; then echo " $val;"; fi @@ -102,19 +98,21 @@ EOF protocol ospf v3 ospf4 { ipv4 { import all; - export filter { if source ~ [RTS_DEVICE, RTS_INHERIT] then accept; else reject; }; + export filter { if source ~ [RTS_DEVICE, RTS_INHERIT] && net ~ [$(getval "Subnet" | grep -v ':' | while read -r line; do printf "%s+," "$line"; done | sed 's/,$//')] then accept; else reject; }; }; $interfacelist } protocol ospf v3 ospf6 { ipv6 { import all; - export filter { if source ~ [RTS_DEVICE, RTS_INHERIT] then accept; else reject; }; + export filter { if source ~ [RTS_DEVICE, RTS_INHERIT] && net ~ [$(getval "Subnet" | grep ':' | while read -r line; do printf "%s+," "$line"; done | sed 's/,$//')] then accept; else reject; }; }; $interfacelist } EOF - ) > /etc/bird.conf + fi +) > /etc/bird.conf + chown root:bird /etc/bird.conf chmod 640 /etc/bird.conf |