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 }