Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
62d70b2
build: update CMake to version 3.12.
PiotrSikora Oct 24, 2018
8e0a22a
build: add WAVM with LLVM-6.0.
PiotrSikora Oct 24, 2018
55f1ef8
wasm: proof-of-concept.
jplevyak2 Oct 24, 2018
522dffd
wasm: disable HTTP WASM filter.
PiotrSikora Oct 24, 2018
6ad2046
Remove dependency on specialized WAVM. Add support for passing strings
Nov 3, 2018
aa70c6a
Cleanup/simplify the WASM testing code.
Nov 5, 2018
c227d11
build: switch to vanilla WAVM.
PiotrSikora Nov 6, 2018
992ec38
wasm: fix build.
PiotrSikora Nov 6, 2018
d8db2db
Callbacks working.
Nov 9, 2018
3d6a030
Fix conflicts
Nov 9, 2018
050bb5b
wasm: fix build.
PiotrSikora Nov 12, 2018
ce93e98
test: remove hardcoded ASAN_OPTIONS.
PiotrSikora Nov 8, 2018
a987b76
Cleanup wasm http filter.
jplevyak Nov 13, 2018
713823b
Revert "wasm: disable HTTP WASM filter."
PiotrSikora Nov 14, 2018
b721ca7
Test for filter/http/wasm working.
jplevyak Nov 15, 2018
20fa8db
Merge branch 'wasm' of github.com:PiotrSikora/envoy into wasm
jplevyak Nov 15, 2018
c76fabb
Interm work on WASM filter.
jplevyak Nov 17, 2018
3f45fe7
build: update WAVM with fixes for Emscripten v1.38.18+.
PiotrSikora Nov 15, 2018
ee2de00
build: remove leftovers from using local WAVM.
PiotrSikora Nov 20, 2018
2a59168
wasm: add workaround for a typo in headers_only WASM code.
PiotrSikora Nov 20, 2018
94554fd
wasm: fix parsing of WAT files.
PiotrSikora Nov 15, 2018
7a052e5
test: enable a few tests for WASM HTTP filter.
PiotrSikora Nov 20, 2018
c9e53f7
test: reorganize test data.
PiotrSikora Nov 21, 2018
f6f4ab2
test: add tests for WAT files.
PiotrSikora Nov 21, 2018
939a825
test: add tests for precompiled WASM files.
PiotrSikora Nov 21, 2018
5c81d49
wasm: remove support for v1 JSON (it's deprecated).
PiotrSikora Nov 20, 2018
652e8b6
wasm: use Config::DataSource.
PiotrSikora Nov 20, 2018
c164237
wasm: use Event::SimulatedTimeSystem.
PiotrSikora Nov 15, 2018
4f7a39e
test: regenerate test data with Emscripten v1.38.20.
PiotrSikora Nov 22, 2018
d2a31d3
test: regenerate test data from working parts of headers WASM code.
PiotrSikora Nov 27, 2018
cc12e01
build: update WAVM with additional Emscripten intrinsics.
PiotrSikora Nov 27, 2018
d46069b
wasm: reject incomplete WASM modules at config-time.
PiotrSikora Nov 27, 2018
3dea6c5
wasm: migrate "env._wasmLog" to "envoy.log".
PiotrSikora Nov 27, 2018
ac63308
Fixup wasm filter test.
jplevyak Nov 28, 2018
2511bc2
WASM filter header-only test working.
jplevyak Nov 29, 2018
56146e5
Add removeHeader support.
jplevyak Nov 30, 2018
a666d0d
wasm: fix build.
PiotrSikora Nov 30, 2018
c155954
wasm: auto-detect if WASM module needs Emscripten.
PiotrSikora Nov 27, 2018
f886721
getHeader and getBodyBufferData tests for WASM filter.
jplevyak Nov 30, 2018
98d34b2
Add example for the demo (untested).
jplevyak Dec 1, 2018
4920e92
wasm: fix build.
PiotrSikora Dec 1, 2018
9dfac6b
Add shared data WASM filter API.
jplevyak Dec 4, 2018
d1ade97
wasm: fix build.
PiotrSikora Dec 6, 2018
3554ae6
build: back to vanilla WAVM, now that all changes have been merged.
PiotrSikora Dec 6, 2018
0cf7154
build: support building WAVM on macOS.
PiotrSikora Dec 6, 2018
d843a87
Demo working.
jplevyak Dec 6, 2018
840e209
Merge branch 'wasm' of github.com:PiotrSikora/envoy into wasm
jplevyak Dec 6, 2018
b4fb6e8
getHeaderPairs workingetHeaderPairs workingg
jplevyak Dec 7, 2018
db084dd
Interm.
jplevyak Dec 10, 2018
09804e5
WASM: New API, per-thread VMs.
jplevyak Dec 15, 2018
80c2526
Unify WASM Filter and Context.
jplevyak Dec 17, 2018
c6a27e3
Implement async http calls, shared data, StreamInfo protocol and meta…
jplevyak Dec 27, 2018
8935b97
Merge remote-tracking branch 'origin/master' into PiotrSikora/wasm
PiotrSikora Jan 22, 2019
526c1a6
test: regenerate test data with Emscripten v1.38.24.
PiotrSikora Jan 22, 2019
7b6f7af
build: update WAVM with fixes for Emscripten v1.38.25+.
PiotrSikora Jan 26, 2019
575c605
test: regenerate test data with Emscripten v1.38.25.
PiotrSikora Jan 24, 2019
d9659a8
redis: migrate to murmur hash (#5766)
maximebedard Jan 31, 2019
ef14fe6
governance: adding CODEOWNERS for QUIC (#5774)
alyssawilk Jan 31, 2019
32c27cf
Update Datadog tracer version to v0.4.2 (#5781)
cgilmour Jan 31, 2019
f37ebdc
tap transport: refactor to use common tap framework (#5724)
mattklein123 Jan 31, 2019
5aeae59
Update lyft/protoc-gen-validate to v0.0.13 (#5783)
venilnoronha Jan 31, 2019
b4ef202
Add link to ejection event logging config (#5786)
liamawhite Jan 31, 2019
22bba7e
build: fix external cmake path (#5787)
lizan Jan 31, 2019
92881c1
Replace "backward" stack trace with absl::Stacktrace. (#5723)
dnoe Jan 31, 2019
6a58e5c
stats: add support for histograms in prometheus export (#5601)
suhailpatel Jan 31, 2019
f4ac92b
config: explicitly indicate when tcp_proxy deprecated_v1 value field …
zuercher Feb 1, 2019
da6a89a
build: not build yaml-cpp tools (#5799)
lizan Feb 1, 2019
5aacb0b
wasm: add local _emscripten_get_heap_size.
PiotrSikora Feb 1, 2019
7db4ca9
Merge remote-tracking branch 'origin/master' into PiotrSikora/wasm
PiotrSikora Feb 1, 2019
60e215b
Add api/wasm.
PiotrSikora Dec 5, 2018
0841ba9
Allow WASM VMs to be optionally shared between servcies and filters.
jplevyak Feb 6, 2019
2d00e05
wasm: fix build.
PiotrSikora Feb 7, 2019
7923d0b
test: regenerate test data with Emscripten v1.38.25.
PiotrSikora Feb 7, 2019
3064806
format: fix format.
PiotrSikora Feb 7, 2019
7b94516
Rename the WASM API files from envoy_ -> proxy_. (#14)
jplevyak Feb 9, 2019
eac59ec
add instruction of compiling wasm_example filter
lambdai Feb 11, 2019
97fd9d1
Merge pull request #17 from silentdai/wasmdoc
mandarjog Feb 11, 2019
9dc69fd
wasm: emit Emscripten metadata (for ABI).
PiotrSikora Feb 12, 2019
5c762c9
rename _REGISTER and _GET (#16)
lambdai Feb 13, 2019
4d6a608
Fix lifetime issue which was causing non-clonable (i.e. V8) (#15)
jplevyak Feb 14, 2019
34802ac
reduce header dependencies (#20)
lambdai Feb 14, 2019
d3a53ef
Fix overflow with optimized WASM code by ensuring that globals are in…
jplevyak Feb 21, 2019
4bb6c45
Create api/wasm/cpp/Makefile.base and use for WASM c++ compiles. (#27)
jplevyak Feb 21, 2019
1c34c71
Update WAVM to Feb 14 2019 to fix memory leak in exception handling. …
jplevyak Feb 22, 2019
233e29e
Add Exception handling and test for divide by zero exception. (#29)
jplevyak Feb 22, 2019
5bf1cd1
Upgrade the WASM .wat files to match the new version of WAVM we are u…
jplevyak Feb 26, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,5 @@
/*/extensions/tracers/datadog @cgilmour @palazzem
# mysql_proxy extension
/*/extensions/filters/network/mysql_proxy @rshriram @venilnoronha @mattklein123
# quic extension
/*/extensions/quic_listeners/ @alyssawilk @danzh2010 @mattklein123 @mpwarres @wu-bin
23 changes: 23 additions & 0 deletions WASM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
Proof of Concept WebAssembly Support.

# WebAssembly VM

The WebAssembly VM is https://github.com/WAVM/WAVM. This VM was chosen for the
proof of concept because:

- It is OSS with a permissive license.
- It compiles with LLVM for high performance.
- It can attach pre-compiled code to the WASM files (e.g. during distribution
from a central controller) for faster startup and reduced load on a pool
of proxies.

# TODO

- Check if the thread is running in the VM in the WAVM Runtime signal handlers and
if not call the underlying signal handler from Envoy or add the WAVM signal handler
as a pre-check to the Envoy signal handler with the same check.
- Add support to WAVM for multple stacks for coroutines/streams with thread shared state.
- evaluate async emscripten: https://github.com/kripken/emscripten/wiki/Asyncify
- evaulate boost::fiber, GNU Pth, getcontext(), setcontext(), swapcontext().
- Add support for shared global state.
- Intercept logging messages from WAVM and send to Envoy logs.
4 changes: 2 additions & 2 deletions api/bazel/repositories.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ GOGOPROTO_SHA256 = "957c8f03cf595525d2a667035d9865a0930b3d446be0ab6eb76972934f92
OPENCENSUS_RELEASE = "0.1.0"
OPENCENSUS_SHA256 = "4fd21cc6de63d7cb979fd749d8101ff425905aa0826fed26019d1c311fcf19a7"

PGV_RELEASE = "0.0.12"
PGV_SHA256 = "3be735345d1953d6d4c1cb89ace739cd6c98873d08b11218e181b0d3b0441627"
PGV_RELEASE = "0.0.13"
PGV_SHA256 = "dce6c8a43849d2abe4d5e40f16e9a476bca6b7a47e128db4458a52d748f4a5eb"

GOOGLEAPIS_GIT_SHA = "d642131a6e6582fc226caf9893cb7fe7885b3411" # May 23, 2018
GOOGLEAPIS_SHA = "16f5b2e8bf1e747a32f9a62e211f8f33c94645492e9bbd72458061d9a9de1f63"
Expand Down
1 change: 1 addition & 0 deletions api/docs/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ proto_library(
"//envoy/config/accesslog/v2:als",
"//envoy/config/accesslog/v2:file",
"//envoy/config/bootstrap/v2:bootstrap",
"//envoy/config/common/tap/v2alpha:common",
"//envoy/config/filter/accesslog/v2:accesslog",
"//envoy/config/filter/http/buffer/v2:buffer",
"//envoy/config/filter/http/ext_authz/v2:ext_authz",
Expand Down
8 changes: 8 additions & 0 deletions api/envoy/config/accesslog/v2/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,11 @@ api_proto_library_internal(
name = "file",
srcs = ["file.proto"],
)

api_proto_library_internal(
name = "wasm",
srcs = ["wasm.proto"],
deps = [
"//envoy/config/wasm/v2:wasm",
],
)
24 changes: 24 additions & 0 deletions api/envoy/config/accesslog/v2/wasm.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
syntax = "proto3";

package envoy.config.accesslog.v2;
option java_package = "io.envoyproxy.envoy.config.accesslog.v2";
option go_package = "v2";

import "validate/validate.proto";
import "google/protobuf/struct.proto";
import "envoy/config/wasm/v2/wasm.proto";

// [#protodoc-title: Wasm access log]

// Custom configuration for an :ref:`AccessLog <envoy_api_msg_config.filter.accesslog.v2.AccessLog>`
// that calls into a WASM VM. Configures the built-in *envoy.wasm_access_log*
// AccessLog.
message WasmAccessLog {
// A unique ID so that multiple filters/services can call into the same VM.
string id = 1;
// Wasm configuration string e.g. a serialized protobuf which will be the argument to the
// VM configure() call.
string configuration = 2;
// Configuration for starting a new VM to be associated with the given vm_id.
envoy.config.wasm.v2.VmConfig vm_config = 3;
}
2 changes: 2 additions & 0 deletions api/envoy/config/bootstrap/v2/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ api_proto_library_internal(
"//envoy/config/overload/v2alpha:overload",
"//envoy/config/ratelimit/v2:rls",
"//envoy/config/trace/v2:trace",
"//envoy/config/wasm/v2:wasm",
],
)

Expand All @@ -36,5 +37,6 @@ api_go_proto_library(
"//envoy/config/overload/v2alpha:overload_go_proto",
"//envoy/config/ratelimit/v2:rls_go_grpc",
"//envoy/config/trace/v2:trace_go_proto",
"//envoy/config/wasm/v2:wasm_go_proto",
],
)
4 changes: 4 additions & 0 deletions api/envoy/config/bootstrap/v2/bootstrap.proto
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import "envoy/config/trace/v2/trace.proto";
import "envoy/config/metrics/v2/stats.proto";
import "envoy/config/overload/v2alpha/overload.proto";
import "envoy/config/ratelimit/v2/rls.proto";
import "envoy/config/wasm/v2/wasm.proto";

import "google/protobuf/duration.proto";

Expand Down Expand Up @@ -119,6 +120,9 @@ message Bootstrap {

// Optional overload manager configuration.
envoy.config.overload.v2alpha.OverloadManager overload_manager = 15;

// Configuration for an wasm service provider(s).
repeated envoy.config.wasm.v2.WasmConfig wasm_service = 16;
}

// Administration interface :ref:`operations documentation
Expand Down
12 changes: 12 additions & 0 deletions api/envoy/config/common/tap/v2alpha/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
load("//bazel:api_build_system.bzl", "api_proto_library_internal")

licenses(["notice"]) # Apache 2

api_proto_library_internal(
name = "common",
srcs = ["common.proto"],
visibility = ["//visibility:public"],
deps = [
"//envoy/service/tap/v2alpha:common",
],
)
32 changes: 32 additions & 0 deletions api/envoy/config/common/tap/v2alpha/common.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
syntax = "proto3";

import "envoy/service/tap/v2alpha/common.proto";

import "validate/validate.proto";

package envoy.config.common.tap.v2alpha;
option java_package = "io.envoyproxy.envoy.service.tap.v2alpha";

// [#protodoc-title: Common tap extension configuration]

// Common configuration for all tap extensions.
message CommonExtensionConfig {
oneof config_type {
option (validate.required) = true;

// If specified, the tap filter will be configured via an admin handler.
AdminConfig admin_config = 1;

// If specified, the tap filter will be configured via a static configuration that cannot be
// changed.
service.tap.v2alpha.TapConfig static_config = 2;
}
}

// Configuration for the admin handler. See :ref:`here <config_http_filters_tap_admin_handler>` for
// more information.
message AdminConfig {
// Opaque configuration ID. When requests are made to the admin handler, the passed opaque ID is
// matched to the configured filter opaque ID to determine which filter to configure.
string config_id = 1 [(validate.rules).string.min_bytes = 1];
}
2 changes: 1 addition & 1 deletion api/envoy/config/filter/http/tap/v2alpha/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ api_proto_library_internal(
name = "tap",
srcs = ["tap.proto"],
deps = [
"//envoy/service/tap/v2alpha:common",
"//envoy/config/common/tap/v2alpha:common",
],
)
19 changes: 4 additions & 15 deletions api/envoy/config/filter/http/tap/v2alpha/tap.proto
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
syntax = "proto3";

import "envoy/service/tap/v2alpha/common.proto";
import "envoy/config/common/tap/v2alpha/common.proto";

import "validate/validate.proto";

Expand All @@ -12,18 +12,7 @@ option java_package = "io.envoyproxy.envoy.config.filter.http.tap.v2alpha";

// Top level configuration for the tap filter.
message Tap {
oneof config_type {
option (validate.required) = true;

// If specified, the tap filter will be configured via an admin handler.
AdminConfig admin_config = 1;
}
}

// Configuration for the admin handler. See :ref:`here <config_http_filters_tap_admin_handler>` for
// more information.
message AdminConfig {
// Opaque configuration ID. When requests are made to the admin handler, the passed opaque ID is
// matched to the configured filter opaque ID to determine which filter to configure.
string config_id = 1 [(validate.rules).string.min_bytes = 1];
// Common configuration for the HTTP tap filter.
common.tap.v2alpha.CommonExtensionConfig common_config = 1
[(validate.rules).message.required = true];
}
11 changes: 11 additions & 0 deletions api/envoy/config/filter/http/wasm/v2/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
load("//bazel:api_build_system.bzl", "api_proto_library_internal")

licenses(["notice"]) # Apache 2

api_proto_library_internal(
name = "wasm",
srcs = ["wasm.proto"],
deps = [
"//envoy/config/wasm/v2:wasm",
],
)
20 changes: 20 additions & 0 deletions api/envoy/config/filter/http/wasm/v2/wasm.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
syntax = "proto3";

package envoy.config.filter.http.wasm.v2;
option java_package = "io.envoyproxy.envoy.config.filter.http.wasm.v2";
option go_package = "v2";
import "validate/validate.proto";
import "envoy/config/wasm/v2/wasm.proto";

// [#protodoc-title: Wasm]
// Wasm :ref:`configuration overview <config_http_filters_wasm>`.

message Wasm {
// A unique ID so that multiple filters/services can call into the same VM.
string id = 1;
// Configuration for starting a new VM (optionally associated with the given 'id').
envoy.config.wasm.v2.VmConfig vm_config = 2;
// Wasm service configuration string e.g. a serialized protobuf which will be the
// argument to the VM configure() call.
string configuration = 3;
}
1 change: 1 addition & 0 deletions api/envoy/config/transport_socket/tap/v2alpha/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ api_proto_library_internal(
srcs = ["tap.proto"],
deps = [
"//envoy/api/v2/core:base",
"//envoy/config/common/tap/v2alpha:common",
],
)
35 changes: 6 additions & 29 deletions api/envoy/config/transport_socket/tap/v2alpha/tap.proto
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,18 @@ option go_package = "v2";

// [#protodoc-title: Tap]

import "envoy/config/common/tap/v2alpha/common.proto";
import "envoy/api/v2/core/base.proto";

// File sink.
//
// .. warning::
//
// The current file sink implementation buffers the entire trace in memory
// prior to writing. This will OOM for long lived sockets and/or where there
// is a large amount of traffic on the socket.
message FileSink {
// Path prefix. The output file will be of the form <path_prefix>_<id>.pb, where <id> is an
// identifier distinguishing the recorded trace for individual socket instances (the Envoy
// connection ID).
string path_prefix = 1;

// File format.
enum Format {
// Binary proto format as per :ref:`Trace
// <envoy_api_msg_data.tap.v2alpha.Trace>`.
PROTO_BINARY = 0;
// Text proto format as per :ref:`Trace
// <envoy_api_msg_data.tap.v2alpha.Trace>`.
PROTO_TEXT = 1;
}
Format format = 2;
}
import "validate/validate.proto";

// Configuration for tap transport socket. This wraps another transport socket, providing the
// ability to interpose and record in plain text any traffic that is surfaced to Envoy.
message Tap {
oneof sink_selector {
// Trace is to be written to a file sink.
FileSink file_sink = 1;
}
// Common configuration for the tap transport socket.
common.tap.v2alpha.CommonExtensionConfig common_config = 1
[(validate.rules).message.required = true];

// The underlying transport socket being wrapped.
api.v2.core.TransportSocket transport_socket = 2;
api.v2.core.TransportSocket transport_socket = 2 [(validate.rules).message.required = true];
}
22 changes: 22 additions & 0 deletions api/envoy/config/wasm/v2/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
load("//bazel:api_build_system.bzl", "api_go_grpc_library", "api_go_proto_library", "api_proto_library_internal")

licenses(["notice"]) # Apache 2

api_proto_library_internal(
name = "wasm",
srcs = ["wasm.proto"],
visibility = [
"//envoy/config/accesslog/v2:__pkg__",
"//envoy/config/bootstrap/v2:__pkg__",
"//envoy/config/filter/http/wasm/v2:__pkg__",
"//source/extensions/wasm:__pkg__",
],
deps = [
"//envoy/api/v2/core:base",
],
)

api_go_proto_library(
name = "wasm",
proto = ":wasm",
)
37 changes: 37 additions & 0 deletions api/envoy/config/wasm/v2/wasm.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
syntax = "proto3";

// [#protodoc-title: Metrics service]

package envoy.config.wasm.v2;
option java_package = "io.envoyproxy.envoy.config.wasm.v2";

import "envoy/api/v2/core/base.proto";

import "validate/validate.proto";

message VmConfig {
// The Wasm VM type (see source/extensions/commmon/wasm/well_known_names.h).
string vm = 1;
// The Wasm code that Envoy will execute.
envoy.api.v2.core.DataSource code = 2;
// The Wasm configuration string used on initialization of a new VM.
string initial_configuration = 3;
// Allow the wasm_file to include pre-compiled code.
bool allow_precompiled = 4;
}

// Wasm is configured as a built-in *envoy.wasm_service* :ref:`WasmConig
// <envoy_api_msg_config.wasm.v2.WasmConfig>`. This opaque configuration will be used to
// create a Wasm Service.
message WasmConfig {
// A unique ID so that multiple filters/services can call into the same VM.
string id = 1;
// Configuration for starting a new VM (optionally associated with the given 'id').
VmConfig vm_config = 2;
// Wasm service configuration string e.g. a serialized protobuf which will be the
// argument to the VM configure() call.
string configuration = 3;
// If true, create a single VM rather than creating one VM per silo. Such a singleton can
// not be used with filters.
bool singleton = 4;
}
5 changes: 4 additions & 1 deletion api/envoy/data/tap/v2alpha/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,8 @@ api_proto_library_internal(
api_proto_library_internal(
name = "wrapper",
srcs = ["wrapper.proto"],
deps = [":http"],
deps = [
":http",
":transport",
],
)
8 changes: 4 additions & 4 deletions api/envoy/data/tap/v2alpha/transport.proto
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ message Connection {
envoy.api.v2.core.Address remote_address = 3;
}

// Event in a trace.
message Event {
// Event in a socket trace.
message SocketEvent {
// Timestamp for event.
google.protobuf.Timestamp timestamp = 1;
// Data read by Envoy from the transport socket.
Expand All @@ -50,9 +50,9 @@ message Event {
// Sequence of read/write events that constitute a trace on a socket.
// Multiple Trace messages might be emitted for a given connection ID, with the
// sink (e.g. file set, network) responsible for later reassembly.
message Trace {
message SocketTrace {
// Connection properties.
Connection connection = 1;
// Sequence of observed events.
repeated Event events = 2;
repeated SocketEvent events = 2;
}
Loading