int ip_vs_skb_replace(struct sk_buff *skb, int pri, 
int ip_vs_skb_replace(struct sk_buff *skb, unsigned int __nocast pri, 
int ip_vs_skb_replace(struct sk_buff *skb, int pri,		      char *o_buf, int o_len, char *n_buf, int n_len){	struct iphdr *iph;	int diff;	int o_offset;	int o_left;	EnterFunction(9);	diff = n_len - o_len;	o_offset = o_buf - (char *)skb->data;	/* The length of left data after o_buf+o_len in the skb data */	o_left = skb->len - (o_offset + o_len);	if (diff <= 0) {		memmove(o_buf + n_len, o_buf + o_len, o_left);		memcpy(o_buf, n_buf, n_len);		skb_trim(skb, skb->len + diff);	} else if (diff <= skb_tailroom(skb)) {		skb_put(skb, diff);		memmove(o_buf + n_len, o_buf + o_len, o_left);		memcpy(o_buf, n_buf, n_len);	} else {		if (pskb_expand_head(skb, skb_headroom(skb), diff, pri))			return -ENOMEM;		skb_put(skb, diff);		memmove(skb->data + o_offset + n_len,			skb->data + o_offset + o_len, o_left);		memcpy(skb->data + o_offset, n_buf, n_len);	}	/* must update the iph total length here */	iph = skb->nh.iph;	iph->tot_len = htons(skb->len);	LeaveFunction(9);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8eea00a44d9f493869f8d30b72e3ed18475be556/ip_vs_app.c/buggy/net/ipv4/ipvs/ip_vs_app.c