syntax = "proto2"; package nsjail; enum Mode { LISTEN = 0; ONCE = 1; RERUN = 2; EXECVE = 3; } enum LogLevel { DEBUG = 0; INFO = 1; WARNING = 2; ERROR = 3; FATAL = 4; } message IdMap { required string inside_id = 1 [default = ""]; required string outside_id = 2 [default = ""]; required uint32 count = 3 [default = 1]; required bool use_newidmap = 4 [default = false]; } message MountPt { required string src = 1; required string dst = 2; required string fstype = 3; required string options = 4 [default = ""]; required bool is_bind = 5 [default = false]; required bool is_ro = 6 [default = false]; optional bool is_dir = 7; } message Exe { required string path = 1; repeated string arg = 2; } message NsJailConfig { required Mode mode = 1 [default = ONCE]; optional string chroot_dir = 2; required bool is_root_rw = 3 [default = false]; required string hostname = 6 [default = "NSJAIL"]; required string cwd = 7 [default = "/"]; required uint32 port = 8 [default = 0]; required string bindhost = 9 [default = "::"]; required uint32 max_conns_per_ip = 10 [default = 0]; required uint32 time_limit = 11 [default = 600]; required bool daemon = 12 [default = false]; optional string log_file = 13; optional LogLevel log_level = 14; required bool keep_env = 15 [default = false]; required bool silent = 16 [default = false]; required bool skip_setsid = 17 [default = false]; repeated int32 pass_fd = 18; required bool pivot_root_only = 19 [ default = false]; required bool disable_no_new_privs = 20 [default = false]; required uint64 rlimit_as = 21 [default = 512]; required uint64 rlimit_core = 22 [default = 0]; required uint64 rlimit_cpu = 23 [default = 600]; required uint64 rlimit_fsize = 24 [default = 1]; required uint64 rlimit_nofile = 25 [default = 32]; optional uint64 rlimit_nproc = 26; optional uint64 rlimit_stack = 27; required bool persona_addr_compat_layout = 28 [default = false]; required bool persona_mmap_page_zero = 29 [default = false]; required bool persona_read_implies_exec = 30 [default = false]; required bool persona_addr_limit_3gb = 31 [default = false]; required bool persona_addr_no_randomize = 32 [default = false]; required bool clone_newnet = 33 [default = true]; required bool clone_newuser = 34 [default = true]; required bool clone_newns = 35 [default = true]; required bool clone_newpid = 36 [default = true]; required bool clone_newipc = 37 [default = true]; required bool clone_newuts = 38 [default = true]; required bool clone_newcgroup = 39 [default = false]; repeated IdMap uidmap = 40; repeated IdMap gidmap = 41; repeated MountPt mount = 42; required bool mount_proc = 43 [default = true]; optional string seccomp_policy_file = 44; optional string seccomp_string = 45; required uint64 cgroup_mem_max = 46 [default = 0]; required string cgroup_mem_mount = 47 [default = "/sys/fs/cgroup/memory"]; required string cgroup_mem_parent = 48 [default = "NSJAIL"]; required uint64 cgroup_pids_max = 49 [default = 0]; required string cgroup_pids_mount = 50 [default = "/sys/fs/cgroup/pids"]; required string cgroup_pids_parent = 51 [default = "NSJAIL"]; required bool iface_no_lo = 52 [default = false]; optional string macvlan_iface = 53; required string macvlan_vs_ip = 54 [default = "192.168.0.2"]; required string macvlan_vs_nm = 55 [default = "255.255.255.0"]; required string macvlan_vs_gw = 56 [default = "192.168.0.1"]; optional Exe exec_bin = 57; }