/* Automatically generated nanopb header */
/* Generated by nanopb-0.3.9.1 at Mon Nov 11 16:11:19 2019. */

#ifndef PB_SCHEMA_EVENT_PB_H_INCLUDED
#define PB_SCHEMA_EVENT_PB_H_INCLUDED
#include <pb.h>

/* @@protoc_insertion_point(includes) */
#if PB_PROTO_HEADER_VERSION != 30
#error Regenerate this file with the current version of nanopb generator.
#endif

#ifdef __cplusplus
extern "C" {
#endif

/* Enum definitions */
typedef enum _schema_MemoryExecEvent_Action {
    schema_MemoryExecEvent_Action_UNDEFINED = 0,
    schema_MemoryExecEvent_Action_MPROTECT = 1,
    schema_MemoryExecEvent_Action_MMAP_FILE = 2
} schema_MemoryExecEvent_Action;
#define _schema_MemoryExecEvent_Action_MIN schema_MemoryExecEvent_Action_UNDEFINED
#define _schema_MemoryExecEvent_Action_MAX schema_MemoryExecEvent_Action_MMAP_FILE
#define _schema_MemoryExecEvent_Action_ARRAYSIZE ((schema_MemoryExecEvent_Action)(schema_MemoryExecEvent_Action_MMAP_FILE+1))

/* Struct definitions */
typedef struct _schema_ExitEvent {
    pb_callback_t process_uuid;
/* @@protoc_insertion_point(struct:schema_ExitEvent) */
} schema_ExitEvent;

typedef struct _schema_Container {
    uint64_t creation_timestamp;
    pb_callback_t pod_namespace;
    pb_callback_t pod_name;
    uint64_t container_id;
    pb_callback_t container_name;
    pb_callback_t container_image_uri;
    pb_callback_t labels;
    pb_callback_t init_uuid;
    pb_callback_t container_image_id;
/* @@protoc_insertion_point(struct:schema_Container) */
} schema_Container;

typedef struct _schema_Overlay {
    bool lower_layer;
    bool upper_layer;
    pb_callback_t modified_uuid;
/* @@protoc_insertion_point(struct:schema_Overlay) */
} schema_Overlay;

typedef struct _schema_ProcessArguments {
    pb_callback_t argv;
    uint32_t argv_truncated;
    pb_callback_t envp;
    uint32_t envp_truncated;
/* @@protoc_insertion_point(struct:schema_ProcessArguments) */
} schema_ProcessArguments;

typedef struct _schema_SocketIp {
    uint32_t family;
    pb_callback_t ip;
    uint32_t port;
/* @@protoc_insertion_point(struct:schema_SocketIp) */
} schema_SocketIp;

typedef struct _schema_ContainerInfoEvent {
    schema_Container container;
/* @@protoc_insertion_point(struct:schema_ContainerInfoEvent) */
} schema_ContainerInfoEvent;

typedef struct _schema_ContainerReport {
    uint32_t pid;
    schema_Container container;
/* @@protoc_insertion_point(struct:schema_ContainerReport) */
} schema_ContainerReport;

typedef struct _schema_Socket {
    schema_SocketIp local;
    schema_SocketIp remote;
/* @@protoc_insertion_point(struct:schema_Socket) */
} schema_Socket;

typedef struct _schema_File {
    pb_callback_t fullpath;
    pb_size_t which_filesystem;
    union {
        schema_Overlay overlayfs;
        schema_Socket socket;
    } filesystem;
    uint32_t ino;
/* @@protoc_insertion_point(struct:schema_File) */
} schema_File;

typedef struct _schema_Descriptor {
    uint32_t mode;
    schema_File file;
/* @@protoc_insertion_point(struct:schema_Descriptor) */
} schema_Descriptor;

typedef struct _schema_Streams {
    schema_Descriptor stdin;
    schema_Descriptor stdout;
    schema_Descriptor stderr;
/* @@protoc_insertion_point(struct:schema_Streams) */
} schema_Streams;

typedef struct _schema_Process {
    uint64_t creation_timestamp;
    pb_callback_t uuid;
    uint32_t pid;
    schema_File binary;
    uint32_t parent_pid;
    pb_callback_t parent_uuid;
    uint64_t container_id;
    uint32_t container_pid;
    uint32_t container_parent_pid;
    schema_ProcessArguments args;
    schema_Streams streams;
    uint64_t exec_session_id;
/* @@protoc_insertion_point(struct:schema_Process) */
} schema_Process;

typedef struct _schema_CloneEvent {
    schema_Process proc;
/* @@protoc_insertion_point(struct:schema_CloneEvent) */
} schema_CloneEvent;

typedef struct _schema_EnumerateProcessEvent {
    schema_Process proc;
/* @@protoc_insertion_point(struct:schema_EnumerateProcessEvent) */
} schema_EnumerateProcessEvent;

typedef struct _schema_ExecuteEvent {
    schema_Process proc;
/* @@protoc_insertion_point(struct:schema_ExecuteEvent) */
} schema_ExecuteEvent;

typedef struct _schema_MemoryExecEvent {
    schema_Process proc;
    uint64_t prot_exec_timestamp;
    uint64_t new_flags;
    uint64_t req_flags;
    uint64_t old_vm_flags;
    uint64_t mmap_flags;
    schema_File mapped_file;
    schema_MemoryExecEvent_Action action;
    uint64_t start_addr;
    uint64_t end_addr;
    bool is_initial_mmap;
/* @@protoc_insertion_point(struct:schema_MemoryExecEvent) */
} schema_MemoryExecEvent;

typedef struct _schema_Event {
    pb_size_t which_event;
    union {
        schema_ExecuteEvent execute;
        schema_ContainerInfoEvent container;
        schema_ExitEvent exit;
        schema_MemoryExecEvent memexec;
        schema_CloneEvent clone;
        schema_EnumerateProcessEvent enumproc;
    } event;
    uint64_t timestamp;
/* @@protoc_insertion_point(struct:schema_Event) */
} schema_Event;

/* Default values for struct fields */

/* Initializer values for message structs */
#define schema_SocketIp_init_default             {0, {{NULL}, NULL}, 0}
#define schema_Socket_init_default               {schema_SocketIp_init_default, schema_SocketIp_init_default}
#define schema_Overlay_init_default              {0, 0, {{NULL}, NULL}}
#define schema_File_init_default                 {{{NULL}, NULL}, 0, {schema_Overlay_init_default}, 0}
#define schema_ProcessArguments_init_default     {{{NULL}, NULL}, 0, {{NULL}, NULL}, 0}
#define schema_Descriptor_init_default           {0, schema_File_init_default}
#define schema_Streams_init_default              {schema_Descriptor_init_default, schema_Descriptor_init_default, schema_Descriptor_init_default}
#define schema_Process_init_default              {0, {{NULL}, NULL}, 0, schema_File_init_default, 0, {{NULL}, NULL}, 0, 0, 0, schema_ProcessArguments_init_default, schema_Streams_init_default, 0}
#define schema_Container_init_default            {0, {{NULL}, NULL}, {{NULL}, NULL}, 0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define schema_ExecuteEvent_init_default         {schema_Process_init_default}
#define schema_CloneEvent_init_default           {schema_Process_init_default}
#define schema_EnumerateProcessEvent_init_default {schema_Process_init_default}
#define schema_MemoryExecEvent_init_default      {schema_Process_init_default, 0, 0, 0, 0, 0, schema_File_init_default, _schema_MemoryExecEvent_Action_MIN, 0, 0, 0}
#define schema_ContainerInfoEvent_init_default   {schema_Container_init_default}
#define schema_ExitEvent_init_default            {{{NULL}, NULL}}
#define schema_Event_init_default                {0, {schema_ExecuteEvent_init_default}, 0}
#define schema_ContainerReport_init_default      {0, schema_Container_init_default}
#define schema_SocketIp_init_zero                {0, {{NULL}, NULL}, 0}
#define schema_Socket_init_zero                  {schema_SocketIp_init_zero, schema_SocketIp_init_zero}
#define schema_Overlay_init_zero                 {0, 0, {{NULL}, NULL}}
#define schema_File_init_zero                    {{{NULL}, NULL}, 0, {schema_Overlay_init_zero}, 0}
#define schema_ProcessArguments_init_zero        {{{NULL}, NULL}, 0, {{NULL}, NULL}, 0}
#define schema_Descriptor_init_zero              {0, schema_File_init_zero}
#define schema_Streams_init_zero                 {schema_Descriptor_init_zero, schema_Descriptor_init_zero, schema_Descriptor_init_zero}
#define schema_Process_init_zero                 {0, {{NULL}, NULL}, 0, schema_File_init_zero, 0, {{NULL}, NULL}, 0, 0, 0, schema_ProcessArguments_init_zero, schema_Streams_init_zero, 0}
#define schema_Container_init_zero               {0, {{NULL}, NULL}, {{NULL}, NULL}, 0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define schema_ExecuteEvent_init_zero            {schema_Process_init_zero}
#define schema_CloneEvent_init_zero              {schema_Process_init_zero}
#define schema_EnumerateProcessEvent_init_zero   {schema_Process_init_zero}
#define schema_MemoryExecEvent_init_zero         {schema_Process_init_zero, 0, 0, 0, 0, 0, schema_File_init_zero, _schema_MemoryExecEvent_Action_MIN, 0, 0, 0}
#define schema_ContainerInfoEvent_init_zero      {schema_Container_init_zero}
#define schema_ExitEvent_init_zero               {{{NULL}, NULL}}
#define schema_Event_init_zero                   {0, {schema_ExecuteEvent_init_zero}, 0}
#define schema_ContainerReport_init_zero         {0, schema_Container_init_zero}

/* Field tags (for use in manual encoding/decoding) */
#define schema_ExitEvent_process_uuid_tag        1
#define schema_Container_creation_timestamp_tag  1
#define schema_Container_pod_namespace_tag       2
#define schema_Container_pod_name_tag            3
#define schema_Container_container_id_tag        4
#define schema_Container_container_name_tag      5
#define schema_Container_container_image_uri_tag 6
#define schema_Container_labels_tag              7
#define schema_Container_init_uuid_tag           8
#define schema_Container_container_image_id_tag  9
#define schema_Overlay_lower_layer_tag           1
#define schema_Overlay_upper_layer_tag           2
#define schema_Overlay_modified_uuid_tag         3
#define schema_ProcessArguments_argv_tag         1
#define schema_ProcessArguments_argv_truncated_tag 2
#define schema_ProcessArguments_envp_tag         3
#define schema_ProcessArguments_envp_truncated_tag 4
#define schema_SocketIp_family_tag               1
#define schema_SocketIp_ip_tag                   2
#define schema_SocketIp_port_tag                 3
#define schema_ContainerInfoEvent_container_tag  1
#define schema_ContainerReport_pid_tag           1
#define schema_ContainerReport_container_tag     2
#define schema_Socket_local_tag                  1
#define schema_Socket_remote_tag                 2
#define schema_File_overlayfs_tag                2
#define schema_File_socket_tag                   4
#define schema_File_fullpath_tag                 1
#define schema_File_ino_tag                      3
#define schema_Descriptor_mode_tag               1
#define schema_Descriptor_file_tag               2
#define schema_Streams_stdin_tag                 1
#define schema_Streams_stdout_tag                2
#define schema_Streams_stderr_tag                3
#define schema_Process_creation_timestamp_tag    1
#define schema_Process_uuid_tag                  2
#define schema_Process_pid_tag                   3
#define schema_Process_binary_tag                4
#define schema_Process_parent_pid_tag            5
#define schema_Process_parent_uuid_tag           6
#define schema_Process_container_id_tag          7
#define schema_Process_container_pid_tag         8
#define schema_Process_container_parent_pid_tag  9
#define schema_Process_args_tag                  10
#define schema_Process_streams_tag               11
#define schema_Process_exec_session_id_tag       12
#define schema_CloneEvent_proc_tag               1
#define schema_EnumerateProcessEvent_proc_tag    1
#define schema_ExecuteEvent_proc_tag             1
#define schema_MemoryExecEvent_proc_tag          1
#define schema_MemoryExecEvent_prot_exec_timestamp_tag 2
#define schema_MemoryExecEvent_new_flags_tag     3
#define schema_MemoryExecEvent_req_flags_tag     4
#define schema_MemoryExecEvent_old_vm_flags_tag  5
#define schema_MemoryExecEvent_mmap_flags_tag    6
#define schema_MemoryExecEvent_mapped_file_tag   7
#define schema_MemoryExecEvent_action_tag        8
#define schema_MemoryExecEvent_start_addr_tag    9
#define schema_MemoryExecEvent_end_addr_tag      10
#define schema_MemoryExecEvent_is_initial_mmap_tag 11
#define schema_Event_execute_tag                 1
#define schema_Event_container_tag               2
#define schema_Event_exit_tag                    3
#define schema_Event_memexec_tag                 4
#define schema_Event_clone_tag                   5
#define schema_Event_enumproc_tag                7
#define schema_Event_timestamp_tag               6

/* Struct field encoding specification for nanopb */
extern const pb_field_t schema_SocketIp_fields[4];
extern const pb_field_t schema_Socket_fields[3];
extern const pb_field_t schema_Overlay_fields[4];
extern const pb_field_t schema_File_fields[5];
extern const pb_field_t schema_ProcessArguments_fields[5];
extern const pb_field_t schema_Descriptor_fields[3];
extern const pb_field_t schema_Streams_fields[4];
extern const pb_field_t schema_Process_fields[13];
extern const pb_field_t schema_Container_fields[10];
extern const pb_field_t schema_ExecuteEvent_fields[2];
extern const pb_field_t schema_CloneEvent_fields[2];
extern const pb_field_t schema_EnumerateProcessEvent_fields[2];
extern const pb_field_t schema_MemoryExecEvent_fields[12];
extern const pb_field_t schema_ContainerInfoEvent_fields[2];
extern const pb_field_t schema_ExitEvent_fields[2];
extern const pb_field_t schema_Event_fields[8];
extern const pb_field_t schema_ContainerReport_fields[3];

/* Maximum encoded size of messages (where known) */
/* schema_SocketIp_size depends on runtime parameters */
#define schema_Socket_size                       (12 + schema_SocketIp_size + schema_SocketIp_size)
/* schema_Overlay_size depends on runtime parameters */
/* schema_File_size depends on runtime parameters */
/* schema_ProcessArguments_size depends on runtime parameters */
#define schema_Descriptor_size                   (12 + schema_File_size)
#define schema_Streams_size                      (54 + schema_File_size + schema_File_size + schema_File_size)
/* schema_Process_size depends on runtime parameters */
/* schema_Container_size depends on runtime parameters */
#define schema_ExecuteEvent_size                 (6 + schema_Process_size)
#define schema_CloneEvent_size                   (6 + schema_Process_size)
#define schema_EnumerateProcessEvent_size        (6 + schema_Process_size)
#define schema_MemoryExecEvent_size              (93 + schema_Process_size + schema_File_size)
#define schema_ContainerInfoEvent_size           (6 + schema_Container_size)
/* schema_ExitEvent_size depends on runtime parameters */
#define schema_Event_size                        (11 + ((((((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) > schema_ExitEvent_size ? ((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) : schema_ExitEvent_size) > schema_ContainerInfoEvent_size ? (((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) > schema_ExitEvent_size ? ((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) : schema_ExitEvent_size) : schema_ContainerInfoEvent_size) > schema_MemoryExecEvent_size ? ((((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) > schema_ExitEvent_size ? ((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) : schema_ExitEvent_size) > schema_ContainerInfoEvent_size ? (((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) > schema_ExitEvent_size ? ((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) : schema_ExitEvent_size) : schema_ContainerInfoEvent_size) : schema_MemoryExecEvent_size) > 0 ? (((((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) > schema_ExitEvent_size ? ((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) : schema_ExitEvent_size) > schema_ContainerInfoEvent_size ? (((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) > schema_ExitEvent_size ? ((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) : schema_ExitEvent_size) : schema_ContainerInfoEvent_size) > schema_MemoryExecEvent_size ? ((((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) > schema_ExitEvent_size ? ((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) : schema_ExitEvent_size) > schema_ContainerInfoEvent_size ? (((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) > schema_ExitEvent_size ? ((schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) > schema_ExecuteEvent_size ? (schema_CloneEvent_size > schema_EnumerateProcessEvent_size ? schema_CloneEvent_size : schema_EnumerateProcessEvent_size) : schema_ExecuteEvent_size) : schema_ExitEvent_size) : schema_ContainerInfoEvent_size) : schema_MemoryExecEvent_size) : 0))
#define schema_ContainerReport_size              (12 + schema_Container_size)

/* Message IDs (where set with "msgid" option) */
#ifdef PB_MSGID

#define EVENT_MESSAGES \


#endif

#ifdef __cplusplus
} /* extern "C" */
#endif
/* @@protoc_insertion_point(eof) */

#endif
