diff options
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r-- | net/ipv6/route.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 8d511de0db1b..9ec348a72a95 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -546,8 +546,8 @@ struct rt6_info *rt6_lookup(struct in6_addr *daddr, struct in6_addr *saddr, | |||
546 | be destroyed. | 546 | be destroyed. |
547 | */ | 547 | */ |
548 | 548 | ||
549 | int ip6_ins_rt(struct rt6_info *rt, struct nlmsghdr *nlh, | 549 | static int __ip6_ins_rt(struct rt6_info *rt, struct nlmsghdr *nlh, |
550 | void *_rtattr, struct netlink_skb_parms *req) | 550 | void *_rtattr, struct netlink_skb_parms *req) |
551 | { | 551 | { |
552 | int err; | 552 | int err; |
553 | struct fib6_table *table; | 553 | struct fib6_table *table; |
@@ -560,6 +560,11 @@ int ip6_ins_rt(struct rt6_info *rt, struct nlmsghdr *nlh, | |||
560 | return err; | 560 | return err; |
561 | } | 561 | } |
562 | 562 | ||
563 | int ip6_ins_rt(struct rt6_info *rt) | ||
564 | { | ||
565 | return __ip6_ins_rt(rt, NULL, NULL, NULL); | ||
566 | } | ||
567 | |||
563 | static struct rt6_info *rt6_alloc_cow(struct rt6_info *ort, struct in6_addr *daddr, | 568 | static struct rt6_info *rt6_alloc_cow(struct rt6_info *ort, struct in6_addr *daddr, |
564 | struct in6_addr *saddr) | 569 | struct in6_addr *saddr) |
565 | { | 570 | { |
@@ -657,7 +662,7 @@ restart: | |||
657 | 662 | ||
658 | dst_hold(&rt->u.dst); | 663 | dst_hold(&rt->u.dst); |
659 | if (nrt) { | 664 | if (nrt) { |
660 | err = ip6_ins_rt(nrt, NULL, NULL, NULL); | 665 | err = ip6_ins_rt(nrt); |
661 | if (!err) | 666 | if (!err) |
662 | goto out2; | 667 | goto out2; |
663 | } | 668 | } |
@@ -752,7 +757,7 @@ restart: | |||
752 | 757 | ||
753 | dst_hold(&rt->u.dst); | 758 | dst_hold(&rt->u.dst); |
754 | if (nrt) { | 759 | if (nrt) { |
755 | err = ip6_ins_rt(nrt, NULL, NULL, NULL); | 760 | err = ip6_ins_rt(nrt); |
756 | if (!err) | 761 | if (!err) |
757 | goto out2; | 762 | goto out2; |
758 | } | 763 | } |
@@ -1206,7 +1211,7 @@ install_route: | |||
1206 | rt->u.dst.dev = dev; | 1211 | rt->u.dst.dev = dev; |
1207 | rt->rt6i_idev = idev; | 1212 | rt->rt6i_idev = idev; |
1208 | rt->rt6i_table = table; | 1213 | rt->rt6i_table = table; |
1209 | return ip6_ins_rt(rt, nlh, _rtattr, req); | 1214 | return __ip6_ins_rt(rt, nlh, _rtattr, req); |
1210 | 1215 | ||
1211 | out: | 1216 | out: |
1212 | if (dev) | 1217 | if (dev) |
@@ -1393,7 +1398,7 @@ restart: | |||
1393 | nrt->u.dst.metrics[RTAX_MTU-1] = ipv6_get_mtu(neigh->dev); | 1398 | nrt->u.dst.metrics[RTAX_MTU-1] = ipv6_get_mtu(neigh->dev); |
1394 | nrt->u.dst.metrics[RTAX_ADVMSS-1] = ipv6_advmss(dst_mtu(&nrt->u.dst)); | 1399 | nrt->u.dst.metrics[RTAX_ADVMSS-1] = ipv6_advmss(dst_mtu(&nrt->u.dst)); |
1395 | 1400 | ||
1396 | if (ip6_ins_rt(nrt, NULL, NULL, NULL)) | 1401 | if (ip6_ins_rt(nrt)) |
1397 | goto out; | 1402 | goto out; |
1398 | 1403 | ||
1399 | netevent.old = &rt->u.dst; | 1404 | netevent.old = &rt->u.dst; |
@@ -1483,7 +1488,7 @@ void rt6_pmtu_discovery(struct in6_addr *daddr, struct in6_addr *saddr, | |||
1483 | dst_set_expires(&nrt->u.dst, ip6_rt_mtu_expires); | 1488 | dst_set_expires(&nrt->u.dst, ip6_rt_mtu_expires); |
1484 | nrt->rt6i_flags |= RTF_DYNAMIC|RTF_EXPIRES; | 1489 | nrt->rt6i_flags |= RTF_DYNAMIC|RTF_EXPIRES; |
1485 | 1490 | ||
1486 | ip6_ins_rt(nrt, NULL, NULL, NULL); | 1491 | ip6_ins_rt(nrt); |
1487 | } | 1492 | } |
1488 | out: | 1493 | out: |
1489 | dst_release(&rt->u.dst); | 1494 | dst_release(&rt->u.dst); |