criu/images/netdev.proto
Andrei Vagin c2b21fbf4b criu: add support for external net namespaces
It works like other external resources.
A user specify which namespaces are external and have not to be dumped.
On restore, the user gives file descriptors to preconfigured namespaces.

How to use:
dump:
        --external net[INO]:KEY
restore:
        --inherit-fd fd[NSFD]:KEY

The test script contains more details how to use this:
test/others/netns_ext/run.sh

Acked-by: Adrian Reber <areber@redhat.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-10-30 19:27:54 +03:00

74 lines
1.6 KiB
Protocol Buffer

syntax = "proto2";
import "macvlan.proto";
import "opts.proto";
import "tun.proto";
import "sysctl.proto";
import "sit.proto";
enum nd_type {
LOOPBACK = 1;
VETH = 2;
TUN = 3;
/*
* External link -- for those CRIU only dumps and restores
* link parameters such as flags, address, MTU, etc. The
* existence of the link on restore should be provided
* by the setup-namespaces script.
*/
EXTLINK = 4;
VENET = 5; /* OpenVZ device */
BRIDGE = 6;
MACVLAN = 7;
SIT = 8;
}
message net_device_entry {
required nd_type type = 1;
required uint32 ifindex = 2;
required uint32 mtu = 3;
required uint32 flags = 4 [(criu).hex = true];
required string name = 5;
optional tun_link_entry tun = 6;
optional bytes address = 7;
repeated int32 conf = 8;
repeated sysctl_entry conf4 = 9;
repeated sysctl_entry conf6 = 10;
optional macvlan_link_entry macvlan = 11;
optional uint32 peer_ifindex = 12;
optional uint32 peer_nsid = 13;
optional uint32 master = 14;
optional sit_entry sit = 15;
}
message netns_id {
/* This is CRIU's id which is allocated for each namespace */
required uint32 target_ns_id = 1;
/*
* This is an id which can be used to address this namespace
* from another network namespace. Each network namespace has
* one set of id-s for other namespaces.
*/
required int32 netnsid_value = 2;
}
message netns_entry {
repeated int32 def_conf = 1;
repeated int32 all_conf = 2;
repeated sysctl_entry def_conf4 = 3;
repeated sysctl_entry all_conf4 = 4;
repeated sysctl_entry def_conf6 = 5;
repeated sysctl_entry all_conf6 = 6;
repeated netns_id nsids = 7;
optional string ext_key = 8;
}