mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-22 09:39:13 +00:00
zdtm: adapt all tcp tests for ipv6
Signed-off-by: Andrey Vagin <avagin@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
6b2d7f0799
commit
b7cffae5d4
13 changed files with 83 additions and 23 deletions
|
|
@ -46,6 +46,7 @@ static/pstree
|
|||
static/caps00
|
||||
static/cmdlinenv00
|
||||
static/socket_listen
|
||||
static/socket_listen6
|
||||
static/packet_sock
|
||||
static/socket_udp
|
||||
static/sock_filter
|
||||
|
|
@ -80,8 +81,11 @@ TEST_LIST="$TEST_LIST
|
|||
static/file_fown
|
||||
static/socket-ext
|
||||
static/socket-tcp
|
||||
static/socket-tcp6
|
||||
streaming/socket-tcp
|
||||
streaming/socket-tcp6
|
||||
static/socket-tcpbuf
|
||||
static/socket-tcpbuf6
|
||||
static/pty03
|
||||
"
|
||||
|
||||
|
|
|
|||
|
|
@ -4,16 +4,28 @@
|
|||
|
||||
#include "zdtmtst.h"
|
||||
|
||||
int tcp_init_server(int *port)
|
||||
union sockaddr_inet {
|
||||
struct sockaddr_in v4;
|
||||
struct sockaddr_in6 v6;
|
||||
};
|
||||
|
||||
int tcp_init_server(int family, int *port)
|
||||
{
|
||||
struct sockaddr_in addr;
|
||||
union sockaddr_inet addr;
|
||||
int sock;
|
||||
int yes = 1, ret;
|
||||
|
||||
memset(&addr,0,sizeof(addr));
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_addr.s_addr = inet_addr("0.0.0.0");
|
||||
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (family == AF_INET) {
|
||||
addr.v4.sin_family = family;
|
||||
inet_pton(family, "0.0.0.0", &(addr.v4.sin_addr));
|
||||
} else if (family == AF_INET6){
|
||||
addr.v6.sin6_family = family;
|
||||
inet_pton(family, "::0", &(addr.v6.sin6_addr));
|
||||
} else
|
||||
return -1;
|
||||
|
||||
sock = socket(family, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (sock == -1) {
|
||||
err ("socket() failed %m");
|
||||
return -1;
|
||||
|
|
@ -25,7 +37,11 @@ int tcp_init_server(int *port)
|
|||
}
|
||||
|
||||
while (1) {
|
||||
addr.sin_port = htons(*port);
|
||||
if (family == AF_INET)
|
||||
addr.v4.sin_port = htons(*port);
|
||||
else if (family == AF_INET6)
|
||||
addr.v6.sin6_port = htons(*port);
|
||||
|
||||
ret = bind(sock, (struct sockaddr *) &addr, sizeof(addr));
|
||||
|
||||
/* crtools doesn't restore sock opts, so we need this hack */
|
||||
|
|
@ -71,20 +87,26 @@ int tcp_accept_server(int sock)
|
|||
return sock2;
|
||||
}
|
||||
|
||||
int tcp_init_client(char *servIP, unsigned short servPort)
|
||||
int tcp_init_client(int family, char *servIP, unsigned short servPort)
|
||||
{
|
||||
int sock;
|
||||
struct sockaddr_in servAddr;
|
||||
union sockaddr_inet servAddr;
|
||||
|
||||
if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
|
||||
if ((sock = socket(family, SOCK_STREAM, IPPROTO_TCP)) < 0) {
|
||||
err("can't create socket %m");
|
||||
return -1;
|
||||
}
|
||||
/* Construct the server address structure */
|
||||
memset(&servAddr, 0, sizeof(servAddr));
|
||||
servAddr.sin_family = AF_INET;
|
||||
servAddr.sin_addr.s_addr = inet_addr(servIP);
|
||||
servAddr.sin_port = htons(servPort);
|
||||
if (family == AF_INET) {
|
||||
servAddr.v4.sin_family = AF_INET;
|
||||
servAddr.v4.sin_port = htons(servPort);
|
||||
inet_pton(AF_INET, servIP, &servAddr.v4.sin_addr);
|
||||
} else {
|
||||
servAddr.v6.sin6_family = AF_INET6;
|
||||
servAddr.v6.sin6_port = htons(servPort);
|
||||
inet_pton(AF_INET6, servIP, &servAddr.v6.sin6_addr);
|
||||
}
|
||||
if (connect(sock, (struct sockaddr *) &servAddr, sizeof(servAddr)) < 0) {
|
||||
err("can't connect to server %m");
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -111,8 +111,8 @@ extern void task_waiter_fini(task_waiter_t *t);
|
|||
extern void task_waiter_wait4(task_waiter_t *t, unsigned int lockid);
|
||||
extern void task_waiter_complete(task_waiter_t *t, unsigned int lockid);
|
||||
extern void task_waiter_complete_current(task_waiter_t *t);
|
||||
extern int tcp_init_server(int *port);
|
||||
extern int tcp_init_server(int family, int *port);
|
||||
extern int tcp_accept_server(int sock);
|
||||
extern int tcp_init_client(char *servIP, unsigned short servPort);
|
||||
extern int tcp_init_client(int family, char *servIP, unsigned short servPort);
|
||||
|
||||
#endif /* _VIMITESU_H_ */
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ TST_NOFILE = \
|
|||
sched_prio00 \
|
||||
sched_policy00 \
|
||||
socket_listen \
|
||||
socket_listen6 \
|
||||
socket_udp \
|
||||
socket6_udp \
|
||||
socket_udplite \
|
||||
|
|
@ -47,7 +48,9 @@ TST_NOFILE = \
|
|||
socket_queues \
|
||||
socket_queues02 \
|
||||
socket-tcp \
|
||||
socket-tcp6 \
|
||||
socket-tcpbuf \
|
||||
socket-tcpbuf6 \
|
||||
sock_opts00 \
|
||||
sock_opts01 \
|
||||
sk-unix-unconn \
|
||||
|
|
@ -209,6 +212,9 @@ shm: override CFLAGS += -DNEW_IPC_NS
|
|||
msgque: override CFLAGS += -DNEW_IPC_NS
|
||||
sem: override CFLAGS += -DNEW_IPC_NS
|
||||
posix_timers: override LDLIBS += -lrt
|
||||
socket-tcp6: override CFLAGS += -D ZDTM_IPV6
|
||||
socket-tcpbuf6: override CFLAGS += -D ZDTM_IPV6
|
||||
socket_listen6: override CFLAGS += -D ZDTM_IPV6
|
||||
|
||||
$(LIB): force
|
||||
$(MAKE) -C $(LIBDIR)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
#include "zdtmtst.h"
|
||||
|
||||
#ifdef ZDTM_IPV6
|
||||
#define ZDTM_FAMILY AF_INET6
|
||||
#else
|
||||
#define ZDTM_FAMILY AF_INET
|
||||
#endif
|
||||
|
||||
const char *test_doc = "Check, that a TCP connection can be restored\n";
|
||||
const char *test_author = "Andrey Vagin <avagin@parallels.com";
|
||||
|
||||
|
|
@ -10,6 +16,7 @@ const char *test_author = "Andrey Vagin <avagin@parallels.com";
|
|||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#include <netinet/tcp.h>
|
||||
|
||||
static int port = 8880;
|
||||
|
||||
|
|
@ -70,7 +77,7 @@ int main(int argc, char **argv)
|
|||
return 1;
|
||||
}
|
||||
|
||||
fd = tcp_init_client("127.0.0.1", port);
|
||||
fd = tcp_init_client(ZDTM_FAMILY, "localhost", port);
|
||||
if (fd < 0)
|
||||
return 1;
|
||||
|
||||
|
|
@ -108,7 +115,7 @@ int main(int argc, char **argv)
|
|||
|
||||
test_init(argc, argv);
|
||||
|
||||
if ((fd_s = tcp_init_server(&port)) < 0) {
|
||||
if ((fd_s = tcp_init_server(ZDTM_FAMILY, &port)) < 0) {
|
||||
err("initializing server failed");
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
1
test/zdtm/live/static/socket-tcp6.c
Symbolic link
1
test/zdtm/live/static/socket-tcp6.c
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
socket-tcp.c
|
||||
|
|
@ -1,5 +1,11 @@
|
|||
#include "zdtmtst.h"
|
||||
|
||||
#ifdef ZDTM_IPV6
|
||||
#define ZDTM_FAMILY AF_INET6
|
||||
#else
|
||||
#define ZDTM_FAMILY AF_INET
|
||||
#endif
|
||||
|
||||
const char *test_doc = "Check full tcp buffers with custom sizes\n";
|
||||
const char *test_author = "Andrey Vagin <avagin@parallels.com";
|
||||
|
||||
|
|
@ -12,6 +18,7 @@ const char *test_author = "Andrey Vagin <avagin@parallels.com";
|
|||
#include <signal.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/tcp.h>
|
||||
|
||||
static int port = 8880;
|
||||
|
||||
|
|
@ -110,11 +117,11 @@ int main(int argc, char **argv)
|
|||
return 1;
|
||||
}
|
||||
|
||||
fd = tcp_init_client("127.0.0.1", port);
|
||||
fd = tcp_init_client(ZDTM_FAMILY, "127.0.0.1", port);
|
||||
if (fd < 0)
|
||||
return 1;
|
||||
|
||||
ctl_fd = tcp_init_client("127.0.0.1", port);
|
||||
ctl_fd = tcp_init_client(ZDTM_FAMILY, "127.0.0.1", port);
|
||||
if (fd < 0)
|
||||
return 1;
|
||||
|
||||
|
|
@ -149,7 +156,7 @@ int main(int argc, char **argv)
|
|||
|
||||
test_init(argc, argv);
|
||||
|
||||
if ((fd_s = tcp_init_server(&port)) < 0) {
|
||||
if ((fd_s = tcp_init_server(ZDTM_FAMILY, &port)) < 0) {
|
||||
err("initializing server failed");
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
1
test/zdtm/live/static/socket-tcpbuf6.c
Symbolic link
1
test/zdtm/live/static/socket-tcpbuf6.c
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
socket-tcpbuf.c
|
||||
|
|
@ -17,6 +17,7 @@ const char *test_author = "Andrew Vagin <avagin@parallels.com>";
|
|||
#include <stdlib.h>
|
||||
#include <aio.h>
|
||||
#include <wait.h>
|
||||
#include <netinet/tcp.h>
|
||||
|
||||
static int port = 8880;
|
||||
|
||||
|
|
@ -34,7 +35,7 @@ int main(int argc, char **argv)
|
|||
|
||||
test_init(argc, argv);
|
||||
|
||||
if ((fd_s = tcp_init_server(&port)) < 0) {
|
||||
if ((fd_s = tcp_init_server(AF_INET, &port)) < 0) {
|
||||
err("initializing server failed");
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -50,7 +51,7 @@ int main(int argc, char **argv)
|
|||
* Chiled is client of TCP connection
|
||||
*/
|
||||
close(fd_s);
|
||||
fd = tcp_init_client("127.0.0.1", port);
|
||||
fd = tcp_init_client(AF_INET, "127.0.0.1", port);
|
||||
if (fd < 0)
|
||||
return 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
#include "zdtmtst.h"
|
||||
|
||||
#ifdef ZDTM_IPV6
|
||||
#define ZDTM_FAMILY AF_INET6
|
||||
#else
|
||||
#define ZDTM_FAMILY AF_INET
|
||||
#endif
|
||||
|
||||
const char *test_doc = "static test for listening socket\n";
|
||||
const char *test_author = "Stanislav Kinsbursky <skinsbursky@openvz.org>";
|
||||
|
||||
|
|
@ -14,6 +20,7 @@ const char *test_author = "Stanislav Kinsbursky <skinsbursky@openvz.org>";
|
|||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <wait.h>
|
||||
#include <netinet/tcp.h>
|
||||
|
||||
static int port = 8880;
|
||||
|
||||
|
|
@ -36,7 +43,7 @@ int main(int argc, char **argv)
|
|||
|
||||
test_init(argc, argv);
|
||||
|
||||
if ((fd_s = tcp_init_server(&port)) < 0) {
|
||||
if ((fd_s = tcp_init_server(ZDTM_FAMILY, &port)) < 0) {
|
||||
err("initializing server failed");
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -59,7 +66,7 @@ int main(int argc, char **argv)
|
|||
* Chiled is client of TCP connection
|
||||
*/
|
||||
close(fd_s);
|
||||
fd = tcp_init_client("127.0.0.1", port);
|
||||
fd = tcp_init_client(ZDTM_FAMILY, "localhost", port);
|
||||
if (fd < 0)
|
||||
return 1;
|
||||
|
||||
|
|
|
|||
1
test/zdtm/live/static/socket_listen6.c
Symbolic link
1
test/zdtm/live/static/socket_listen6.c
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
socket_listen.c
|
||||
|
|
@ -10,6 +10,7 @@ TST_NOFILE = \
|
|||
netlink00 \
|
||||
file_aio \
|
||||
socket-tcp \
|
||||
socket-tcp6 \
|
||||
|
||||
TST_FILE = \
|
||||
unix_sock \
|
||||
|
|
@ -60,6 +61,7 @@ $(TST): $(LIB)
|
|||
|
||||
file_aio: override LDLIBS += -lrt -pthread
|
||||
socket-tcp: override CFLAGS += -D STREAM
|
||||
socket-tcp6: override CFLAGS += -D ZDTM_IPV6 -D STREAM
|
||||
|
||||
$(LIB): force
|
||||
$(MAKE) -C $(LIBDIR)
|
||||
|
|
|
|||
1
test/zdtm/live/streaming/socket-tcp6.c
Symbolic link
1
test/zdtm/live/streaming/socket-tcp6.c
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../static/socket-tcp.c
|
||||
Loading…
Add table
Add a link
Reference in a new issue