struct fib_info *fi) 
struct fib_info *fi, unsigned int flags) 
fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,	      u8 tb_id, u8 type, u8 scope, void *dst, int dst_len, u8 tos,	      struct fib_info *fi){	struct rtmsg *rtm;	struct nlmsghdr  *nlh;	unsigned char	 *b = skb->tail;	nlh = NLMSG_PUT(skb, pid, seq, event, sizeof(*rtm));	rtm = NLMSG_DATA(nlh);	rtm->rtm_family = AF_INET;	rtm->rtm_dst_len = dst_len;	rtm->rtm_src_len = 0;	rtm->rtm_tos = tos;	rtm->rtm_table = tb_id;	rtm->rtm_type = type;	rtm->rtm_flags = fi->fib_flags;	rtm->rtm_scope = scope;	if (rtm->rtm_dst_len)		RTA_PUT(skb, RTA_DST, 4, dst);	rtm->rtm_protocol = fi->fib_protocol;	if (fi->fib_priority)		RTA_PUT(skb, RTA_PRIORITY, 4, &fi->fib_priority);#ifdef CONFIG_NET_CLS_ROUTE	if (fi->fib_nh[0].nh_tclassid)		RTA_PUT(skb, RTA_FLOW, 4, &fi->fib_nh[0].nh_tclassid);#endif	if (rtnetlink_put_metrics(skb, fi->fib_metrics) < 0)		goto rtattr_failure;	if (fi->fib_prefsrc)		RTA_PUT(skb, RTA_PREFSRC, 4, &fi->fib_prefsrc);	if (fi->fib_nhs == 1) {		if (fi->fib_nh->nh_gw)			RTA_PUT(skb, RTA_GATEWAY, 4, &fi->fib_nh->nh_gw);		if (fi->fib_nh->nh_oif)			RTA_PUT(skb, RTA_OIF, sizeof(int), &fi->fib_nh->nh_oif);	}#ifdef CONFIG_IP_ROUTE_MULTIPATH	if (fi->fib_nhs > 1) {		struct rtnexthop *nhp;		struct rtattr *mp_head;		if (skb_tailroom(skb) <= RTA_SPACE(0))			goto rtattr_failure;		mp_head = (struct rtattr*)skb_put(skb, RTA_SPACE(0));		for_nexthops(fi) {			if (skb_tailroom(skb) < RTA_ALIGN(RTA_ALIGN(sizeof(*nhp)) + 4))				goto rtattr_failure;			nhp = (struct rtnexthop*)skb_put(skb, RTA_ALIGN(sizeof(*nhp)));			nhp->rtnh_flags = nh->nh_flags & 0xFF;			nhp->rtnh_hops = nh->nh_weight-1;			nhp->rtnh_ifindex = nh->nh_oif;			if (nh->nh_gw)				RTA_PUT(skb, RTA_GATEWAY, 4, &nh->nh_gw);			nhp->rtnh_len = skb->tail - (unsigned char*)nhp;		} endfor_nexthops(fi);		mp_head->rta_type = RTA_MULTIPATH;		mp_head->rta_len = skb->tail - (u8*)mp_head;	}#endif	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/fib_semantics.c/clean/net/ipv4/fib_semantics.c