aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/route.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r--net/ipv6/route.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index a4b5aee0f68a..aa3f08718e44 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1034,15 +1034,17 @@ static int ipv6_get_mtu(struct net_device *dev)
1034 return mtu; 1034 return mtu;
1035} 1035}
1036 1036
1037int ipv6_get_hoplimit(struct net_device *dev) 1037int ip6_dst_hoplimit(struct dst_entry *dst)
1038{ 1038{
1039 int hoplimit = ipv6_devconf.hop_limit; 1039 int hoplimit = dst_metric(dst, RTAX_HOPLIMIT);
1040 struct inet6_dev *idev; 1040 if (hoplimit < 0) {
1041 1041 struct net_device *dev = dst->dev;
1042 idev = in6_dev_get(dev); 1042 struct inet6_dev *idev = in6_dev_get(dev);
1043 if (idev) { 1043 if (idev) {
1044 hoplimit = idev->cnf.hop_limit; 1044 hoplimit = idev->cnf.hop_limit;
1045 in6_dev_put(idev); 1045 in6_dev_put(idev);
1046 } else
1047 hoplimit = ipv6_devconf.hop_limit;
1046 } 1048 }
1047 return hoplimit; 1049 return hoplimit;
1048} 1050}