On Tue, Nov 09, 2010 at 01:01:46AM +0200, Julian Anastasov wrote: > > Hello, > > On Tue, 9 Nov 2010, Simon Horman wrote: > > >>- backup creates template but there is no PE => cp->pe remains NULL if > >> we want to keep conn entry. Option 2 is that we can ignore > >> the conn entry if the PE module is not loaded before this step > > > >I think that is better to drop the entry as (at least the way PE SIP works) > >its entirely likely that it could be used by the scheduler to use > >the wont real server if the pe_data is missing. Or in other words, > >it is no better than the entry being missing all together. > > Agreed. > > >If later we have PE engines that behave differently, and creating > >templates without pe_data makes sense, we can revisit this. > > > >>- svc is added => PE module is loaded (request_module) > >> > >>- next sync message comes and we bind cp->dest => if cp->pe > >>is NULL we should set cp->pe to svc->pe. The problem here is > >>that svc can be added without PE, then this template will not > >>work as expected. > > > >I'm unsure what you mean by "svc can be added without PE" > > -A without --pe [engine] option in backup. I think that is ok because of the change made by "IPVS: Only match pe_data created by the same pe". That is, the template will never match. >From 12933de34a16c6585bd2a388ac0d48ef5c5599fa Mon Sep 17 00:00:00 2001 From: Simon Horman <horms@xxxxxxxxxxxx> Date: Mon, 8 Nov 2010 20:06:30 +0900 Subject: [PATCH] IPVS: Only match pe_data created by the same pe Only match persistence engine data if it was created by the same persistence engine. Reported-by: Julian Anastasov <ja@xxxxxx> Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx> --- net/netfilter/ipvs/ip_vs_conn.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c index 44df5f0..0e0604c 100644 --- a/net/netfilter/ipvs/ip_vs_conn.c +++ b/net/netfilter/ipvs/ip_vs_conn.c @@ -354,7 +354,7 @@ struct ip_vs_conn *ip_vs_ct_in_get(const struct ip_vs_conn_param *p) list_for_each_entry(cp, &ip_vs_conn_tab[hash], c_list) { if (p->pe_data && p->pe->ct_match) { - if (p->pe->ct_match(p, cp)) + if (p->pe == cp->pe && p->pe->ct_match(p, cp)) goto out; continue; } -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe lvs-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html