c = clusterip_config_find_get(payload->src_ip); 
c = clusterip_config_find_get(payload->src_ip, 0); 
arp_mangle(unsigned int hook,	   struct sk_buff **pskb,	   const struct net_device *in,	   const struct net_device *out,	   int (*okfn)(struct sk_buff *)){	struct arphdr *arp = (*pskb)->nh.arph;	struct arp_payload *payload;	struct clusterip_config *c;	/* we don't care about non-ethernet and non-ipv4 ARP */	if (arp->ar_hrd != htons(ARPHRD_ETHER)	    || arp->ar_pro != htons(ETH_P_IP)	    || arp->ar_pln != 4 || arp->ar_hln != ETH_ALEN)		return NF_ACCEPT;	/* we only want to mangle arp requests and replies */	if (arp->ar_op != htons(ARPOP_REPLY)	    && arp->ar_op != htons(ARPOP_REQUEST))		return NF_ACCEPT;	payload = (void *)(arp+1);	/* if there is no clusterip configuration for the arp reply's 	 * source ip, we don't want to mangle it */	c = clusterip_config_find_get(payload->src_ip);	if (!c)		return NF_ACCEPT;	/* normally the linux kernel always replies to arp queries of 	 * addresses on different interfacs.  However, in the CLUSTERIP case	 * this wouldn't work, since we didn't subscribe the mcast group on	 * other interfaces */	if (c->dev != out) {		DEBUGP("CLUSTERIP: not mangling arp reply on different "		       "interface: cip'%s'-skb'%s'\n", c->dev->name, out->name);		clusterip_config_put(c);		return NF_ACCEPT;	}	/* mangle reply hardware address */	memcpy(payload->src_hw, c->clustermac, arp->ar_hln);#ifdef CLUSTERIP_DEBUG	DEBUGP(KERN_DEBUG "CLUSTERIP mangled arp reply: ");	arp_print(payload);#endif	clusterip_config_put(c);	return NF_ACCEPT;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4451362445b2d83886003f1d739b94e4f000eeeb/ipt_CLUSTERIP.c/clean/net/ipv4/netfilter/ipt_CLUSTERIP.c