• Home
  • Raw
  • Download

Lines Matching refs:dst

64 	struct dst_entry *dst = skb_dst(skb);  in ip6_finish_output2()  local
65 struct net_device *dev = dst->dev; in ip6_finish_output2()
106 if (lwtunnel_xmit_redirect(dst->lwtstate)) { in ip6_finish_output2()
114 nexthop = rt6_nexthop((struct rt6_info *)dst, &ipv6_hdr(skb)->daddr); in ip6_finish_output2()
115 neigh = __ipv6_neigh_lookup_noref(dst->dev, nexthop); in ip6_finish_output2()
117 neigh = __neigh_create(&nd_tbl, nexthop, dst->dev, false); in ip6_finish_output2()
119 ret = dst_neigh_output(dst, neigh, skb); in ip6_finish_output2()
125 IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTNOROUTES); in ip6_finish_output2()
188 struct dst_entry *dst = skb_dst(skb); in ip6_xmit() local
203 head_room += sizeof(struct ipv6hdr) + LL_RESERVED_SPACE(dst->dev); in ip6_xmit()
236 hlimit = ip6_dst_hoplimit(dst); in ip6_xmit()
252 mtu = dst_mtu(dst); in ip6_xmit()
268 net, (struct sock *)sk, skb, NULL, dst->dev, in ip6_xmit()
272 skb->dev = dst->dev; in ip6_xmit()
368 struct dst_entry *dst = skb_dst(skb); in ip6_forward_finish() local
370 __IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTFORWDATAGRAMS); in ip6_forward_finish()
371 __IP6_ADD_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTOCTETS, skb->len); in ip6_forward_finish()
376 static unsigned int ip6_dst_mtu_forward(const struct dst_entry *dst) in ip6_dst_mtu_forward() argument
381 if (dst_metric_locked(dst, RTAX_MTU)) { in ip6_dst_mtu_forward()
382 mtu = dst_metric_raw(dst, RTAX_MTU); in ip6_dst_mtu_forward()
389 idev = __in6_dev_get(dst->dev); in ip6_dst_mtu_forward()
417 struct dst_entry *dst = skb_dst(skb); in ip6_forward() local
420 struct net *net = dev_net(dst->dev); in ip6_forward()
436 __IP6_INC_STATS(net, ip6_dst_idev(dst), in ip6_forward()
466 skb->dev = dst->dev; in ip6_forward()
468 __IP6_INC_STATS(net, ip6_dst_idev(dst), in ip6_forward()
482 __IP6_INC_STATS(net, ip6_dst_idev(dst), in ip6_forward()
489 __IP6_INC_STATS(net, ip6_dst_idev(dst), in ip6_forward()
493 dst = skb_dst(skb); in ip6_forward()
499 if (skb->dev == dst->dev && opt->srcrt == 0 && !skb_sec_path(skb)) { in ip6_forward()
509 rt = (struct rt6_info *) dst; in ip6_forward()
538 mtu = ip6_dst_mtu_forward(dst); in ip6_forward()
544 skb->dev = dst->dev; in ip6_forward()
546 __IP6_INC_STATS(net, ip6_dst_idev(dst), in ip6_forward()
548 __IP6_INC_STATS(net, ip6_dst_idev(dst), in ip6_forward()
554 if (skb_cow(skb, dst->dev->hard_header_len)) { in ip6_forward()
555 __IP6_INC_STATS(net, ip6_dst_idev(dst), in ip6_forward()
567 net, NULL, skb, skb->dev, dst->dev, in ip6_forward()
571 __IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_INADDRERRORS); in ip6_forward()
648 hroom = LL_RESERVED_SPACE(rt->dst.dev); in ip6_fragment()
708 dst_hold(&rt->dst); in ip6_fragment()
736 IP6_INC_STATS(net, ip6_dst_idev(&rt->dst), in ip6_fragment()
750 IP6_INC_STATS(net, ip6_dst_idev(&rt->dst), in ip6_fragment()
758 IP6_INC_STATS(net, ip6_dst_idev(&rt->dst), in ip6_fragment()
781 troom = rt->dst.dev->needed_tailroom; in ip6_fragment()
896 struct dst_entry *dst, in ip6_sk_dst_check() argument
902 if (!dst) in ip6_sk_dst_check()
905 if (dst->ops->family != AF_INET6) { in ip6_sk_dst_check()
906 dst_release(dst); in ip6_sk_dst_check()
910 rt = (struct rt6_info *)dst; in ip6_sk_dst_check()
933 (fl6->flowi6_oif && fl6->flowi6_oif != dst->dev->ifindex))) { in ip6_sk_dst_check()
934 dst_release(dst); in ip6_sk_dst_check()
935 dst = NULL; in ip6_sk_dst_check()
939 return dst; in ip6_sk_dst_check()
943 struct dst_entry **dst, struct flowi6 *fl6) in ip6_dst_lookup_tail() argument
961 if (ipv6_addr_any(&fl6->saddr) && (!*dst || !(*dst)->error)) { in ip6_dst_lookup_tail()
963 bool had_dst = *dst != NULL; in ip6_dst_lookup_tail()
966 *dst = ip6_route_output(net, sk, fl6); in ip6_dst_lookup_tail()
967 rt = (*dst)->error ? NULL : (struct rt6_info *)*dst; in ip6_dst_lookup_tail()
978 if (!had_dst && (*dst)->error) { in ip6_dst_lookup_tail()
979 dst_release(*dst); in ip6_dst_lookup_tail()
980 *dst = NULL; in ip6_dst_lookup_tail()
987 if (!*dst) in ip6_dst_lookup_tail()
988 *dst = ip6_route_output_flags(net, sk, fl6, flags); in ip6_dst_lookup_tail()
990 err = (*dst)->error; in ip6_dst_lookup_tail()
1003 rt = (struct rt6_info *) *dst; in ip6_dst_lookup_tail()
1005 n = __ipv6_neigh_lookup_noref(rt->dst.dev, in ip6_dst_lookup_tail()
1016 (*dst)->dev, 1); in ip6_dst_lookup_tail()
1027 dst_release(*dst); in ip6_dst_lookup_tail()
1030 *dst = ip6_route_output(net, sk, &fl_gw6); in ip6_dst_lookup_tail()
1031 err = (*dst)->error; in ip6_dst_lookup_tail()
1046 dst_release(*dst); in ip6_dst_lookup_tail()
1047 *dst = NULL; in ip6_dst_lookup_tail()
1064 int ip6_dst_lookup(struct net *net, struct sock *sk, struct dst_entry **dst, in ip6_dst_lookup() argument
1067 *dst = NULL; in ip6_dst_lookup()
1068 return ip6_dst_lookup_tail(net, sk, dst, fl6); in ip6_dst_lookup()
1086 struct dst_entry *dst = NULL; in ip6_dst_lookup_flow() local
1089 err = ip6_dst_lookup_tail(sock_net(sk), sk, &dst, fl6); in ip6_dst_lookup_flow()
1095 return xfrm_lookup_route(sock_net(sk), dst, flowi6_to_flowi(fl6), sk, 0); in ip6_dst_lookup_flow()
1116 struct dst_entry *dst = sk_dst_check(sk, inet6_sk(sk)->dst_cookie); in ip6_sk_dst_lookup_flow() local
1118 dst = ip6_sk_dst_check(sk, dst, fl6); in ip6_sk_dst_lookup_flow()
1119 if (!dst) in ip6_sk_dst_lookup_flow()
1120 dst = ip6_dst_lookup_flow(sk, fl6, final_dst); in ip6_sk_dst_lookup_flow()
1122 return dst; in ip6_sk_dst_lookup_flow()
1205 if (!(rt->dst.flags & DST_XFRM_TUNNEL)) { in ip6_append_data_mtu()
1208 *mtu = orig_mtu - rt->dst.header_len; in ip6_append_data_mtu()
1267 dst_hold(&rt->dst); in ip6_setup_cork()
1268 cork->base.dst = &rt->dst; in ip6_setup_cork()
1272 if (rt->dst.flags & DST_XFRM_TUNNEL) in ip6_setup_cork()
1274 READ_ONCE(rt->dst.dev->mtu) : dst_mtu(&rt->dst); in ip6_setup_cork()
1277 READ_ONCE(rt->dst.dev->mtu) : dst_mtu(rt->dst.path); in ip6_setup_cork()
1285 if (dst_allfrag(rt->dst.path)) in ip6_setup_cork()
1314 struct rt6_info *rt = (struct rt6_info *)cork->dst; in __ip6_append_data()
1322 dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len; in __ip6_append_data()
1328 hh_len = LL_RESERVED_SPACE(rt->dst.dev); in __ip6_append_data()
1337 (dst_allfrag(&rt->dst) ? in __ip6_append_data()
1374 rt->dst.dev->features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM)) in __ip6_append_data()
1405 (rt->dst.dev->features & NETIF_F_UFO) && !rt->dst.header_len && in __ip6_append_data()
1451 datalen = maxfraglen - fragheaderlen - rt->dst.trailer_len; in __ip6_append_data()
1453 !(rt->dst.dev->features&NETIF_F_SG)) in __ip6_append_data()
1465 datalen += rt->dst.trailer_len; in __ip6_append_data()
1468 alloclen += rt->dst.trailer_len; in __ip6_append_data()
1556 if (!(rt->dst.dev->features&NETIF_F_SG)) { in __ip6_append_data()
1661 if (cork->base.dst) { in ip6_cork_release()
1662 dst_release(cork->base.dst); in ip6_cork_release()
1663 cork->base.dst = NULL; in ip6_cork_release()
1681 struct rt6_info *rt = (struct rt6_info *)cork->base.dst; in __ip6_make_skb()
1729 skb_dst_set(skb, dst_clone(&rt->dst)); in __ip6_make_skb()
1819 cork.base.dst = NULL; in ip6_make_skb()