Ignore:
Timestamp:
2010-09-05T22:37:44+02:00 (6 years ago)
Author:
jow
Message:

[backfire] firewall: backport SNAT support from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/package/firewall/files/uci_firewall.sh

    r22902 r22939  
    373373        local dest_port dest_port2 
    374374        local proto 
     375        local target 
    375376 
    376377        config_get src $1 src 
     
    383384        config_get dest_port $1 dest_port 
    384385        config_get proto $1 proto 
     386        config_get target $1 target 
     387 
    385388        [ -z "$src" -o -z "$dest_ip$dest_port" ] && { \ 
    386389                echo "redirect needs src and dest_ip or dest_port"; return ; } 
     390 
     391        local chain destopt destaddr 
     392        if [ "${target:-DNAT}" == "DNAT" ]; then 
     393                chain="zone_${src}_prerouting" 
     394                destopt="--to-destination" 
     395                destaddr="$dest_ip" 
     396        elif [ "$target" == "SNAT" ]; then 
     397                chain="zone_${src}_nat" 
     398                destopt="--to-source" 
     399                destaddr="$src_dip" 
     400        else 
     401                echo "redirect target must be either DNAT or SNAT" 
     402                return 
     403        fi 
    387404 
    388405        find_item "$src" $CONNTRACK_ZONES || \ 
     
    406423 
    407424        add_rule() { 
    408                 $IPTABLES -A zone_${src}_prerouting -t nat \ 
     425                $IPTABLES -A $chain -t nat \ 
    409426                        ${proto:+-p $proto} \ 
    410427                        ${src_ip:+-s $src_ip} \ 
     
    413430                        ${src_dport:+--dport $src_dport} \ 
    414431                        ${src_mac:+-m mac --mac-source $src_mac} \ 
    415                         -j DNAT --to-destination $dest_ip${dest_port:+:$dest_port} 
    416  
    417                 [ -n "$dest_ip" ] && \ 
     432                        -j ${target:-DNAT} $destopt $dest_ip${dest_port:+:$dest_port} 
     433 
     434                [ -n "$destaddr" ] && \ 
    418435                $IPTABLES -I zone_${src}_forward 1 \ 
    419436                        ${proto:+-p $proto} \ 
    420                         -d $dest_ip \ 
     437                        -d $destaddr \ 
    421438                        ${src_ip:+-s $src_ip} \ 
    422439                        ${src_port:+--sport $src_port} \ 
Note: See TracChangeset for help on using the changeset viewer.