syntax = "proto3"; package protocol; service UI { rpc Ping(PingRequest) returns (PingReply) {} rpc AskRule (RuleRequest) returns (RuleReply) {} } message Statistics { string daemon_version = 1; uint64 uptime = 2; uint64 dns_responses = 3; uint64 connections = 4; uint64 ignored = 5; uint64 accepted = 6; uint64 dropped = 7; uint64 rule_hits = 8; uint64 rule_misses = 9; map by_proto = 10; map by_address = 11; map by_host = 12; map by_port = 13; map by_uid = 14; map by_executable = 15; } message PingRequest { uint64 id = 1; Statistics stats = 2; } message PingReply { uint64 id = 1; } message RuleRequest { string protocol = 1; string src_ip = 2; uint32 src_port = 3; string dst_ip = 4; string dst_host = 5; uint32 dst_port = 6; uint32 user_id = 7; uint32 process_id = 8; string process_path = 9; repeated string process_args = 10; } message RuleOperator { string type = 1; string operand = 2; string data = 3; } message RuleReply { string name = 1; string action = 2; string duration = 3; RuleOperator operator = 4; }