net: ipmr/ip6mr: update lastuse on entry change
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Tue, 26 Jul 2016 16:54:52 +0000 (18:54 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Jul 2016 22:18:31 +0000 (15:18 -0700)
Currently lastuse is updated on entry creation and cache hit, but it should
also be updated on entry change. Since both on add and update the ttl array
is updated we can simply update the lastuse in ipmr_update_thresholds.

Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
CC: Roopa Prabhu <roopa@cumulusnetworks.com>
CC: Donald Sharp <sharpd@cumulusnetworks.com>
CC: David S. Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ipmr.c
net/ipv6/ip6mr.c

index eec234161b890d564f00a58eb4dfd0545d30ad34..26253328d227bda8e3a6b23be3130a4ce4231b60 100644 (file)
@@ -722,6 +722,7 @@ static void ipmr_update_thresholds(struct mr_table *mrt, struct mfc_cache *cache
                                cache->mfc_un.res.maxvif = vifi + 1;
                }
        }
+       cache->mfc_un.res.lastuse = jiffies;
 }
 
 static int vif_add(struct net *net, struct mr_table *mrt,
@@ -1150,7 +1151,6 @@ static int ipmr_mfc_add(struct net *net, struct mr_table *mrt,
        c->mfc_origin = mfc->mfcc_origin.s_addr;
        c->mfc_mcastgrp = mfc->mfcc_mcastgrp.s_addr;
        c->mfc_parent = mfc->mfcc_parent;
-       c->mfc_un.res.lastuse = jiffies;
        ipmr_update_thresholds(mrt, c, mfc->mfcc_ttls);
        if (!mrtsock)
                c->mfc_flags |= MFC_STATIC;
index 7adce139d92a685b3e463a83a61ce5835eb81e85..6122f9c5cc496d2ad329cd4d286c37ddd6239012 100644 (file)
@@ -921,6 +921,7 @@ static void ip6mr_update_thresholds(struct mr6_table *mrt, struct mfc6_cache *ca
                                cache->mfc_un.res.maxvif = vifi + 1;
                }
        }
+       cache->mfc_un.res.lastuse = jiffies;
 }
 
 static int mif6_add(struct net *net, struct mr6_table *mrt,
@@ -1500,7 +1501,6 @@ static int ip6mr_mfc_add(struct net *net, struct mr6_table *mrt,
        c->mf6c_origin = mfc->mf6cc_origin.sin6_addr;
        c->mf6c_mcastgrp = mfc->mf6cc_mcastgrp.sin6_addr;
        c->mf6c_parent = mfc->mf6cc_parent;
-       c->mfc_un.res.lastuse = jiffies;
        ip6mr_update_thresholds(mrt, c, ttls);
        if (!mrtsock)
                c->mfc_flags |= MFC_STATIC;