Hi,
i was recently trying to use SIOCGSTAMP to get the date of the last packet
that arrived on the socket. like so:
struct timeval tv;
...
ioctl(fd, SIOCGSTAMP, &tv);
Unfortunately no matter how i tried that i always got errno: ENOENT, which
is explained by `man 7 ip':
SIOCGSTAMP was called on a socket where no packet arrived.
Little browsing through the net/ipv4 dir showed that there is a macro
TCP_CHECK_TIMER(sk) that is being used around tcp.c, tcp_ipv4.c and
tcp_timer.c
More grepping showed that TCP_CHECK_TIMER(sk) defined in include/net/tcp.h
does absolutely nothing!
#define TCP_CHECK_TIMER(sk) do { } while (0)
The questions are:
1. Is this all really related?
2. Why is TCP_CHECK_TIMER not coded ?
Regards,
Maciej Soltysiak
-----BEGIN GEEK CODE BLOCK-----
VERSION: 3.1
GIT/MU d-- s:- a-- C++ UL++++$ P L++++ E- W- N- K- w--- O! M- V- PS+ PE++
Y+ PGP- t+ 5-- X+ R tv- b DI+ D---- G e++>+++ h! y?
-----END GEEK CODE BLOCK-----
On Tue, 2003-01-21 at 07:44, Maciej Soltysiak wrote:
> 1. Is this all really related?
No.
> 2. Why is TCP_CHECK_TIMER not coded ?
It is a debugging check, it has nothing to do with SIOCGSTAMP.
Maciej Soltysiak, Tue, Jan 21, 2003 18:03:34 +0100:
> > > i was recently trying to use SIOCGSTAMP to get the date of the last packet
> > > that arrived on the socket. like so:
> >
> > which kernel?
> 2.4.20
>
> If you can, please try to get the timestamp on any socket using.
>
> struct timeval tv;
> ...
> ioctl (s, SIOCGSTAMP, &tv);
>
sorry for delay.
I don't think SIOCGSTAMP was designed to work on "any socket".
It retrieves the timestamp correctly for PF_PACKET sockets though.
I may want to look at the libpcap source.
-alex