migration: make migration-{tcp,unix} consistent
Files are almost identical in functionality, just remove the differences that make no sense. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
8414ff3bd8
commit
ee86c61f28
@ -48,7 +48,6 @@ static int tcp_close(MigrationState *s)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void tcp_wait_for_connect(void *opaque)
|
static void tcp_wait_for_connect(void *opaque)
|
||||||
{
|
{
|
||||||
MigrationState *s = opaque;
|
MigrationState *s = opaque;
|
||||||
@ -84,12 +83,14 @@ int tcp_start_outgoing_migration(MigrationState *s, const char *host_port)
|
|||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->get_error = socket_errno;
|
s->get_error = socket_errno;
|
||||||
s->write = socket_write;
|
s->write = socket_write;
|
||||||
s->close = tcp_close;
|
s->close = tcp_close;
|
||||||
|
|
||||||
s->fd = qemu_socket(PF_INET, SOCK_STREAM, 0);
|
s->fd = qemu_socket(PF_INET, SOCK_STREAM, 0);
|
||||||
if (s->fd == -1) {
|
if (s->fd == -1) {
|
||||||
|
DPRINTF("Unable to open socket");
|
||||||
return -socket_error();
|
return -socket_error();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,23 +156,27 @@ int tcp_start_incoming_migration(const char *host_port)
|
|||||||
int val;
|
int val;
|
||||||
int s;
|
int s;
|
||||||
|
|
||||||
|
DPRINTF("Attempting to start an incoming migration\n");
|
||||||
|
|
||||||
if (parse_host_port(&addr, host_port) < 0) {
|
if (parse_host_port(&addr, host_port) < 0) {
|
||||||
fprintf(stderr, "invalid host/port combination: %s\n", host_port);
|
fprintf(stderr, "invalid host/port combination: %s\n", host_port);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
s = qemu_socket(PF_INET, SOCK_STREAM, 0);
|
s = qemu_socket(PF_INET, SOCK_STREAM, 0);
|
||||||
if (s == -1)
|
if (s == -1) {
|
||||||
return -socket_error();
|
return -socket_error();
|
||||||
|
}
|
||||||
|
|
||||||
val = 1;
|
val = 1;
|
||||||
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *)&val, sizeof(val));
|
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *)&val, sizeof(val));
|
||||||
|
|
||||||
if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) == -1)
|
if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
if (listen(s, 1) == -1)
|
if (listen(s, 1) == -1) {
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
qemu_set_fd_handler2(s, NULL, tcp_accept_incoming_migration, NULL,
|
qemu_set_fd_handler2(s, NULL, tcp_accept_incoming_migration, NULL,
|
||||||
(void *)(intptr_t)s);
|
(void *)(intptr_t)s);
|
||||||
|
@ -86,7 +86,7 @@ int unix_start_outgoing_migration(MigrationState *s, const char *path)
|
|||||||
s->close = unix_close;
|
s->close = unix_close;
|
||||||
|
|
||||||
s->fd = qemu_socket(PF_UNIX, SOCK_STREAM, 0);
|
s->fd = qemu_socket(PF_UNIX, SOCK_STREAM, 0);
|
||||||
if (s->fd < 0) {
|
if (s->fd == -1) {
|
||||||
DPRINTF("Unable to open socket");
|
DPRINTF("Unable to open socket");
|
||||||
return -errno;
|
return -errno;
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ static void unix_accept_incoming_migration(void *opaque)
|
|||||||
|
|
||||||
if (c == -1) {
|
if (c == -1) {
|
||||||
fprintf(stderr, "could not accept migration connection\n");
|
fprintf(stderr, "could not accept migration connection\n");
|
||||||
return;
|
goto out2;
|
||||||
}
|
}
|
||||||
|
|
||||||
f = qemu_fopen_socket(c);
|
f = qemu_fopen_socket(c);
|
||||||
@ -141,45 +141,49 @@ static void unix_accept_incoming_migration(void *opaque)
|
|||||||
process_incoming_migration(f);
|
process_incoming_migration(f);
|
||||||
qemu_fclose(f);
|
qemu_fclose(f);
|
||||||
out:
|
out:
|
||||||
|
close(c);
|
||||||
|
out2:
|
||||||
qemu_set_fd_handler2(s, NULL, NULL, NULL, NULL);
|
qemu_set_fd_handler2(s, NULL, NULL, NULL, NULL);
|
||||||
close(s);
|
close(s);
|
||||||
close(c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int unix_start_incoming_migration(const char *path)
|
int unix_start_incoming_migration(const char *path)
|
||||||
{
|
{
|
||||||
struct sockaddr_un un;
|
struct sockaddr_un addr;
|
||||||
int sock;
|
int s;
|
||||||
|
int ret;
|
||||||
|
|
||||||
DPRINTF("Attempting to start an incoming migration\n");
|
DPRINTF("Attempting to start an incoming migration\n");
|
||||||
|
|
||||||
sock = qemu_socket(PF_UNIX, SOCK_STREAM, 0);
|
s = qemu_socket(PF_UNIX, SOCK_STREAM, 0);
|
||||||
if (sock < 0) {
|
if (s == -1) {
|
||||||
fprintf(stderr, "Could not open unix socket: %s\n", strerror(errno));
|
fprintf(stderr, "Could not open unix socket: %s\n", strerror(errno));
|
||||||
return -EINVAL;
|
return -errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&un, 0, sizeof(un));
|
memset(&addr, 0, sizeof(addr));
|
||||||
un.sun_family = AF_UNIX;
|
addr.sun_family = AF_UNIX;
|
||||||
snprintf(un.sun_path, sizeof(un.sun_path), "%s", path);
|
snprintf(addr.sun_path, sizeof(addr.sun_path), "%s", path);
|
||||||
|
|
||||||
unlink(un.sun_path);
|
unlink(addr.sun_path);
|
||||||
if (bind(sock, (struct sockaddr*) &un, sizeof(un)) < 0) {
|
if (bind(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
|
||||||
fprintf(stderr, "bind(unix:%s): %s\n", un.sun_path, strerror(errno));
|
ret = -errno;
|
||||||
|
fprintf(stderr, "bind(unix:%s): %s\n", addr.sun_path, strerror(errno));
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (listen(sock, 1) < 0) {
|
if (listen(s, 1) == -1) {
|
||||||
fprintf(stderr, "listen(unix:%s): %s\n", un.sun_path, strerror(errno));
|
fprintf(stderr, "listen(unix:%s): %s\n", addr.sun_path,
|
||||||
|
strerror(errno));
|
||||||
|
ret = -errno;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
qemu_set_fd_handler2(sock, NULL, unix_accept_incoming_migration, NULL,
|
qemu_set_fd_handler2(s, NULL, unix_accept_incoming_migration, NULL,
|
||||||
(void *)(intptr_t)sock);
|
(void *)(intptr_t)s);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
close(sock);
|
close(s);
|
||||||
|
return ret;
|
||||||
return -EINVAL;
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user