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 sit_entry sit		= 15;
}

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;
}
