ipvs: provide iph to schedulers
[cascardo/linux.git] / net / netfilter / ipvs / ip_vs_dh.c
index ccab120..c3b8454 100644 (file)
@@ -214,18 +214,16 @@ static inline int is_overloaded(struct ip_vs_dest *dest)
  *      Destination hashing scheduling
  */
 static struct ip_vs_dest *
-ip_vs_dh_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
+ip_vs_dh_schedule(struct ip_vs_service *svc, const struct sk_buff *skb,
+                 struct ip_vs_iphdr *iph)
 {
        struct ip_vs_dest *dest;
        struct ip_vs_dh_state *s;
-       struct ip_vs_iphdr iph;
-
-       ip_vs_fill_iph_addr_only(svc->af, skb, &iph);
 
        IP_VS_DBG(6, "%s(): Scheduling...\n", __func__);
 
        s = (struct ip_vs_dh_state *) svc->sched_data;
-       dest = ip_vs_dh_get(svc->af, s, &iph.daddr);
+       dest = ip_vs_dh_get(svc->af, s, &iph->daddr);
        if (!dest
            || !(dest->flags & IP_VS_DEST_F_AVAILABLE)
            || atomic_read(&dest->weight) <= 0
@@ -235,7 +233,7 @@ ip_vs_dh_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
        }
 
        IP_VS_DBG_BUF(6, "DH: destination IP address %s --> server %s:%d\n",
-                     IP_VS_DBG_ADDR(svc->af, &iph.daddr),
+                     IP_VS_DBG_ADDR(svc->af, &iph->daddr),
                      IP_VS_DBG_ADDR(svc->af, &dest->addr),
                      ntohs(dest->port));