Lines Matching refs:dst

16  *              Steve Whitehouse : Use dst cache for input routes too.
85 #include <net/dst.h>
114 static unsigned int dn_dst_default_advmss(const struct dst_entry *dst);
115 static unsigned int dn_dst_mtu(const struct dst_entry *dst);
120 static void dn_dst_update_pmtu(struct dst_entry *dst, struct sock *sk,
122 static void dn_dst_redirect(struct dst_entry *dst, struct sock *sk,
124 static struct neighbour *dn_dst_neigh_lookup(const struct dst_entry *dst,
155 static void dn_dst_destroy(struct dst_entry *dst)
157 struct dn_route *rt = (struct dn_route *) dst;
161 dst_destroy_metrics_generic(dst);
164 static void dn_dst_ifdown(struct dst_entry *dst, struct net_device *dev, int how)
167 struct dn_route *rt = (struct dn_route *) dst;
178 static __inline__ unsigned int dn_hash(__le16 src, __le16 dst)
180 __u16 tmp = (__u16 __force)(src ^ dst);
189 call_rcu_bh(&rt->dst.rcu_head, dst_rcu_free);
194 dst_release(&rt->dst);
195 call_rcu_bh(&rt->dst.rcu_head, dst_rcu_free);
212 if (atomic_read(&rt->dst.__refcnt) ||
213 (now - rt->dst.lastuse) < expire) {
214 rtp = &rt->dst.dn_next;
217 *rtp = rt->dst.dn_next;
218 rt->dst.dn_next = NULL;
245 if (atomic_read(&rt->dst.__refcnt) ||
246 (now - rt->dst.lastuse) < expire) {
247 rtp = &rt->dst.dn_next;
250 *rtp = rt->dst.dn_next;
251 rt->dst.dn_next = NULL;
271 static void dn_dst_update_pmtu(struct dst_entry *dst, struct sock *sk,
274 struct dn_route *rt = (struct dn_route *) dst;
286 if (dst_metric(dst, RTAX_MTU) > mtu && mtu >= min_mtu) {
287 if (!(dst_metric_locked(dst, RTAX_MTU))) {
288 dst_metric_set(dst, RTAX_MTU, mtu);
289 dst_set_expires(dst, dn_rt_mtu_expires);
291 if (!(dst_metric_locked(dst, RTAX_ADVMSS))) {
293 u32 existing_mss = dst_metric_raw(dst, RTAX_ADVMSS);
295 dst_metric_set(dst, RTAX_ADVMSS, mss);
300 static void dn_dst_redirect(struct dst_entry *dst, struct sock *sk,
308 static struct dst_entry *dn_dst_check(struct dst_entry *dst, __u32 cookie)
313 static struct dst_entry *dn_dst_negative_advice(struct dst_entry *dst)
315 dst_release(dst);
346 *rthp = rth->dst.dn_next;
347 rcu_assign_pointer(rth->dst.dn_next,
351 dst_use(&rth->dst, now);
358 rthp = &rth->dst.dn_next;
361 rcu_assign_pointer(rt->dst.dn_next, dn_rt_hash_table[hash].chain);
364 dst_use(&rt->dst, now);
382 next = rcu_dereference_raw(rt->dst.dn_next);
383 RCU_INIT_POINTER(rt->dst.dn_next, NULL);
438 __le16 *dst;
451 dst = (__le16 *)ptr;
457 swap(*src, *dst);
529 "DECnet: dn_route_rx_packet: rt_flags=0x%02x dev=%s len=%d src=0x%04hx dst=0x%04hx err=%d type=%d\n",
531 le16_to_cpu(cb->src), le16_to_cpu(cb->dst),
561 cb->dst = dn_eth2dn(ptr);
598 cb->dst = *(__le16 *)ptr;
748 struct dst_entry *dst = skb_dst(skb);
749 struct dn_route *rt = (struct dn_route *) dst;
757 struct dst_entry *dst = skb_dst(skb);
758 struct dn_route *rt = (struct dn_route *)dst;
759 struct net_device *dev = dst->dev;
770 cb->dst = rt->rt_daddr;
795 struct dst_entry *dst = skb_dst(skb);
796 struct dn_dev *dn_db = rcu_dereference(dst->dev->dn_ptr);
809 if (skb_cow(skb, LL_RESERVED_SPACE(rt->dst.dev)+header_len))
818 skb->dev = rt->dst.dev;
846 le16_to_cpu(cb->src), le16_to_cpu(cb->dst));
858 le16_to_cpu(cb->src), le16_to_cpu(cb->dst));
865 static unsigned int dn_dst_default_advmss(const struct dst_entry *dst)
867 return dn_mss_from_pmtu(dst->dev, dst_mtu(dst));
870 static unsigned int dn_dst_mtu(const struct dst_entry *dst)
872 unsigned int mtu = dst_metric_raw(dst, RTAX_MTU);
874 return mtu ? : dst->dev->mtu;
877 static struct neighbour *dn_dst_neigh_lookup(const struct dst_entry *dst,
881 return __neigh_lookup_errno(&dn_neigh_table, daddr, dst->dev);
887 struct net_device *dev = rt->dst.dev;
895 dst_init_metrics(&rt->dst, fi->fib_metrics, true);
906 if (dst_metric(&rt->dst, RTAX_MTU) > rt->dst.dev->mtu)
907 dst_metric_set(&rt->dst, RTAX_MTU, rt->dst.dev->mtu);
908 mss_metric = dst_metric_raw(&rt->dst, RTAX_ADVMSS);
910 unsigned int mss = dn_mss_from_pmtu(dev, dst_mtu(&rt->dst));
912 dst_metric_set(&rt->dst, RTAX_ADVMSS, mss);
991 "dn_route_output_slow: dst=%04x src=%04x mark=%d"
1065 " dst=%o4x src=%04x oif=%d try_hard=%d\n",
1213 rt->dst.lastuse = jiffies;
1214 rt->dst.output = dn_output;
1215 rt->dst.input = dn_rt_bug;
1218 rt->dst.input = dn_nsp_rx;
1247 dst_free(&rt->dst);
1263 rt = rcu_dereference_bh(rt->dst.dn_next)) {
1269 dst_use(&rt->dst, jiffies);
1271 *pprt = &rt->dst;
1326 .daddr = cb->dst,
1349 * other nasties. Loopback packets already have the dst attached
1363 if (!dn_dev_islocal(in_dev, cb->dst))
1427 fld.saddr = cb->dst;
1471 rt->fld.daddr = cb->dst;
1477 rt->dst.lastuse = jiffies;
1478 rt->dst.output = dn_rt_bug_sk;
1481 rt->dst.input = dn_forward;
1484 rt->dst.output = dn_output;
1485 rt->dst.input = dn_nsp_rx;
1486 rt->dst.dev = in_dev;
1492 rt->dst.input = dst_discard;
1502 skb_dst_set(skb, &rt->dst);
1524 dst_free(&rt->dst);
1532 unsigned int hash = dn_hash(cb->src, cb->dst);
1539 rt = rcu_dereference(rt->dst.dn_next)) {
1541 (rt->fld.daddr == cb->dst) &&
1545 dst_use(&rt->dst, jiffies);
1591 if (rt->dst.dev &&
1592 nla_put_u32(skb, RTA_OIF, rt->dst.dev->ifindex) < 0)
1607 if (rtnetlink_put_metrics(skb, dst_metrics_ptr(&rt->dst)) < 0)
1610 expires = rt->dst.expires ? rt->dst.expires - jiffies : 0;
1611 if (rtnl_put_cacheinfo(skb, &rt->dst, 0, expires,
1612 rt->dst.error) < 0)
1689 cb->dst = fld.daddr;
1695 if (!err && -rt->dst.error)
1696 err = rt->dst.error;
1707 skb_dst_set(skb, &rt->dst);
1759 rt = rcu_dereference_bh(rt->dst.dn_next), idx++) {
1762 skb_dst_set(skb, dst_clone(&rt->dst));
1805 rt = rcu_dereference_bh(rt->dst.dn_next);
1846 rt->dst.dev ? rt->dst.dev->name : "*",
1849 atomic_read(&rt->dst.__refcnt),
1850 rt->dst.__use, 0);