diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sockopt.c | 16 | ||||
| -rw-r--r-- | lib/sockopt.h | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/sockopt.c b/lib/sockopt.c index be22827f6e..257271bc0b 100644 --- a/lib/sockopt.c +++ b/lib/sockopt.c @@ -519,6 +519,22 @@ sockopt_iphdrincl_swab_systoh (struct ip *iph) } int +sockopt_tcp_rtt (int sock) +{ +#ifdef TCP_INFO + struct tcp_info ti; + socklen_t len = sizeof(ti); + + if (getsockopt (sock, IPPROTO_TCP, TCP_INFO, &ti, &len) != 0) + return 0; + + return ti.tcpi_rtt / 1000; +#else + return 0; +#endif +} + +int sockopt_tcp_signature (int sock, union sockunion *su, const char *password) { #if defined(HAVE_TCP_MD5_LINUX24) && defined(GNU_LINUX) diff --git a/lib/sockopt.h b/lib/sockopt.h index aced6d489f..cb14efc7ba 100644 --- a/lib/sockopt.h +++ b/lib/sockopt.h @@ -100,6 +100,7 @@ extern int getsockopt_ifindex (int, struct msghdr *); extern void sockopt_iphdrincl_swab_htosys (struct ip *iph); extern void sockopt_iphdrincl_swab_systoh (struct ip *iph); +extern int sockopt_tcp_rtt (int); extern int sockopt_tcp_signature(int sock, union sockunion *su, const char *password); #endif /*_ZEBRA_SOCKOPT_H */ |
