* [PATCH 3/4 -rev1] Initilize and populate age field
@ 2007-07-26 5:15 Varun Chandramohan
2007-07-26 6:03 ` Eric Dumazet
0 siblings, 1 reply; 6+ messages in thread
From: Varun Chandramohan @ 2007-07-26 5:15 UTC (permalink / raw)
To: davem; +Cc: netdev, kaber, socketcan, shemminger, krkumar2
The age field is filled with the current time at the time of creation of the route. When the routes are dumped
then the age value stored in the route structure is subtracted from the current time value and the difference is the age expressed in secs.
Signed-off-by: Varun Chandramohan <varunc@linux.vnet.ibm.com>
---
net/ipv4/fib_hash.c | 3 +++
net/ipv4/fib_lookup.h | 3 ++-
net/ipv4/fib_semantics.c | 16 +++++++++++++---
net/ipv4/fib_trie.c | 1 +
4 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c
index 07e843a..faa7364 100644
--- a/net/ipv4/fib_hash.c
+++ b/net/ipv4/fib_hash.c
@@ -448,6 +448,7 @@ static int fn_hash_insert(struct fib_tab
fa->fa_info = fi;
fa->fa_type = cfg->fc_type;
fa->fa_scope = cfg->fc_scope;
+ fa->fa_age = 0;
state = fa->fa_state;
fa->fa_state &= ~FA_S_ACCESSED;
fib_hash_genid++;
@@ -507,6 +508,7 @@ static int fn_hash_insert(struct fib_tab
new_fa->fa_type = cfg->fc_type;
new_fa->fa_scope = cfg->fc_scope;
new_fa->fa_state = 0;
+ new_fa->fa_age = 0;
/*
* Insert new entry to the list.
@@ -697,6 +699,7 @@ fn_hash_dump_bucket(struct sk_buff *skb,
f->fn_key,
fz->fz_order,
fa->fa_tos,
+ &fa->fa_age,
fa->fa_info,
NLM_F_MULTI) < 0) {
cb->args[4] = i;
diff --git a/net/ipv4/fib_lookup.h b/net/ipv4/fib_lookup.h
index eef9eec..c9145b5 100644
--- a/net/ipv4/fib_lookup.h
+++ b/net/ipv4/fib_lookup.h
@@ -13,6 +13,7 @@ struct fib_alias {
u8 fa_type;
u8 fa_scope;
u8 fa_state;
+ time_t fa_age;
};
#define FA_S_ACCESSED 0x01
@@ -27,7 +28,7 @@ extern struct fib_info *fib_create_info(
extern int fib_nh_match(struct fib_config *cfg, struct fib_info *fi);
extern int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
u32 tb_id, u8 type, u8 scope, __be32 dst,
- int dst_len, u8 tos, struct fib_info *fi,
+ int dst_len, u8 tos, time_t *age, struct fib_info *fi,
unsigned int);
extern void rtmsg_fib(int event, __be32 key, struct fib_alias *fa,
int dst_len, u32 tb_id, struct nl_info *info,
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index c434119..1822d92 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -278,7 +278,8 @@ static inline size_t fib_nlmsg_size(stru
+ nla_total_size(4) /* RTA_TABLE */
+ nla_total_size(4) /* RTA_DST */
+ nla_total_size(4) /* RTA_PRIORITY */
- + nla_total_size(4); /* RTA_PREFSRC */
+ + nla_total_size(4) /* RTA_PREFSRC */
+ + nla_total_size(4); /*RTA_AGE*/
/* space for nested metrics */
payload += nla_total_size((RTAX_MAX * nla_total_size(4)));
@@ -313,7 +314,7 @@ void rtmsg_fib(int event, __be32 key, st
err = fib_dump_info(skb, info->pid, seq, event, tb_id,
fa->fa_type, fa->fa_scope, key, dst_len,
- fa->fa_tos, fa->fa_info, nlm_flags);
+ fa->fa_tos, &fa->fa_age, fa->fa_info, nlm_flags);
if (err < 0) {
/* -EMSGSIZE implies BUG in fib_nlmsg_size() */
WARN_ON(err == -EMSGSIZE);
@@ -940,11 +941,12 @@ __be32 __fib_res_prefsrc(struct fib_resu
}
int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
- u32 tb_id, u8 type, u8 scope, __be32 dst, int dst_len, u8 tos,
+ u32 tb_id, u8 type, u8 scope, __be32 dst, int dst_len, u8 tos, time_t *age,
struct fib_info *fi, unsigned int flags)
{
struct nlmsghdr *nlh;
struct rtmsg *rtm;
+ struct timeval tv;
nlh = nlmsg_put(skb, pid, seq, event, sizeof(*rtm), flags);
if (nlh == NULL)
@@ -985,6 +987,14 @@ int fib_dump_info(struct sk_buff *skb, u
NLA_PUT_U32(skb, RTA_FLOW, fi->fib_nh[0].nh_tclassid);
#endif
}
+
+ do_gettimeofday(&tv);
+ if (!*age) {
+ *age = timeval_to_sec(&tv);
+ NLA_PUT_U32(skb, RTA_AGE, *age);
+ } else {
+ NLA_PUT_U32(skb, RTA_AGE, timeval_to_sec(&tv) - *age);
+ }
#ifdef CONFIG_IP_ROUTE_MULTIPATH
if (fi->fib_nhs > 1) {
struct rtnexthop *rtnh;
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
index 30e332a..be2d1d6 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -1884,6 +1884,7 @@ static int fn_trie_dump_fa(t_key key, in
xkey,
plen,
fa->fa_tos,
+ &fa->fa_age,
fa->fa_info, 0) < 0) {
cb->args[4] = i;
return -1;
--
1.4.3.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 3/4 -rev1] Initilize and populate age field
2007-07-26 5:15 [PATCH 3/4 -rev1] Initilize and populate age field Varun Chandramohan
@ 2007-07-26 6:03 ` Eric Dumazet
2007-07-26 6:27 ` Varun Chandramohan
0 siblings, 1 reply; 6+ messages in thread
From: Eric Dumazet @ 2007-07-26 6:03 UTC (permalink / raw)
To: Varun Chandramohan; +Cc: davem, netdev, kaber, socketcan, shemminger, krkumar2
Varun Chandramohan a écrit :
> The age field is filled with the current time at the time of creation of the route. When the routes are dumped
> then the age value stored in the route structure is subtracted from the current time value and the difference is the age expressed in secs.
>
> Signed-off-by: Varun Chandramohan <varunc@linux.vnet.ibm.com>
> ---
> net/ipv4/fib_hash.c | 3 +++
> net/ipv4/fib_lookup.h | 3 ++-
> net/ipv4/fib_semantics.c | 16 +++++++++++++---
> net/ipv4/fib_trie.c | 1 +
> 4 files changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c
> index 07e843a..faa7364 100644
> --- a/net/ipv4/fib_hash.c
> +++ b/net/ipv4/fib_hash.c
> @@ -448,6 +448,7 @@ static int fn_hash_insert(struct fib_tab
> fa->fa_info = fi;
> fa->fa_type = cfg->fc_type;
> fa->fa_scope = cfg->fc_scope;
> + fa->fa_age = 0;
> state = fa->fa_state;
> fa->fa_state &= ~FA_S_ACCESSED;
> fib_hash_genid++;
> @@ -507,6 +508,7 @@ static int fn_hash_insert(struct fib_tab
> new_fa->fa_type = cfg->fc_type;
> new_fa->fa_scope = cfg->fc_scope;
> new_fa->fa_state = 0;
> + new_fa->fa_age = 0;
>
> /*
> * Insert new entry to the list.
> @@ -697,6 +699,7 @@ fn_hash_dump_bucket(struct sk_buff *skb,
> f->fn_key,
> fz->fz_order,
> fa->fa_tos,
> + &fa->fa_age,
> fa->fa_info,
> NLM_F_MULTI) < 0) {
> cb->args[4] = i;
> diff --git a/net/ipv4/fib_lookup.h b/net/ipv4/fib_lookup.h
> index eef9eec..c9145b5 100644
> --- a/net/ipv4/fib_lookup.h
> +++ b/net/ipv4/fib_lookup.h
> @@ -13,6 +13,7 @@ struct fib_alias {
> u8 fa_type;
> u8 fa_scope;
> u8 fa_state;
> + time_t fa_age;
> };
>
> #define FA_S_ACCESSED 0x01
> @@ -27,7 +28,7 @@ extern struct fib_info *fib_create_info(
> extern int fib_nh_match(struct fib_config *cfg, struct fib_info *fi);
> extern int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
> u32 tb_id, u8 type, u8 scope, __be32 dst,
> - int dst_len, u8 tos, struct fib_info *fi,
> + int dst_len, u8 tos, time_t *age, struct fib_info *fi,
> unsigned int);
> extern void rtmsg_fib(int event, __be32 key, struct fib_alias *fa,
> int dst_len, u32 tb_id, struct nl_info *info,
> diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
> index c434119..1822d92 100644
> --- a/net/ipv4/fib_semantics.c
> +++ b/net/ipv4/fib_semantics.c
> @@ -278,7 +278,8 @@ static inline size_t fib_nlmsg_size(stru
> + nla_total_size(4) /* RTA_TABLE */
> + nla_total_size(4) /* RTA_DST */
> + nla_total_size(4) /* RTA_PRIORITY */
> - + nla_total_size(4); /* RTA_PREFSRC */
> + + nla_total_size(4) /* RTA_PREFSRC */
> + + nla_total_size(4); /*RTA_AGE*/
Not clear to me what happens on platforms where sizeof(time_t) is 8
>
> /* space for nested metrics */
> payload += nla_total_size((RTAX_MAX * nla_total_size(4)));
> @@ -313,7 +314,7 @@ void rtmsg_fib(int event, __be32 key, st
>
> err = fib_dump_info(skb, info->pid, seq, event, tb_id,
> fa->fa_type, fa->fa_scope, key, dst_len,
> - fa->fa_tos, fa->fa_info, nlm_flags);
> + fa->fa_tos, &fa->fa_age, fa->fa_info, nlm_flags);
> if (err < 0) {
> /* -EMSGSIZE implies BUG in fib_nlmsg_size() */
> WARN_ON(err == -EMSGSIZE);
> @@ -940,11 +941,12 @@ __be32 __fib_res_prefsrc(struct fib_resu
> }
>
> int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
> - u32 tb_id, u8 type, u8 scope, __be32 dst, int dst_len, u8 tos,
> + u32 tb_id, u8 type, u8 scope, __be32 dst, int dst_len, u8 tos, time_t *age,
> struct fib_info *fi, unsigned int flags)
> {
> struct nlmsghdr *nlh;
> struct rtmsg *rtm;
> + struct timeval tv;
>
> nlh = nlmsg_put(skb, pid, seq, event, sizeof(*rtm), flags);
> if (nlh == NULL)
> @@ -985,6 +987,14 @@ int fib_dump_info(struct sk_buff *skb, u
> NLA_PUT_U32(skb, RTA_FLOW, fi->fib_nh[0].nh_tclassid);
> #endif
> }
> +
> + do_gettimeofday(&tv);
> + if (!*age) {
> + *age = timeval_to_sec(&tv);
> + NLA_PUT_U32(skb, RTA_AGE, *age);
here, what happens if sizeof(time_t) is not 4 ?
> + } else {
> + NLA_PUT_U32(skb, RTA_AGE, timeval_to_sec(&tv) - *age);
> + }
> #ifdef CONFIG_IP_ROUTE_MULTIPATH
> if (fi->fib_nhs > 1) {
> struct rtnexthop *rtnh;
> diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
> index 30e332a..be2d1d6 100644
> --- a/net/ipv4/fib_trie.c
> +++ b/net/ipv4/fib_trie.c
> @@ -1884,6 +1884,7 @@ static int fn_trie_dump_fa(t_key key, in
> xkey,
> plen,
> fa->fa_tos,
> + &fa->fa_age,
> fa->fa_info, 0) < 0) {
> cb->args[4] = i;
> return -1;
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/4 -rev1] Initilize and populate age field
2007-07-26 6:03 ` Eric Dumazet
@ 2007-07-26 6:27 ` Varun Chandramohan
2007-07-26 6:37 ` Eric Dumazet
0 siblings, 1 reply; 6+ messages in thread
From: Varun Chandramohan @ 2007-07-26 6:27 UTC (permalink / raw)
To: Eric Dumazet; +Cc: davem, netdev, kaber, socketcan, shemminger, krkumar2
Eric Dumazet wrote:
> Varun Chandramohan a écrit :
>> The age field is filled with the current time at the time of creation
>> of the route. When the routes are dumped
>> then the age value stored in the route structure is subtracted from
>> the current time value and the difference is the age expressed in secs.
>>
>> Signed-off-by: Varun Chandramohan <varunc@linux.vnet.ibm.com>
>> ---
>> net/ipv4/fib_hash.c | 3 +++
>> net/ipv4/fib_lookup.h | 3 ++-
>> net/ipv4/fib_semantics.c | 16 +++++++++++++---
>> net/ipv4/fib_trie.c | 1 +
>> 4 files changed, 19 insertions(+), 4 deletions(-)
>>
>> diff --git a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c
>> index 07e843a..faa7364 100644
>> --- a/net/ipv4/fib_hash.c
>> +++ b/net/ipv4/fib_hash.c
>> @@ -448,6 +448,7 @@ static int fn_hash_insert(struct fib_tab
>> fa->fa_info = fi;
>> fa->fa_type = cfg->fc_type;
>> fa->fa_scope = cfg->fc_scope;
>> + fa->fa_age = 0;
>> state = fa->fa_state;
>> fa->fa_state &= ~FA_S_ACCESSED;
>> fib_hash_genid++;
>> @@ -507,6 +508,7 @@ static int fn_hash_insert(struct fib_tab
>> new_fa->fa_type = cfg->fc_type;
>> new_fa->fa_scope = cfg->fc_scope;
>> new_fa->fa_state = 0;
>> + new_fa->fa_age = 0;
>>
>> /*
>> * Insert new entry to the list.
>> @@ -697,6 +699,7 @@ fn_hash_dump_bucket(struct sk_buff *skb,
>> f->fn_key,
>> fz->fz_order,
>> fa->fa_tos,
>> + &fa->fa_age,
>> fa->fa_info,
>> NLM_F_MULTI) < 0) {
>> cb->args[4] = i;
>> diff --git a/net/ipv4/fib_lookup.h b/net/ipv4/fib_lookup.h
>> index eef9eec..c9145b5 100644
>> --- a/net/ipv4/fib_lookup.h
>> +++ b/net/ipv4/fib_lookup.h
>> @@ -13,6 +13,7 @@ struct fib_alias {
>> u8 fa_type;
>> u8 fa_scope;
>> u8 fa_state;
>> + time_t fa_age;
>> };
>>
>> #define FA_S_ACCESSED 0x01
>> @@ -27,7 +28,7 @@ extern struct fib_info *fib_create_info(
>> extern int fib_nh_match(struct fib_config *cfg, struct fib_info *fi);
>> extern int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int
>> event,
>> u32 tb_id, u8 type, u8 scope, __be32 dst,
>> - int dst_len, u8 tos, struct fib_info *fi,
>> + int dst_len, u8 tos, time_t *age, struct fib_info *fi,
>> unsigned int);
>> extern void rtmsg_fib(int event, __be32 key, struct fib_alias *fa,
>> int dst_len, u32 tb_id, struct nl_info *info,
>> diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
>> index c434119..1822d92 100644
>> --- a/net/ipv4/fib_semantics.c
>> +++ b/net/ipv4/fib_semantics.c
>> @@ -278,7 +278,8 @@ static inline size_t fib_nlmsg_size(stru
>> + nla_total_size(4) /* RTA_TABLE */
>> + nla_total_size(4) /* RTA_DST */
>> + nla_total_size(4) /* RTA_PRIORITY */
>> - + nla_total_size(4); /* RTA_PREFSRC */
>> + + nla_total_size(4) /* RTA_PREFSRC */
>> + + nla_total_size(4); /*RTA_AGE*/
>
> Not clear to me what happens on platforms where sizeof(time_t) is 8
>
I was aware of this issue, but the reason we decided to go with 4 is
that netlink is defined for use across a network. Since the size of
time_t varies in different architecture, it would mean that a system
with size 4 may not be able to talk to system with size 8. So i made it
constant. So in the above case we round off to 4.
>
>>
>> /* space for nested metrics */
>> payload += nla_total_size((RTAX_MAX * nla_total_size(4)));
>> @@ -313,7 +314,7 @@ void rtmsg_fib(int event, __be32 key, st
>>
>> err = fib_dump_info(skb, info->pid, seq, event, tb_id,
>> fa->fa_type, fa->fa_scope, key, dst_len,
>> - fa->fa_tos, fa->fa_info, nlm_flags);
>> + fa->fa_tos, &fa->fa_age, fa->fa_info, nlm_flags);
>> if (err < 0) {
>> /* -EMSGSIZE implies BUG in fib_nlmsg_size() */
>> WARN_ON(err == -EMSGSIZE);
>> @@ -940,11 +941,12 @@ __be32 __fib_res_prefsrc(struct fib_resu
>> }
>>
>> int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
>> - u32 tb_id, u8 type, u8 scope, __be32 dst, int dst_len, u8
>> tos,
>> + u32 tb_id, u8 type, u8 scope, __be32 dst, int dst_len, u8
>> tos, time_t *age,
>> struct fib_info *fi, unsigned int flags)
>> {
>> struct nlmsghdr *nlh;
>> struct rtmsg *rtm;
>> + struct timeval tv;
>>
>> nlh = nlmsg_put(skb, pid, seq, event, sizeof(*rtm), flags);
>> if (nlh == NULL)
>> @@ -985,6 +987,14 @@ int fib_dump_info(struct sk_buff *skb, u
>> NLA_PUT_U32(skb, RTA_FLOW, fi->fib_nh[0].nh_tclassid);
>> #endif
>> }
>> +
>> + do_gettimeofday(&tv);
>> + if (!*age) {
>> + *age = timeval_to_sec(&tv);
>> + NLA_PUT_U32(skb, RTA_AGE, *age);
>
> here, what happens if sizeof(time_t) is not 4 ?
>
Same case as above :-) comments?
>> + } else {
>> + NLA_PUT_U32(skb, RTA_AGE, timeval_to_sec(&tv) - *age);
>> + }
>> #ifdef CONFIG_IP_ROUTE_MULTIPATH
>> if (fi->fib_nhs > 1) {
>> struct rtnexthop *rtnh;
>> diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
>> index 30e332a..be2d1d6 100644
>> --- a/net/ipv4/fib_trie.c
>> +++ b/net/ipv4/fib_trie.c
>> @@ -1884,6 +1884,7 @@ static int fn_trie_dump_fa(t_key key, in
>> xkey,
>> plen,
>> fa->fa_tos,
>> + &fa->fa_age,
>> fa->fa_info, 0) < 0) {
>> cb->args[4] = i;
>> return -1;
>
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/4 -rev1] Initilize and populate age field
2007-07-26 6:27 ` Varun Chandramohan
@ 2007-07-26 6:37 ` Eric Dumazet
2007-07-26 6:59 ` Varun Chandramohan
0 siblings, 1 reply; 6+ messages in thread
From: Eric Dumazet @ 2007-07-26 6:37 UTC (permalink / raw)
To: Varun Chandramohan; +Cc: davem, netdev, kaber, socketcan, shemminger, krkumar2
Varun Chandramohan a écrit :
> Eric Dumazet wrote:
>> Varun Chandramohan a écrit :
>>> The age field is filled with the current time at the time of creation
>>> of the route. When the routes are dumped
>>> then the age value stored in the route structure is subtracted from
>>> the current time value and the difference is the age expressed in secs.
>>>
>>> }
>>> +
>>> + do_gettimeofday(&tv);
>>> + if (!*age) {
>>> + *age = timeval_to_sec(&tv);
>>> + NLA_PUT_U32(skb, RTA_AGE, *age);
>> here, what happens if sizeof(time_t) is not 4 ?
>>
> Same case as above :-) comments?
So you are confident it (truncation from 8 to 4 bytes) works well on Big
endian arches as well as Little endian arches ? :-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/4 -rev1] Initilize and populate age field
2007-07-26 6:37 ` Eric Dumazet
@ 2007-07-26 6:59 ` Varun Chandramohan
0 siblings, 0 replies; 6+ messages in thread
From: Varun Chandramohan @ 2007-07-26 6:59 UTC (permalink / raw)
To: Eric Dumazet; +Cc: davem, netdev, kaber, socketcan, shemminger, krkumar2
Eric Dumazet wrote:
> Varun Chandramohan a écrit :
>> Eric Dumazet wrote:
>>> Varun Chandramohan a écrit :
>>>> The age field is filled with the current time at the time of creation
>>>> of the route. When the routes are dumped
>>>> then the age value stored in the route structure is subtracted from
>>>> the current time value and the difference is the age expressed in
>>>> secs.
>>>>
>>>> }
>>>> +
>>>> + do_gettimeofday(&tv);
>>>> + if (!*age) {
>>>> + *age = timeval_to_sec(&tv);
>>>> + NLA_PUT_U32(skb, RTA_AGE, *age);
>>> here, what happens if sizeof(time_t) is not 4 ?
>>>
>> Same case as above :-) comments?
>
> So you are confident it (truncation from 8 to 4 bytes) works well on
> Big endian arches as well as Little endian arches ? :-)
>
I suppose so. But i must admit i have'nt tested it on Big endian arch
though!!!
>
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/4 -rev1] Initilize and populate age field
@ 2007-08-07 4:52 Varun Chandramohan
0 siblings, 0 replies; 6+ messages in thread
From: Varun Chandramohan @ 2007-08-07 4:52 UTC (permalink / raw)
To: Eric Dumazet
Cc: David Miller, netdev, Patrick McHardy, Oliver Hartkopp,
Stephen Hemminger
Hi Eric,
Sorry for the late response. I just need few
clarifications.
*age = timeval_to_sec(&tv);
>>>> + NLA_PUT_U32(skb, RTA_AGE, *age);
>>> here, what happens if sizeof(time_t) is not 4 ?
Did you mean that the above should be like this?
NLA_PUT_U32(skb, RTA_AGE, (unsigned int) *age);
return tv->tv_sec + (tv->tv_usec ? 1 : 0);
is much faster
So can we say that "usec" is *always *< 1000000 ?
Regards,
Varun
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2007-08-07 4:51 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-26 5:15 [PATCH 3/4 -rev1] Initilize and populate age field Varun Chandramohan
2007-07-26 6:03 ` Eric Dumazet
2007-07-26 6:27 ` Varun Chandramohan
2007-07-26 6:37 ` Eric Dumazet
2007-07-26 6:59 ` Varun Chandramohan
-- strict thread matches above, loose matches on Subject: below --
2007-08-07 4:52 Varun Chandramohan
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).