Commit d9132d45 authored by Pavel Emelyanov's avatar Pavel Emelyanov

tcp: Move TCP-repair checking code into cr-check.c

travis-ci: success for series starting with [1/2] tcp: Move window checking code into cr-check.c
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent 044a29af
...@@ -923,6 +923,36 @@ static int check_cgroupns(void) ...@@ -923,6 +923,36 @@ static int check_cgroupns(void)
return 0; return 0;
} }
static int check_tcp(void)
{
socklen_t optlen;
int sk, ret;
int val;
sk = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sk < 0) {
pr_perror("Can't create TCP socket :(");
return -1;
}
val = 1;
ret = setsockopt(sk, SOL_TCP, TCP_REPAIR, &val, sizeof(val));
if (ret < 0) {
pr_perror("Can't turn TCP repair mode ON");
goto out;
}
optlen = sizeof(val);
ret = getsockopt(sk, SOL_TCP, TCP_TIMESTAMP, &val, &optlen);
if (ret)
pr_perror("Can't get TCP_TIMESTAMP");
out:
close(sk);
return ret;
}
static int check_tcp_halt_closed(void) static int check_tcp_halt_closed(void)
{ {
int ret; int ret;
......
...@@ -75,8 +75,6 @@ extern int restore_one_tcp(int sk, struct inet_sk_info *si); ...@@ -75,8 +75,6 @@ extern int restore_one_tcp(int sk, struct inet_sk_info *si);
#define SK_EST_PARAM "tcp-established" #define SK_EST_PARAM "tcp-established"
#define SK_INFLIGHT_PARAM "skip-in-flight" #define SK_INFLIGHT_PARAM "skip-in-flight"
extern int check_tcp(void);
struct task_restore_args; struct task_restore_args;
int prepare_tcp_socks(struct task_restore_args *); int prepare_tcp_socks(struct task_restore_args *);
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include "../soccr/soccr.h" #include "../soccr/soccr.h"
#include "cr_options.h"
#include "util.h" #include "util.h"
#include "common/list.h" #include "common/list.h"
#include "log.h" #include "log.h"
...@@ -31,17 +30,6 @@ ...@@ -31,17 +30,6 @@
static LIST_HEAD(cpt_tcp_repair_sockets); static LIST_HEAD(cpt_tcp_repair_sockets);
static LIST_HEAD(rst_tcp_repair_sockets); static LIST_HEAD(rst_tcp_repair_sockets);
static int tcp_repair_on(int fd)
{
int ret, aux = 1;
ret = setsockopt(fd, SOL_TCP, TCP_REPAIR, &aux, sizeof(aux));
if (ret < 0)
pr_perror("Can't turn TCP repair mode ON");
return ret;
}
static int tcp_repair_establised(int fd, struct inet_sk_desc *sk) static int tcp_repair_establised(int fd, struct inet_sk_desc *sk)
{ {
int ret; int ret;
...@@ -446,31 +434,3 @@ void rst_unlock_tcp_connections(void) ...@@ -446,31 +434,3 @@ void rst_unlock_tcp_connections(void)
list_for_each_entry(ii, &rst_tcp_repair_sockets, rlist) list_for_each_entry(ii, &rst_tcp_repair_sockets, rlist)
nf_unlock_connection_info(ii); nf_unlock_connection_info(ii);
} }
int check_tcp(void)
{
socklen_t optlen;
int sk, ret;
int val;
sk = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sk < 0) {
pr_perror("Can't create TCP socket :(");
return -1;
}
ret = tcp_repair_on(sk);
if (ret)
goto out;
optlen = sizeof(val);
ret = getsockopt(sk, SOL_TCP, TCP_TIMESTAMP, &val, &optlen);
if (ret)
pr_perror("Can't get TCP_TIMESTAMP");
out:
close(sk);
return ret;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment