aboutsummaryrefslogtreecommitdiffstats
path: root/package/iptables/files/firewall.awk
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2006-04-05 02:09:22 +0000
committerFelix Fietkau <nbd@openwrt.org>2006-04-05 02:09:22 +0000
commite1b417ee76bd97a05854f4304cef3f73e9da633b (patch)
treef5913675e5868c535c007efb3e09a01ce6890287 /package/iptables/files/firewall.awk
parent42269e22a8b817e1e6bc2c9cbb2f03df31221458 (diff)
downloadupstream-e1b417ee76bd97a05854f4304cef3f73e9da633b.tar.gz
upstream-e1b417ee76bd97a05854f4304cef3f73e9da633b.tar.bz2
upstream-e1b417ee76bd97a05854f4304cef3f73e9da633b.zip
large init script cleanup and merge of whiterussian changes, new dnsmasq config handling
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@3588 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/iptables/files/firewall.awk')
-rw-r--r--package/iptables/files/firewall.awk64
1 files changed, 64 insertions, 0 deletions
diff --git a/package/iptables/files/firewall.awk b/package/iptables/files/firewall.awk
new file mode 100644
index 0000000000..1b63f83862
--- /dev/null
+++ b/package/iptables/files/firewall.awk
@@ -0,0 +1,64 @@
+BEGIN {
+ print "proto=\"$wan_proto\""
+ print "[ -z \"$proto\" -o \"$proto\" = \"none\" ] && exit"
+ print "ifname=\"$wan_ifname\""
+ print "[ -z \"$ifname\" ] && exit"
+ print ""
+ print "iptables -X input_$ifname 2>&- >&-"
+ print "iptables -N input_$ifname"
+ print "iptables -X forward_$ifname 2>&- >&-"
+ print "iptables -N forward_$ifname"
+ print "iptables -t nat -X prerouting_$ifname 2>&- >&-"
+ print "iptables -t nat -N prerouting_$ifname"
+ print ""
+ print "iptables -A input_rule -i \"$ifname\" -j input_$ifname"
+ print "iptables -A forwarding_rule -i \"$ifname\" -j forward_$ifname"
+ print "iptables -t nat -A prerouting_rule -i \"$ifname\" -j prerouting_$ifname"
+ print ""
+ FS=":"
+}
+
+($1 == "accept") || ($1 == "drop") || ($1 == "forward") {
+ delete _opt
+ str2data($2)
+ if ((_l["proto"] == "") && (_l["sport"] _l["dport"] != "")) {
+ _opt[0] = " -p tcp"
+ _opt[1] = " -p udp"
+ } else {
+ _opt[0] = ""
+ }
+}
+
+($1 == "accept") {
+ target = " -j ACCEPT"
+ for (o in _opt) {
+ print "iptables -t nat -A prerouting_$ifname" _opt[o] str2ipt($2) target
+ print "iptables -A input_$ifname " _opt[o] str2ipt($2) target
+ print ""
+ }
+}
+
+($1 == "drop") {
+ for (o in _opt) {
+ print "iptables -t nat -A prerouting_$ifname" _opt[o] str2ipt($2) " -j DROP"
+ print ""
+ }
+}
+
+($1 == "forward") {
+ target = " -j DNAT --to " $3
+ fwopts = ""
+ if ($4 != "") {
+ if ((_l["proto"] == "tcp") || (_l["proto"] == "udp") || (_l["proto"] == "")) {
+ if (_l["proto"] != "") fwopts = " -p " _l["proto"]
+ fwopts = fwopts " --dport " $4
+ target = target ":" $4
+ }
+ else fwopts = ""
+ }
+ for (o in _opt) {
+ print "iptables -t nat -A prerouting_$ifname" _opt[o] str2ipt($2) target
+ print "iptables -A forward_$ifname " _opt[o] " -d " $3 fwopts " -j ACCEPT"
+ print ""
+ }
+}