diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/rtnetlink.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index da983d4bac02..6a6cdade1676 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <net/arp.h> | 50 | #include <net/arp.h> |
51 | #include <net/route.h> | 51 | #include <net/route.h> |
52 | #include <net/udp.h> | 52 | #include <net/udp.h> |
53 | #include <net/tcp.h> | ||
53 | #include <net/sock.h> | 54 | #include <net/sock.h> |
54 | #include <net/pkt_sched.h> | 55 | #include <net/pkt_sched.h> |
55 | #include <net/fib_rules.h> | 56 | #include <net/fib_rules.h> |
@@ -669,9 +670,19 @@ int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics) | |||
669 | 670 | ||
670 | for (i = 0; i < RTAX_MAX; i++) { | 671 | for (i = 0; i < RTAX_MAX; i++) { |
671 | if (metrics[i]) { | 672 | if (metrics[i]) { |
673 | if (i == RTAX_CC_ALGO - 1) { | ||
674 | char tmp[TCP_CA_NAME_MAX], *name; | ||
675 | |||
676 | name = tcp_ca_get_name_by_key(metrics[i], tmp); | ||
677 | if (!name) | ||
678 | continue; | ||
679 | if (nla_put_string(skb, i + 1, name)) | ||
680 | goto nla_put_failure; | ||
681 | } else { | ||
682 | if (nla_put_u32(skb, i + 1, metrics[i])) | ||
683 | goto nla_put_failure; | ||
684 | } | ||
672 | valid++; | 685 | valid++; |
673 | if (nla_put_u32(skb, i+1, metrics[i])) | ||
674 | goto nla_put_failure; | ||
675 | } | 686 | } |
676 | } | 687 | } |
677 | 688 | ||