Add the support for adding expire value to routes, requested by Tom Gundersen <t...@jklm.no> for systemd-networkd, and NetworkManager wants it too.
add it by using the field rta_expires of rta_cacheinfo Signed-off-by: Xin Long <lucien....@gmail.com> Signed-off-by: Hannes Frederic Sowa <han...@stressinduktion.org> --- net/ipv6/route.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index c83b6a5..7815bc0 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -2709,6 +2709,7 @@ static const struct nla_policy rtm_ipv6_policy[RTA_MAX+1] = { [RTA_PREF] = { .type = NLA_U8 }, [RTA_ENCAP_TYPE] = { .type = NLA_U16 }, [RTA_ENCAP] = { .type = NLA_NESTED }, + [RTA_CACHEINFO] = { .len = sizeof(struct rta_cacheinfo) }, }; static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh, @@ -2809,6 +2810,16 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh, if (tb[RTA_ENCAP_TYPE]) cfg->fc_encap_type = nla_get_u16(tb[RTA_ENCAP_TYPE]); + if (tb[RTA_CACHEINFO]) { + struct rta_cacheinfo *ci = nla_data(tb[RTA_CACHEINFO]); + unsigned long timeout = addrconf_timeout_fixup(ci->rta_expires, HZ); + + if (addrconf_finite_timeout(timeout)) { + cfg->fc_expires = jiffies_to_clock_t(timeout * HZ); + cfg->fc_flags |= RTF_EXPIRES; + } + } + err = 0; errout: return err; -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html