2003-01-21 15:35:33

by Maciej Soltysiak

[permalink] [raw]
Subject: SIOCGSTAMP does not work ?

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-----


2003-01-21 17:20:40

by David Miller

[permalink] [raw]
Subject: Re: SIOCGSTAMP does not work ?

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.

2003-01-22 07:36:19

by Alex Riesen

[permalink] [raw]
Subject: Re: SIOCGSTAMP does not work ?

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