struct nlmsghdr *in_nlh, int prefix) 
struct nlmsghdr *in_nlh, int prefix, unsigned int flags) 
static int rt6_fill_node(struct sk_buff *skb, struct rt6_info *rt,			 struct in6_addr *dst,			 struct in6_addr *src,			 int iif,			 int type, u32 pid, u32 seq,			 struct nlmsghdr *in_nlh, int prefix){	struct rtmsg *rtm;	struct nlmsghdr  *nlh;	unsigned char	 *b = skb->tail;	struct rta_cacheinfo ci;	if (prefix) {	/* user wants prefix routes only */		if (!(rt->rt6i_flags & RTF_PREFIX_RT)) {			/* success since this is not a prefix route */			return 1;		}	}	if (!pid && in_nlh) {		pid = in_nlh->nlmsg_pid;	}	nlh = NLMSG_PUT(skb, pid, seq, type, sizeof(*rtm));	rtm = NLMSG_DATA(nlh);	rtm->rtm_family = AF_INET6;	rtm->rtm_dst_len = rt->rt6i_dst.plen;	rtm->rtm_src_len = rt->rt6i_src.plen;	rtm->rtm_tos = 0;	rtm->rtm_table = RT_TABLE_MAIN;	if (rt->rt6i_flags&RTF_REJECT)		rtm->rtm_type = RTN_UNREACHABLE;	else if (rt->rt6i_dev && (rt->rt6i_dev->flags&IFF_LOOPBACK))		rtm->rtm_type = RTN_LOCAL;	else		rtm->rtm_type = RTN_UNICAST;	rtm->rtm_flags = 0;	rtm->rtm_scope = RT_SCOPE_UNIVERSE;	rtm->rtm_protocol = rt->rt6i_protocol;	if (rt->rt6i_flags&RTF_DYNAMIC)		rtm->rtm_protocol = RTPROT_REDIRECT;	else if (rt->rt6i_flags & RTF_ADDRCONF)		rtm->rtm_protocol = RTPROT_KERNEL;	else if (rt->rt6i_flags&RTF_DEFAULT)		rtm->rtm_protocol = RTPROT_RA;	if (rt->rt6i_flags&RTF_CACHE)		rtm->rtm_flags |= RTM_F_CLONED;	if (dst) {		RTA_PUT(skb, RTA_DST, 16, dst);	        rtm->rtm_dst_len = 128;	} else if (rtm->rtm_dst_len)		RTA_PUT(skb, RTA_DST, 16, &rt->rt6i_dst.addr);#ifdef CONFIG_IPV6_SUBTREES	if (src) {		RTA_PUT(skb, RTA_SRC, 16, src);	        rtm->rtm_src_len = 128;	} else if (rtm->rtm_src_len)		RTA_PUT(skb, RTA_SRC, 16, &rt->rt6i_src.addr);#endif	if (iif)		RTA_PUT(skb, RTA_IIF, 4, &iif);	else if (dst) {		struct in6_addr saddr_buf;		if (ipv6_get_saddr(&rt->u.dst, dst, &saddr_buf) == 0)			RTA_PUT(skb, RTA_PREFSRC, 16, &saddr_buf);	}	if (rtnetlink_put_metrics(skb, rt->u.dst.metrics) < 0)		goto rtattr_failure;	if (rt->u.dst.neighbour)		RTA_PUT(skb, RTA_GATEWAY, 16, &rt->u.dst.neighbour->primary_key);	if (rt->u.dst.dev)		RTA_PUT(skb, RTA_OIF, sizeof(int), &rt->rt6i_dev->ifindex);	RTA_PUT(skb, RTA_PRIORITY, 4, &rt->rt6i_metric);	ci.rta_lastuse = jiffies_to_clock_t(jiffies - rt->u.dst.lastuse);	if (rt->rt6i_expires)		ci.rta_expires = jiffies_to_clock_t(rt->rt6i_expires - jiffies);	else		ci.rta_expires = 0;	ci.rta_used = rt->u.dst.__use;	ci.rta_clntref = atomic_read(&rt->u.dst.__refcnt);	ci.rta_error = rt->u.dst.error;	ci.rta_id = 0;	ci.rta_ts = 0;	ci.rta_tsage = 0;	RTA_PUT(skb, RTA_CACHEINFO, sizeof(ci), &ci);	nlh->nlmsg_len = skb->tail - b;	return skb->len;nlmsg_failure:rtattr_failure:	skb_trim(skb, b - skb->data);	return -1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b6544c0b4cf2bd96195f3cdb7cebfb35090fc557/route.c/buggy/net/ipv6/route.c