* ip -6 route shows incorrect route expiry times @ 2005-01-30 16:08 Russell King 2005-01-30 16:29 ` YOSHIFUJI Hideaki / 吉藤英明 0 siblings, 1 reply; 6+ messages in thread From: Russell King @ 2005-01-30 16:08 UTC (permalink / raw) To: netdev This looks like a unit conversion error, spotted in Red Hat FC2. On it's own, it doesn't look like there's anything wrong, until you look at two copies of the output 10 seconds apart: rmk@dyn-67:[bk]:<1030> /sbin/ip -6 route; sleep 10; /sbin/ip -6 route default via fe80::a00:2bff:fe95:1d7b dev eth0 proto kernel metric 1024 expires 169sec mtu 1500 advmss 1440 default via fe80::a00:2bff:fe95:1d7b dev eth0 proto kernel metric 1024 expires 168sec mtu 1500 advmss 1440 It appears that the expiry seconds here are actually in units of 10 seconds. Maybe someone's double-converting kernel Hz to user Hz? -- Russell King ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ip -6 route shows incorrect route expiry times 2005-01-30 16:08 ip -6 route shows incorrect route expiry times Russell King @ 2005-01-30 16:29 ` YOSHIFUJI Hideaki / 吉藤英明 2005-01-30 16:30 ` YOSHIFUJI Hideaki / 吉藤英明 2005-01-30 17:09 ` Patrick McHardy 0 siblings, 2 replies; 6+ messages in thread From: YOSHIFUJI Hideaki / 吉藤英明 @ 2005-01-30 16:29 UTC (permalink / raw) To: rmk; +Cc: netdev, yoshfuji In article <20050130160840.C25000@flint.arm.linux.org.uk> (at Sun, 30 Jan 2005 16:08:40 +0000), Russell King <rmk@arm.linux.org.uk> says: > rmk@dyn-67:[bk]:<1030> /sbin/ip -6 route; sleep 10; /sbin/ip -6 route > default via fe80::a00:2bff:fe95:1d7b dev eth0 proto kernel metric 1024 > expires 169sec mtu 1500 advmss 1440 > default via fe80::a00:2bff:fe95:1d7b dev eth0 proto kernel metric 1024 > expires 168sec mtu 1500 advmss 1440 > > It appears that the expiry seconds here are actually in units of > 10 seconds. Maybe someone's double-converting kernel Hz to user Hz? Kernel exports in USER_HZ. iproute2 seem to convert it again; workaround is to do "export HZ=100". --yoshfuji ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ip -6 route shows incorrect route expiry times 2005-01-30 16:29 ` YOSHIFUJI Hideaki / 吉藤英明 @ 2005-01-30 16:30 ` YOSHIFUJI Hideaki / 吉藤英明 2005-01-31 11:55 ` Ville Nuorvala 2005-01-30 17:09 ` Patrick McHardy 1 sibling, 1 reply; 6+ messages in thread From: YOSHIFUJI Hideaki / 吉藤英明 @ 2005-01-30 16:30 UTC (permalink / raw) To: rmk; +Cc: netdev, yoshfuji In article <20050131.012910.117562374.yoshfuji@linux-ipv6.org> (at Mon, 31 Jan 2005 01:29:10 +0900 (JST)), YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> says: > > It appears that the expiry seconds here are actually in units of > > 10 seconds. Maybe someone's double-converting kernel Hz to user Hz? > > Kernel exports in USER_HZ. > iproute2 seem to convert it again; workaround is to do "export HZ=100". ~~~~~~~~~~~~~ This is example. Of course, this depends on your arch. --yoshfuji ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ip -6 route shows incorrect route expiry times 2005-01-30 16:30 ` YOSHIFUJI Hideaki / 吉藤英明 @ 2005-01-31 11:55 ` Ville Nuorvala 0 siblings, 0 replies; 6+ messages in thread From: Ville Nuorvala @ 2005-01-31 11:55 UTC (permalink / raw) To: YOSHIFUJI Hideaki / 吉藤英明; +Cc: rmk, netdev On Mon, 31 Jan 2005, YOSHIFUJI Hideaki / [iso-2022-jp] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ip -6 route shows incorrect route expiry times 2005-01-30 16:29 ` YOSHIFUJI Hideaki / 吉藤英明 2005-01-30 16:30 ` YOSHIFUJI Hideaki / 吉藤英明 @ 2005-01-30 17:09 ` Patrick McHardy 2005-01-31 2:37 ` David S. Miller 1 sibling, 1 reply; 6+ messages in thread From: Patrick McHardy @ 2005-01-30 17:09 UTC (permalink / raw) To: yoshfuji; +Cc: rmk, netdev [-- Attachment #1: Type: text/plain, Size: 794 bytes --] YOSHIFUJI Hideaki / ^[$B5HF#1QL@^[ wrote: >In article <20050130160840.C25000@flint.arm.linux.org.uk> (at Sun, 30 Jan 2005 16:08:40 +0000), Russell King <rmk@arm.linux.org.uk> says: > > >>rmk@dyn-67:[bk]:<1030> /sbin/ip -6 route; sleep 10; /sbin/ip -6 route >>default via fe80::a00:2bff:fe95:1d7b dev eth0 proto kernel metric 1024 >> expires 169sec mtu 1500 advmss 1440 >>default via fe80::a00:2bff:fe95:1d7b dev eth0 proto kernel metric 1024 >> expires 168sec mtu 1500 advmss 1440 >> >>It appears that the expiry seconds here are actually in units of >>10 seconds. Maybe someone's double-converting kernel Hz to user Hz? >> > >Kernel exports in USER_HZ. >iproute2 seem to convert it again; workaround is to do "export HZ=100". > I've sent this fix to Stephen yesterday. Regards Patrick [-- Attachment #2: x --] [-- Type: text/plain, Size: 2821 bytes --] # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/01/29 10:59:53+01:00 kaber@coreworks.de # Use USER_HZ where necessary # # BitKeeper/etc/logging_ok # 2005/01/29 10:59:51+01:00 kaber@coreworks.de +1 -0 # Logging to logging@openlogging.org accepted # # tc/tc_util.c # 2005/01/29 10:59:48+01:00 kaber@coreworks.de +1 -1 # Use USER_HZ where necessary # # lib/utils.c # 2005/01/29 10:59:48+01:00 kaber@coreworks.de +7 -0 # Use USER_HZ where necessary # # ip/iproute.c # 2005/01/29 10:59:48+01:00 kaber@coreworks.de +3 -3 # Use USER_HZ where necessary # # include/utils.h # 2005/01/29 10:59:48+01:00 kaber@coreworks.de +10 -0 # Use USER_HZ where necessary # diff -Nru a/include/utils.h b/include/utils.h --- a/include/utils.h 2005-01-30 18:08:57 +01:00 +++ b/include/utils.h 2005-01-30 18:08:57 +01:00 @@ -113,4 +113,14 @@ return __iproute2_hz_internal; } +extern int __iproute2_user_hz_internal; +extern int __get_user_hz(void); + +static __inline__ int get_user_hz(void) +{ + if (__iproute2_user_hz_internal == 0) + __iproute2_user_hz_internal = __get_user_hz(); + return __iproute2_user_hz_internal; +} + #endif /* __UTILS_H__ */ diff -Nru a/ip/iproute.c b/ip/iproute.c --- a/ip/iproute.c 2005-01-30 18:08:57 +01:00 +++ b/ip/iproute.c 2005-01-30 18:08:57 +01:00 @@ -412,7 +412,7 @@ struct rta_cacheinfo *ci = RTA_DATA(tb[RTA_CACHEINFO]); static int hz; if (!hz) - hz = get_hz(); + hz = get_user_hz(); if (ci->rta_expires != 0) fprintf(fp, " expires %dsec", ci->rta_expires/hz); if (ci->rta_error != 0) @@ -439,7 +439,7 @@ if ((r->rtm_flags & RTM_F_CLONED) || (ci && ci->rta_expires)) { static int hz; if (!hz) - hz = get_hz(); + hz = get_user_hz(); if (r->rtm_flags & RTM_F_CLONED) fprintf(fp, "%s cache ", _SL_); if (ci->rta_expires) @@ -491,7 +491,7 @@ if (i-2 < sizeof(mx_names)/sizeof(char*)) fprintf(fp, " %s", mx_names[i-2]); else - fprintf(fp, " metric%d", i); + fprintf(fp, " metric %d", i); if (mxlock & (1<<i)) fprintf(fp, " lock"); diff -Nru a/lib/utils.c b/lib/utils.c --- a/lib/utils.c 2005-01-30 18:08:57 +01:00 +++ b/lib/utils.c 2005-01-30 18:08:57 +01:00 @@ -383,6 +383,13 @@ return HZ; } +int __iproute2_user_hz_internal; + +int __get_user_hz(void) +{ + return sysconf(_SC_CLK_TCK); +} + const char *rt_addr_n2a(int af, int len, const void *addr, char *buf, int buflen) { switch (af) { diff -Nru a/tc/tc_util.c b/tc/tc_util.c --- a/tc/tc_util.c 2005-01-30 18:08:57 +01:00 +++ b/tc/tc_util.c 2005-01-30 18:08:57 +01:00 @@ -417,7 +417,7 @@ void print_tm(FILE * f, const struct tcf_t *tm) { - int hz = get_hz(); + int hz = get_user_hz(); if (tm->install != 0) fprintf(f, " installed %d sec", tm->install/hz); if (tm->lastuse != 0) ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ip -6 route shows incorrect route expiry times 2005-01-30 17:09 ` Patrick McHardy @ 2005-01-31 2:37 ` David S. Miller 0 siblings, 0 replies; 6+ messages in thread From: David S. Miller @ 2005-01-31 2:37 UTC (permalink / raw) To: Patrick McHardy; +Cc: yoshfuji, rmk, netdev On Sun, 30 Jan 2005 18:09:56 +0100 Patrick McHardy <kaber@trash.net> wrote: > >Kernel exports in USER_HZ. > >iproute2 seem to convert it again; workaround is to do "export HZ=100". > > > I've sent this fix to Stephen yesterday. "HZ" should be defined in userspace as 100. Only the kernel should ever be able to see other settings. That is true even if userspace includes kernel headers. For example, on sparc64 asm/param.h does this: #ifdef __KERNEL__ # define HZ 1000 /* Internal kernel timer frequency */ # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ # define CLOCKS_PER_SEC (USER_HZ) #endif #ifndef HZ #define HZ 100 #endif ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2005-01-31 11:55 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-01-30 16:08 ip -6 route shows incorrect route expiry times Russell King 2005-01-30 16:29 ` YOSHIFUJI Hideaki / 吉藤英明 2005-01-30 16:30 ` YOSHIFUJI Hideaki / 吉藤英明 2005-01-31 11:55 ` Ville Nuorvala 2005-01-30 17:09 ` Patrick McHardy 2005-01-31 2:37 ` David S. Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).