]> git.ipfire.org Git - people/ms/network.git/blob - src/functions/functions.bird
bird: Add some generic configuration file
[people/ms/network.git] / src / functions / functions.bird
1 #!/bin/bash
2 ###############################################################################
3 # #
4 # IPFire.org - A linux based firewall #
5 # Copyright (C) 2018 IPFire Network Development Team #
6 # #
7 # This program is free software: you can redistribute it and/or modify #
8 # it under the terms of the GNU General Public License as published by #
9 # the Free Software Foundation, either version 3 of the License, or #
10 # (at your option) any later version. #
11 # #
12 # This program is distributed in the hope that it will be useful, #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15 # GNU General Public License for more details. #
16 # #
17 # You should have received a copy of the GNU General Public License #
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
19 # #
20 ###############################################################################
21
22 BIRD_CONF="/etc/bird.conf"
23
24 bird_start() {
25 service_start "bird.service"
26 }
27
28 bird_stop() {
29 service_stop "bird.service"
30 }
31
32 bird_reload() {
33 service_reload "bird.service"
34 }
35
36 bird_generate_config() {
37 log DEBUG "Write BIRD configuration file"
38
39 # Write header
40 config_header "bird" > ${BIRD_CONF}
41
42 # Write some basic settings
43 local proto
44 (
45 print "# Log everything to syslog"
46 print "log syslog all;"
47 print
48
49 print "# Turn on internal watchdog"
50 print "watchdog warning 5s;"
51 print "watchdog timeout 30s;"
52 print
53
54 print "# Define default route tables"
55 print "ipv6 table master6;"
56 print "ipv4 table master4;"
57
58 print "# Enable device configuration"
59 print "protocol device {}"
60 print
61
62 print "# Export all routes to kernel"
63 for proto in ipv6 ipv4; do
64 print "protocol kernel {"
65 print " ${proto} {"
66 print " table ${proto/ipv/master};"
67 print " export all;"
68 print " };"
69 print " learn;"
70 print "}"
71 print
72 done
73 ) >> ${BIRD_CONF}
74 }