|
@@ -98,7 +98,11 @@
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#define INFINITY_LIFE_TIME 0xFFFFFFFF
|
|
#define INFINITY_LIFE_TIME 0xFFFFFFFF
|
|
-#define TIME_DELTA(a, b) ((unsigned long)((long)(a) - (long)(b)))
|
|
|
|
|
|
+
|
|
|
|
+static inline u32 cstamp_delta(unsigned long cstamp)
|
|
|
|
+{
|
|
|
|
+ return (cstamp - INITIAL_JIFFIES) * 100UL / HZ;
|
|
|
|
+}
|
|
|
|
|
|
#define ADDRCONF_TIMER_FUZZ_MINUS (HZ > 50 ? HZ/50 : 1)
|
|
#define ADDRCONF_TIMER_FUZZ_MINUS (HZ > 50 ? HZ/50 : 1)
|
|
#define ADDRCONF_TIMER_FUZZ (HZ / 4)
|
|
#define ADDRCONF_TIMER_FUZZ (HZ / 4)
|
|
@@ -3444,10 +3448,8 @@ static int put_cacheinfo(struct sk_buff *skb, unsigned long cstamp,
|
|
{
|
|
{
|
|
struct ifa_cacheinfo ci;
|
|
struct ifa_cacheinfo ci;
|
|
|
|
|
|
- ci.cstamp = (u32)(TIME_DELTA(cstamp, INITIAL_JIFFIES) / HZ * 100
|
|
|
|
- + TIME_DELTA(cstamp, INITIAL_JIFFIES) % HZ * 100 / HZ);
|
|
|
|
- ci.tstamp = (u32)(TIME_DELTA(tstamp, INITIAL_JIFFIES) / HZ * 100
|
|
|
|
- + TIME_DELTA(tstamp, INITIAL_JIFFIES) % HZ * 100 / HZ);
|
|
|
|
|
|
+ ci.cstamp = cstamp_delta(cstamp);
|
|
|
|
+ ci.tstamp = cstamp_delta(tstamp);
|
|
ci.ifa_prefered = preferred;
|
|
ci.ifa_prefered = preferred;
|
|
ci.ifa_valid = valid;
|
|
ci.ifa_valid = valid;
|
|
|
|
|
|
@@ -3798,8 +3800,10 @@ static inline void ipv6_store_devconf(struct ipv6_devconf *cnf,
|
|
array[DEVCONF_AUTOCONF] = cnf->autoconf;
|
|
array[DEVCONF_AUTOCONF] = cnf->autoconf;
|
|
array[DEVCONF_DAD_TRANSMITS] = cnf->dad_transmits;
|
|
array[DEVCONF_DAD_TRANSMITS] = cnf->dad_transmits;
|
|
array[DEVCONF_RTR_SOLICITS] = cnf->rtr_solicits;
|
|
array[DEVCONF_RTR_SOLICITS] = cnf->rtr_solicits;
|
|
- array[DEVCONF_RTR_SOLICIT_INTERVAL] = cnf->rtr_solicit_interval;
|
|
|
|
- array[DEVCONF_RTR_SOLICIT_DELAY] = cnf->rtr_solicit_delay;
|
|
|
|
|
|
+ array[DEVCONF_RTR_SOLICIT_INTERVAL] =
|
|
|
|
+ jiffies_to_msecs(cnf->rtr_solicit_interval);
|
|
|
|
+ array[DEVCONF_RTR_SOLICIT_DELAY] =
|
|
|
|
+ jiffies_to_msecs(cnf->rtr_solicit_delay);
|
|
array[DEVCONF_FORCE_MLD_VERSION] = cnf->force_mld_version;
|
|
array[DEVCONF_FORCE_MLD_VERSION] = cnf->force_mld_version;
|
|
#ifdef CONFIG_IPV6_PRIVACY
|
|
#ifdef CONFIG_IPV6_PRIVACY
|
|
array[DEVCONF_USE_TEMPADDR] = cnf->use_tempaddr;
|
|
array[DEVCONF_USE_TEMPADDR] = cnf->use_tempaddr;
|
|
@@ -3813,7 +3817,8 @@ static inline void ipv6_store_devconf(struct ipv6_devconf *cnf,
|
|
array[DEVCONF_ACCEPT_RA_PINFO] = cnf->accept_ra_pinfo;
|
|
array[DEVCONF_ACCEPT_RA_PINFO] = cnf->accept_ra_pinfo;
|
|
#ifdef CONFIG_IPV6_ROUTER_PREF
|
|
#ifdef CONFIG_IPV6_ROUTER_PREF
|
|
array[DEVCONF_ACCEPT_RA_RTR_PREF] = cnf->accept_ra_rtr_pref;
|
|
array[DEVCONF_ACCEPT_RA_RTR_PREF] = cnf->accept_ra_rtr_pref;
|
|
- array[DEVCONF_RTR_PROBE_INTERVAL] = cnf->rtr_probe_interval;
|
|
|
|
|
|
+ array[DEVCONF_RTR_PROBE_INTERVAL] =
|
|
|
|
+ jiffies_to_msecs(cnf->rtr_probe_interval);
|
|
#ifdef CONFIG_IPV6_ROUTE_INFO
|
|
#ifdef CONFIG_IPV6_ROUTE_INFO
|
|
array[DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = cnf->accept_ra_rt_info_max_plen;
|
|
array[DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = cnf->accept_ra_rt_info_max_plen;
|
|
#endif
|
|
#endif
|
|
@@ -3929,10 +3934,9 @@ static int inet6_fill_ifinfo(struct sk_buff *skb, struct inet6_dev *idev,
|
|
NLA_PUT_U32(skb, IFLA_INET6_FLAGS, idev->if_flags);
|
|
NLA_PUT_U32(skb, IFLA_INET6_FLAGS, idev->if_flags);
|
|
|
|
|
|
ci.max_reasm_len = IPV6_MAXPLEN;
|
|
ci.max_reasm_len = IPV6_MAXPLEN;
|
|
- ci.tstamp = (__u32)(TIME_DELTA(idev->tstamp, INITIAL_JIFFIES) / HZ * 100
|
|
|
|
- + TIME_DELTA(idev->tstamp, INITIAL_JIFFIES) % HZ * 100 / HZ);
|
|
|
|
- ci.reachable_time = idev->nd_parms->reachable_time;
|
|
|
|
- ci.retrans_time = idev->nd_parms->retrans_time;
|
|
|
|
|
|
+ ci.tstamp = cstamp_delta(idev->tstamp);
|
|
|
|
+ ci.reachable_time = jiffies_to_msecs(idev->nd_parms->reachable_time);
|
|
|
|
+ ci.retrans_time = jiffies_to_msecs(idev->nd_parms->retrans_time);
|
|
NLA_PUT(skb, IFLA_INET6_CACHEINFO, sizeof(ci), &ci);
|
|
NLA_PUT(skb, IFLA_INET6_CACHEINFO, sizeof(ci), &ci);
|
|
|
|
|
|
nla = nla_reserve(skb, IFLA_INET6_CONF, DEVCONF_MAX * sizeof(s32));
|
|
nla = nla_reserve(skb, IFLA_INET6_CONF, DEVCONF_MAX * sizeof(s32));
|