Re: Fire Engine??

Paul Menage
2003-11-26T19:59:16Z

David S. Miller wrote:
>
> Andi, I know this is a problem, but for the millionth time your idea
> does not work because we don't know if the user asked for the timestamp
> until we are deep within the recvmsg() processing, which is long after
> the packet has arrived.

How about tracking the number of current sockets that have had timestamp
requests for them? If this number is zero, don't bother with the
timestamps. The first time you get a SIOCGSTAMP ioctl on a given socket,
bump the count and set a flag; decrement the count when the socket is
destroyed if the flag is set.

The drawback is that the first SIOCGSTAMP on any particular socket will
have to return a bogus value (maybe just the current time?). Ways to
mitigate that are:

- have a /proc option to let the sysadmin enforce timestamps on all
packets (just bump the counter)

- bump the counter whenever an interface is in promiscuous mode (I
imagine that tcpdump et al are the main users of the timestamps?)

Paul