diff options
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/ip6mr.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c index 23f364a9efb5..4220a7b93386 100644 --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c | |||
@@ -2120,6 +2120,7 @@ static int __ip6mr_fill_mroute(struct mr6_table *mrt, struct sk_buff *skb, | |||
2120 | int ct; | 2120 | int ct; |
2121 | struct rtnexthop *nhp; | 2121 | struct rtnexthop *nhp; |
2122 | struct nlattr *mp_attr; | 2122 | struct nlattr *mp_attr; |
2123 | struct rta_mfc_stats mfcs; | ||
2123 | 2124 | ||
2124 | /* If cache is unresolved, don't try to parse IIF and OIF */ | 2125 | /* If cache is unresolved, don't try to parse IIF and OIF */ |
2125 | if (c->mf6c_parent >= MAXMIFS) | 2126 | if (c->mf6c_parent >= MAXMIFS) |
@@ -2149,6 +2150,12 @@ static int __ip6mr_fill_mroute(struct mr6_table *mrt, struct sk_buff *skb, | |||
2149 | 2150 | ||
2150 | nla_nest_end(skb, mp_attr); | 2151 | nla_nest_end(skb, mp_attr); |
2151 | 2152 | ||
2153 | mfcs.mfcs_packets = c->mfc_un.res.pkt; | ||
2154 | mfcs.mfcs_bytes = c->mfc_un.res.bytes; | ||
2155 | mfcs.mfcs_wrong_if = c->mfc_un.res.wrong_if; | ||
2156 | if (nla_put(skb, RTA_MFC_STATS, sizeof(mfcs), &mfcs) < 0) | ||
2157 | return -EMSGSIZE; | ||
2158 | |||
2152 | rtm->rtm_type = RTN_MULTICAST; | 2159 | rtm->rtm_type = RTN_MULTICAST; |
2153 | return 1; | 2160 | return 1; |
2154 | } | 2161 | } |