mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-08-02 06:43:00 +00:00
net: Fixup net ns_id of sockets on old dumps
Set them equal to top_net_ns. Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
This commit is contained in:
parent
625e7f9c2a
commit
b8ca87fca9
6 changed files with 13 additions and 0 deletions
|
|
@ -44,6 +44,7 @@ extern int unix_note_scm_rights(int id_for, uint32_t *file_ids, int *fds, int n_
|
|||
extern struct collect_image_info netlink_sk_cinfo;
|
||||
|
||||
extern struct socket_desc *lookup_socket(unsigned ino, int family, int proto);
|
||||
extern void fixup_sock_net_ns_id(uint32_t *ns_id, protobuf_c_boolean *has_ns_id);
|
||||
|
||||
extern const struct fdtype_ops unix_dump_ops;
|
||||
extern const struct fdtype_ops inet_dump_ops;
|
||||
|
|
|
|||
|
|
@ -535,6 +535,7 @@ static int collect_one_inetsk(void *o, ProtobufCMessage *base, struct cr_img *i)
|
|||
ii->port = port_add(ii, ii->ie->src_port);
|
||||
if (ii->port == NULL)
|
||||
return -1;
|
||||
fixup_sock_net_ns_id(&ii->ie->ns_id, &ii->ie->has_ns_id);
|
||||
|
||||
return file_desc_add(&ii->d, ii->ie->id, &inet_desc_ops);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -259,6 +259,7 @@ static int collect_one_netlink_sk(void *o, ProtobufCMessage *base, struct cr_img
|
|||
struct netlink_sock_info *si = o;
|
||||
|
||||
si->nse = pb_msg(base, NetlinkSkEntry);
|
||||
fixup_sock_net_ns_id(&si->nse->ns_id, &si->nse->has_ns_id);
|
||||
return file_desc_add(&si->d, si->nse->id, &netlink_sock_desc_ops);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -569,6 +569,7 @@ static int collect_one_packet_sk(void *o, ProtobufCMessage *base, struct cr_img
|
|||
struct packet_sock_info *si = o;
|
||||
|
||||
si->pse = pb_msg(base, PacketSockEntry);
|
||||
fixup_sock_net_ns_id(&si->pse->ns_id, &si->pse->has_ns_id);
|
||||
return file_desc_add(&si->d, si->pse->id, &packet_sock_desc_ops);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1575,6 +1575,7 @@ static int collect_one_unixsk(void *o, ProtobufCMessage *base, struct cr_img *i)
|
|||
INIT_LIST_HEAD(&ui->node);
|
||||
INIT_LIST_HEAD(&ui->scm_fles);
|
||||
ui->flags = 0;
|
||||
fixup_sock_net_ns_id(&ui->ue->ns_id, &ui->ue->has_ns_id);
|
||||
|
||||
uname = ui->name;
|
||||
ulen = ui->ue->name.len;
|
||||
|
|
|
|||
|
|
@ -782,3 +782,11 @@ int set_netns(uint32_t ns_id)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void fixup_sock_net_ns_id(uint32_t *ns_id, protobuf_c_boolean *has_ns_id)
|
||||
{
|
||||
if (*has_ns_id)
|
||||
return;
|
||||
*has_ns_id = true;
|
||||
*ns_id = top_net_ns->id;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue