Subject: Re: [PATCH 3/4 - rev 2] Initilize and populate age field

From: Varun Chandramohan <[email-masked]>
Date: Tue, 21 Aug 2007 16:52:35 +0530

Thomas Graf wrote:
> * Varun Chandramohan <[email-masked]> 2007-08-20 13:46
>   
>> 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 <[email-masked]>
>> @@ -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);
>>     
>
> Why don't you take the timestamp at the time of allocating the alias?
> This time-since-first-dump is very confusing.
>
>   
I know its a bit confusing but let me explain the reason. In my first
version patch i used fn_hash_insert() (place where alias is created)as
place to insert my current time in the age field.
This will eventually call fib_dump_info() for inserting the age filed
attribute into the skb. Now in both places i have to call
do_gettimeofday(). Its obvious that i need it in fn_hash_insert(), its
also need in fib_dump_info() as it is the same function called for
retrieving and dumping the age value to the userspace. So as you are
aware that before we dump it to userspace we need to subtract the value
with current time i need to call do_gettimeofday() twice. To avoid this
i did as above.
>> +	} 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;
>>     
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to [email-masked]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>   
Regards,
Varun