1 # Copyright (C) 2009-2010 OpenWrt.org
3 fw_configure_interface
() {
8 [ "$action" == "add" ] && {
9 local status
=$
(uci_get_state network
"$iface" up
0)
10 [ "$status" == 1 ] ||
return 0
13 [ -n "$ifname" ] || ifname
=$
(uci_get_state network
"$iface" ifname
"$iface")
14 [ "$ifname" == "lo" ] && return 0
16 fw_callback pre interface
21 local chain
=zone_
${zone}
24 local mode
=$
(fw_get_family_mode x
$zone i
)
26 fw
$action $mode f
${chain}_ACCEPT ACCEPT ^
{ -o "$ifname" }
27 fw
$action $mode f
${chain}_ACCEPT ACCEPT ^
{ -i "$ifname" }
28 fw
$action $mode f
${chain}_DROP DROP ^
{ -o "$ifname" }
29 fw
$action $mode f
${chain}_DROP DROP ^
{ -i "$ifname" }
30 fw
$action $mode f
${chain}_REJECT reject ^
{ -o "$ifname" }
31 fw
$action $mode f
${chain}_REJECT reject ^
{ -i "$ifname" }
33 fw
$action $mode n
${chain}_nat MASQUERADE ^
{ -o "$ifname" }
34 fw
$action $mode f
${chain}_MSSFIX TCPMSS ^
{ -o "$ifname" -p tcp
--tcp-flags SYN
,RST SYN
--clamp-mss-to-pmtu }
36 fw
$action $mode f input
${chain} $
{ -i "$ifname" }
37 fw
$action $mode f forward
${chain}_forward $
{ -i "$ifname" }
38 fw
$action $mode n PREROUTING
${chain}_prerouting ^
{ -i "$ifname" }
39 fw
$action $mode r PREROUTING
${chain}_notrack ^
{ -i "$ifname" }
42 local old_zones old_ifname
43 config_get old_zones core
"${iface}_zone"
44 [ -n "$old_zones" ] && {
45 config_get old_ifname core
"${iface}_ifname"
46 for z
in $old_zones; do
47 fw_log info
"removing $iface ($old_ifname) from zone $z"
48 fw__do_rules del
$z $old_ifname
50 ACTION
=remove ZONE
="$z" INTERFACE
="$iface" DEVICE
="$ifname" /sbin
/hotplug-call firewall
52 uci_revert_state firewall core
"${iface}_zone"
53 uci_revert_state firewall core
"${iface}_ifname"
55 [ "$action" == del
] && return
59 fw_config_get_zone
"$1"
60 list_contains zone_network
"$iface" ||
return
62 fw_log info
"adding $iface ($ifname) to zone $zone_name"
63 fw__do_rules add
${zone_name} "$ifname"
64 append new_zones
$zone_name
66 ACTION
=add ZONE
="$zone_name" INTERFACE
="$iface" DEVICE
="$ifname" /sbin
/hotplug-call firewall
68 config_foreach load_zone zone
70 uci_set_state firewall core
"${iface}_zone" "$new_zones"
71 uci_set_state firewall core
"${iface}_ifname" "$ifname"
73 fw_sysctl_interface
$ifname
75 fw_callback post interface
78 fw_sysctl_interface
() {
81 sysctl
-w net.ipv4.conf.
${ifname}.accept_redirects
=$FW_ACCEPT_REDIRECTS
82 sysctl
-w net.ipv6.conf.
${ifname}.accept_redirects
=$FW_ACCEPT_REDIRECTS
83 sysctl
-w net.ipv4.conf.
${ifname}.accept_source_route
=$FW_ACCEPT_SRC_ROUTE
84 sysctl
-w net.ipv6.conf.
${ifname}.accept_source_route
=$FW_ACCEPT_SRC_ROUTE
85 } >/dev
/null
2>/dev
/null