Changeset 27792


Ignore:
Timestamp:
2011-07-27T00:21:39+02:00 (7 years ago)
Author:
jow
Message:

[package] firewall: prevent redundant rules if multiple ports and multiple icmp types are given in a rule block for both icmp and other protocols

Location:
trunk/package/firewall
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/firewall/Makefile

    r27711 r27792  
    1010 
    1111PKG_VERSION:=2 
    12 PKG_RELEASE:=32 
     12PKG_RELEASE:=33 
    1313 
    1414include $(INCLUDE_DIR)/package.mk 
  • trunk/package/firewall/files/lib/core_rule.sh

    r27500 r27792  
    6868        [ "$rule_proto" == "tcpudp" ] && rule_proto="tcp udp" 
    6969        local pr; for pr in $rule_proto; do 
     70                local sports dports itypes 
     71                case "$pr" in 
     72                        icmp|icmpv6|1|58) 
     73                                sports=""; dports="" 
     74                                itypes="$rule_icmp_type" 
     75                        ;; 
     76                        *) 
     77                                sports="$rule_src_port" 
     78                                dports="$rule_dest_port" 
     79                                itypes="" 
     80                        ;; 
     81                esac 
     82         
    7083                fw_get_negation pr '-p' "$pr" 
    71                 local sp; for sp in ${rule_src_port:-""}; do 
     84                local sp; for sp in ${sports:-""}; do 
    7285                        fw_get_port_range sp $sp 
    7386                        fw_get_negation sp '--sport' "$sp" 
    74                         local dp; for dp in ${rule_dest_port:-""}; do 
     87                        local dp; for dp in ${dports:-""}; do 
    7588                                fw_get_port_range dp $dp 
    7689                                fw_get_negation dp '--dport' "$dp" 
    7790                                local sm; for sm in ${rule_src_mac:-""}; do 
    7891                                        fw_get_negation sm '--mac-source' "$sm" 
    79                                         local it; for it in ${rule_icmp_type:-""}; do 
     92                                        local it; for it in ${itypes:-""}; do 
    8093                                                fw_get_negation it '--icmp-type' "$it" 
    81                                                 case "$pr" in 
    82                                                         *" icmp"|*" icmpv6"|*" 1"|*" 58") sp=""; dp="" ;; 
    83                                                         *) it="" ;; 
    84                                                 esac 
    8594                                                fw add $mode $table $chain $target + \ 
    8695                                                        { $rule_src_ip $rule_dest_ip } { \ 
Note: See TracChangeset for help on using the changeset viewer.