syntax = "proto3";

package schema;

message SocketIp {
  uint32 family = 1;  // AF_* for socket type.
  bytes ip = 2;       // ip4 or ip6 address.
  uint32 port = 3;    // port bind or connected.
}

message Socket {
  SocketIp local = 1;
  SocketIp remote = 2;  // unset if not connected.
}

message Overlay {
  bool lower_layer = 1;
  bool upper_layer = 2;
  bytes modified_uuid = 3;  // The process who first modified the file.
}

message File {
  bytes fullpath = 1;
  uint32 ino = 3;  // inode number.
  oneof filesystem {
    Overlay overlayfs = 2;
    Socket socket = 4;
  }
}

message ProcessArguments {
  repeated bytes argv = 1;    // process arguments
  uint32 argv_truncated = 2;  // number of characters truncated from argv
  repeated bytes envp = 3;    // process environment variables
  uint32 envp_truncated = 4;  // number of characters truncated from envp
}

message Descriptor {
  uint32 mode = 1;  // file mode (stat st_mode)
  File file = 2;
}

message Streams {
  Descriptor stdin = 1;
  Descriptor stdout = 2;
  Descriptor stderr = 3;
}

message Process {
  uint64 creation_timestamp = 1;  // Only populated in ExecuteEvent, in ns.
  bytes uuid = 2;
  uint32 pid = 3;
  File binary = 4;  // Only populated in ExecuteEvent.
  uint32 parent_pid = 5;
  bytes parent_uuid = 6;
  uint64 container_id = 7;          // unique id of process's container
  uint32 container_pid = 8;         // pid inside the container namespace pid
  uint32 container_parent_pid = 9;  // optional
  ProcessArguments args = 10;       // Only populated in ExecuteEvent.
  Streams streams = 11;             // Only populated in ExecuteEvent.
  uint64 exec_session_id = 12;      // identifier set for kubectl exec sessions.
}

message Container {
  uint64 creation_timestamp = 1;  // container create time in ns
  bytes pod_namespace = 2;
  bytes pod_name = 3;
  uint64 container_id = 4;  // unique across lifetime of Node
  bytes container_name = 5;
  bytes container_image_uri = 6;
  repeated bytes labels = 7;
  bytes init_uuid = 8;
  bytes container_image_id = 9;
}

// A binary being executed.
// e.g., execve()
message ExecuteEvent {
  Process proc = 1;
}

// A process clone is being created. This message means that a cloning operation
// is being attempted. It may be sent even if fork fails.
message CloneEvent {
  Process proc = 1;
}

// Processes that are enumerated at startup will be sent with this event. There
// is no distinction from events we would have seen from fork or exec.
message EnumerateProcessEvent {
  Process proc = 1;
}

// Collect information about mmap/mprotect calls with the PROT_EXEC flag set.
message MemoryExecEvent {
  Process proc = 1;  // The origin process
  // The timestamp in ns when the memory was set executable
  uint64 prot_exec_timestamp = 2;
  // The prot flags granted by the kernel for the operation
  uint64 new_flags = 3;
  // The prot flags requested for the mprotect/mmap operation
  uint64 req_flags = 4;
  // The vm_flags prior to the mprotect operation, if relevant
  uint64 old_vm_flags = 5;
  // The operational flags for the mmap operation, if relevant
  uint64 mmap_flags = 6;
  // Derived from the file struct describing the fd being mapped
  File mapped_file = 7;
  enum Action {
    UNDEFINED = 0;
    MPROTECT = 1;
    MMAP_FILE = 2;
  }
  Action action = 8;

  uint64 start_addr = 9;  // The executable memory region start addr
  uint64 end_addr = 10;   // The executable memory region end addr
  // True if this event is a mmap of the process' binary
  bool is_initial_mmap = 11;
}

// Associate the following container information with all processes
// that have the indicated container_id.
message ContainerInfoEvent {
  Container container = 1;
}

// The process with the indicated pid has exited.
message ExitEvent {
  bytes process_uuid = 1;
}

// Next ID: 8
message Event {
  oneof event {
    ExecuteEvent execute = 1;
    ContainerInfoEvent container = 2;
    ExitEvent exit = 3;
    MemoryExecEvent memexec = 4;
    CloneEvent clone = 5;
    EnumerateProcessEvent enumproc = 7;
  }

  uint64 timestamp = 6;  // In nanoseconds
}

// Message sent by the daemonset to the LSM for container enlightenment.
message ContainerReport {
  uint32 pid = 1;           // Top pid of the running container.
  Container container = 2;  // Information collected about the container.
}
