* Corrected Freifunk NAT rules
[project/luci.git] / module / admin-core / contrib / init.d / luci_freifunk
1 #!/bin/sh /etc/rc.common
2 START=70
3
4 start() {
5         include /lib/network
6         scan_interfaces
7         
8         
9         ### Read interface names
10         config_get wanif wan ifname
11         config_get lanif lan ifname
12         config_get ffif  ff  ifname
13         
14         
15         [ -n "$ffif" ] || return 0
16                 
17         
18         ### Read from config
19         config_load freifunk
20         
21         config_get_bool internal routing internal
22         [ -n "$wanif" ] && config_get_bool internet routing internal
23         
24         
25         ### Freifunk to Freifunk
26         [ "$internal" -gt 0 ] && {
27                 iptables -A forwarding_rule -i "$ffif" -o "$ffif" -j ACCEPT
28         }
29         
30         ### Lan to Freifunk     
31         [ -n "$lanif" ] && {
32                 config_get ipaddr lan ipaddr
33                 config_get netmask lan netmask
34                 
35                 eval "$(ipcalc.sh $ipaddr $netmask)"
36                 
37                 iptables -A forwarding_rule -i "$lanif" -o "$ffif" -j ACCEPT
38                 iptables -t nat -A postrouting_rule -s "$NETWORK/$PREFIX" -o "$ffif" -j MASQUERADE
39         }
40         
41         ### Freifunk to Wan
42         [ "$internet" -gt 0 ] && {
43                 config_get ipaddr ff ipaddr
44                 config_get netmask ff netmask
45                 
46                 eval "$(ipcalc.sh $ipaddr $netmask)"            
47                 
48                 iptables -A forwarding_rule -i "$ffif" -o "$wanif" -j ACCEPT
49                 iptables -t nat -A postrouting_rule -s "$NETWORK/$PREFIX" -o "$wanif" -j MASQUERADE
50         }
51 }
52
53 stop() {
54         include /lib/network
55         scan_interfaces
56         
57         ### Read interface names
58         config_get wanif wan ifname
59         config_get lanif lan ifname
60         config_get ffif  ff  ifname
61         
62         [ -n "$ffif" ] || return 0
63         
64         ### Freifunk to Freifunk
65         iptables -D forwarding_rule -i "$ffif" -o "$ffif" -j ACCEPT
66         
67         ### Lan to Freifunk     
68         [ -n "$lanif" ] && {
69                 iptables -D forwarding_rule -i "$lanif" -o "$ffif" -j ACCEPT
70                 iptables -t nat -D postrouting_rule -i "$lanif" -o "$ffif" -j MASQUERADE
71         }
72         
73         ### Freifunk to Wan
74         [ -n "$wanif" -gt 0 ] && {
75                 iptables -D forwarding_rule -i "$ffif" -o "$wanif" -j ACCEPT
76                 iptables -t nat -D postrouting_rule -i "$ffif" -o "$wanif" -j MASQUERADE
77         }
78 }