• Julian Anastasov's avatar
    ipvs: restore support for iptables SNAT · afb523c5
    Julian Anastasov authored
    	Fix the IPVS priority in LOCAL_IN hook,
    so that SNAT target in POSTROUTING is supported for IPVS
    traffic as in 2.6.36 where it worked depending on
    module load order.
    
    	Before 2.6.37 we used priority 100 in LOCAL_IN to
    process remote requests. We used the same priority as
    iptables SNAT and if IPVS handlers are installed before
    SNAT handlers we supported SNAT in POSTROUTING for the IPVS
    traffic. If SNAT is installed before IPVS, the netfilter
    handlers are before IPVS and netfilter checks the NAT
    table twice for the IPVS requests: once in LOCAL_IN where
    IPS_SRC_NAT_DONE is set and second time in POSTROUTING
    where the SNAT rules are ignored because IPS_SRC_NAT_DONE
    was already set in LOCAL_IN.
    
    	But in 2.6.37 we changed the IPVS priority for
    LOCAL_IN with the goal to be unique (101) forgetting the
    fact that for IPVS traffic we should not walk both
    LOCAL_IN and POSTROUTING nat tables.
    
    	So, change the priority for processing remote
    IPVS requests from 101 to 99, i.e. before NAT_SRC (100)
    because we prefer to support SNAT in POSTROUTING
    instead of LOCAL_IN. It also moves the priority for
    IPVS replies from 99 to 98. Use constants instead of
    magic numbers at these places.
    Signed-off-by: default avatarJulian Anastasov <ja@ssi.bg>
    Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    afb523c5
ip_vs_core.c 53.1 KB