diff --git a/.golangci.yml b/.golangci.yml
index 2ee53b03a33..1597468c1c7 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -105,9 +105,9 @@ linters-settings:
- golang.zx2c4.com/wireguard
- golang.zx2c4.com/wireguard/wgctrl
- cloud.google.com/go
+ - github.com/mdlayher/ethtool
# fd-leak related replacements: https://github.com/siderolabs/talos/issues/9412
- github.com/insomniacslk/dhcp
- - github.com/safchain/ethtool
retract-allow-no-explanation: false
exclude-forbidden: false
diff --git a/api/resource/definitions/network/network.proto b/api/resource/definitions/network/network.proto
index 9c9f6592c40..a880767cc78 100755
--- a/api/resource/definitions/network/network.proto
+++ b/api/resource/definitions/network/network.proto
@@ -102,6 +102,55 @@ message DNSResolveCacheSpec {
string status = 1;
}
+// EthernetRingsSpec describes config of Ethernet rings.
+message EthernetRingsSpec {
+ uint32 rx = 1;
+ uint32 rx_mini = 2;
+ uint32 rx_jumbo = 3;
+ uint32 tx = 4;
+ uint32 rx_buf_len = 5;
+ uint32 cqe_size = 6;
+ bool tx_push = 7;
+ bool rx_push = 8;
+ uint32 tx_push_buf_len = 9;
+ bool tcp_data_split = 10;
+}
+
+// EthernetRingsStatus describes status of Ethernet rings.
+message EthernetRingsStatus {
+ uint32 rx_max = 1;
+ uint32 rx_mini_max = 2;
+ uint32 rx_jumbo_max = 3;
+ uint32 tx_max = 4;
+ uint32 tx_push_buf_len_max = 5;
+ uint32 rx = 6;
+ uint32 rx_mini = 7;
+ uint32 rx_jumbo = 8;
+ uint32 tx = 9;
+ uint32 rx_buf_len = 10;
+ uint32 cqe_size = 11;
+ bool tx_push = 12;
+ bool rx_push = 13;
+ uint32 tx_push_buf_len = 14;
+ bool tcp_data_split = 15;
+}
+
+// EthernetSpecSpec describes config of Ethernet link.
+message EthernetSpecSpec {
+ EthernetRingsSpec rings = 1;
+}
+
+// EthernetStatusSpec describes status of rendered secrets.
+message EthernetStatusSpec {
+ bool link_state = 1;
+ int64 speed_megabits = 2;
+ talos.resource.definitions.enums.NethelpersPort port = 3;
+ talos.resource.definitions.enums.NethelpersDuplex duplex = 4;
+ repeated string our_modes = 5;
+ repeated string peer_modes = 6;
+ EthernetRingsStatus rings = 7;
+}
+
// HardwareAddrSpec describes spec for the link.
message HardwareAddrSpec {
string name = 1;
diff --git a/cmd/talosctl/cmd/talos/output/table.go b/cmd/talosctl/cmd/talos/output/table.go
index 12893162c61..51a8876cead 100644
--- a/cmd/talosctl/cmd/talos/output/table.go
+++ b/cmd/talosctl/cmd/talos/output/table.go
@@ -92,7 +92,7 @@ func (table *Table) WriteResource(node string, r resource.Resource, event state.
label = "-"
case state.Updated:
label = " "
- case state.Bootstrapped, state.Errored:
+ case state.Bootstrapped, state.Errored, state.Noop:
return nil
}
diff --git a/go.mod b/go.mod
index 9f36081ed73..cc2e3e3de14 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
module github.com/siderolabs/talos
-go 1.23.3
+go 1.23.5
replace (
// see e.g. https://github.com/grpc/grpc-go/issues/6696
@@ -9,6 +9,9 @@ replace (
// forked coredns so we don't carry caddy and other stuff into the Talos
github.com/coredns/coredns => github.com/siderolabs/coredns v1.12.50
+ // forked ethtool introduces missing APIs
+ github.com/mdlayher/ethtool => github.com/siderolabs/ethtool v0.0.0-20250204161245-ee04fc1b1856
+
// see https://github.com/mdlayher/kobject/pull/5
github.com/mdlayher/kobject => github.com/smira/kobject v0.0.0-20240304111826-49c8d4613389
@@ -70,7 +73,7 @@ require (
github.com/containernetworking/plugins v1.6.1
github.com/coredns/coredns v1.11.3
github.com/coreos/go-iptables v0.8.0
- github.com/cosi-project/runtime v0.8.1
+ github.com/cosi-project/runtime v0.9.2
github.com/distribution/reference v0.6.0
github.com/docker/cli v27.4.1+incompatible
github.com/docker/docker v27.4.1+incompatible
@@ -89,7 +92,7 @@ require (
github.com/godbus/dbus/v5 v5.1.0
github.com/golang/mock v1.6.0
github.com/google/cadvisor v0.51.0
- github.com/google/cel-go v0.22.1
+ github.com/google/cel-go v0.23.2
github.com/google/go-containerregistry v0.20.2
github.com/google/go-tpm v0.9.3
github.com/google/nftables v0.2.0
@@ -180,15 +183,15 @@ require (
go.uber.org/zap v1.27.0
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba
golang.org/x/net v0.34.0
- golang.org/x/oauth2 v0.24.0
- golang.org/x/sync v0.10.0
- golang.org/x/sys v0.29.0
+ golang.org/x/oauth2 v0.25.0
+ golang.org/x/sync v0.11.0
+ golang.org/x/sys v0.30.0
golang.org/x/term v0.28.0
- golang.org/x/text v0.21.0
- golang.org/x/time v0.8.0
+ golang.org/x/text v0.22.0
+ golang.org/x/time v0.10.0
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20230429144221-925a1e7659e6
- google.golang.org/grpc v1.69.2
- google.golang.org/protobuf v1.36.1
+ google.golang.org/grpc v1.70.0
+ google.golang.org/protobuf v1.36.4
gopkg.in/yaml.v3 v3.0.1
k8s.io/klog/v2 v2.130.1
kernel.org/pub/linux/libs/security/libcap/cap v1.2.73
@@ -197,7 +200,7 @@ require (
)
require (
- cel.dev/expr v0.18.0 // indirect
+ cel.dev/expr v0.19.2 // indirect
github.com/0x5a17ed/itkit v0.6.0 // indirect
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect
github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2 // indirect
@@ -208,9 +211,9 @@ require (
github.com/MakeNowJust/heredoc v1.0.0 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/Microsoft/hcsshim v0.12.9 // indirect
- github.com/ProtonMail/go-crypto v1.1.3 // indirect
+ github.com/ProtonMail/go-crypto v1.1.5 // indirect
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f // indirect
- github.com/ProtonMail/gopenpgp/v2 v2.8.1 // indirect
+ github.com/ProtonMail/gopenpgp/v2 v2.8.2 // indirect
github.com/adrg/xdg v0.5.3 // indirect
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
github.com/apparentlymart/go-cidr v1.1.0 // indirect
@@ -234,7 +237,7 @@ require (
github.com/containerd/continuity v0.4.4 // indirect
github.com/containerd/errdefs/pkg v0.3.0 // indirect
github.com/containerd/fifo v1.1.0 // indirect
- github.com/containerd/go-cni v1.1.11 // indirect
+ github.com/containerd/go-cni v1.1.12 // indirect
github.com/containerd/plugin v1.0.0 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect
github.com/containerd/ttrpc v1.2.7 // indirect
@@ -248,7 +251,7 @@ require (
github.com/docker/go-units v0.5.0 // indirect
github.com/emicklei/dot v1.6.4 // indirect
github.com/emicklei/go-restful/v3 v3.11.2 // indirect
- github.com/evanphx/json-patch v5.9.0+incompatible // indirect
+ github.com/evanphx/json-patch v5.9.11+incompatible // indirect
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
@@ -274,7 +277,7 @@ require (
github.com/gorilla/websocket v1.5.1 // indirect
github.com/gosuri/uilive v0.0.4 // indirect
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
@@ -289,7 +292,7 @@ require (
github.com/lmittmann/tint v1.0.4 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
- github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mdlayher/ethernet v0.0.0-20220221185849-529eae5b6118 // indirect
@@ -317,6 +320,7 @@ require (
github.com/opencontainers/selinux v1.11.1 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
+ github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect
github.com/pierrec/lz4/v4 v4.1.21 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pkg/errors v0.9.1 // indirect
@@ -327,7 +331,8 @@ require (
github.com/prometheus/common v0.60.1 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
- github.com/siderolabs/protoenc v0.2.1 // indirect
+ github.com/sasha-s/go-deadlock v0.3.5 // indirect
+ github.com/siderolabs/protoenc v0.2.2 // indirect
github.com/siderolabs/tcpproxy v0.1.0 // indirect
github.com/spf13/afero v1.10.0 // indirect
github.com/stoewer/go-strcase v1.3.0 // indirect
@@ -347,18 +352,18 @@ require (
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect
- go.opentelemetry.io/otel v1.31.0 // indirect
- go.opentelemetry.io/otel/metric v1.31.0 // indirect
- go.opentelemetry.io/otel/trace v1.31.0 // indirect
+ go.opentelemetry.io/otel v1.32.0 // indirect
+ go.opentelemetry.io/otel/metric v1.32.0 // indirect
+ go.opentelemetry.io/otel/trace v1.32.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.32.0 // indirect
- golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
+ golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c // indirect
golang.org/x/mod v0.22.0 // indirect
- golang.org/x/tools v0.27.0 // indirect
+ golang.org/x/tools v0.29.0 // indirect
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect
golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20241223144023-3abc09e42ca8 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20250127172529-29210b9bc287 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
diff --git a/go.sum b/go.sum
index 6d7c3c13827..ce9fe3c062c 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,5 @@
-cel.dev/expr v0.18.0 h1:CJ6drgk+Hf96lkLikr4rFf19WrU0BOWEihyZnI2TAzo=
-cel.dev/expr v0.18.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
+cel.dev/expr v0.19.2 h1:V354PbqIXr9IQdwy4SYA4xa0HXaWq1BUPAGzugBY5V4=
+cel.dev/expr v0.19.2/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=
@@ -43,12 +43,12 @@ github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA
github.com/Microsoft/hcsshim v0.12.9 h1:2zJy5KA+l0loz1HzEGqyNnjd3fyZA31ZBCGKacp6lLg=
github.com/Microsoft/hcsshim v0.12.9/go.mod h1:fJ0gkFAna6ukt0bLdKB8djt4XIJhF/vEPuoIWYVvZ8Y=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
-github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
+github.com/ProtonMail/go-crypto v1.1.5 h1:eoAQfK2dwL+tFSFpr7TbOaPNUbPiJj4fLYwwGE1FQO4=
+github.com/ProtonMail/go-crypto v1.1.5/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k=
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw=
-github.com/ProtonMail/gopenpgp/v2 v2.8.1 h1:WGE1THOhOnLurL0+N4BOlLkIhjEO7YVZgmpgyDHN56A=
-github.com/ProtonMail/gopenpgp/v2 v2.8.1/go.mod h1:4PUgqGSQjd7HldUbAgMmC69+Gv6DO8NomCNi0y8+BTc=
+github.com/ProtonMail/gopenpgp/v2 v2.8.2 h1:fe/XagfxkHRCr+cLFMcoF7XwaASRGSmK/fmcmK8yo6o=
+github.com/ProtonMail/gopenpgp/v2 v2.8.2/go.mod h1:pPWZyRQWpQ7g8NWsdZmUynNZ1R09k4MdbSHvm+KooqM=
github.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78=
github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ=
github.com/alexflint/go-filemutex v1.3.0 h1:LgE+nTUWnQCyRKbpoceKZsPQbs84LivvgwUymZXdOcM=
@@ -101,8 +101,8 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1U
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/brianvoe/gofakeit/v6 v6.24.0 h1:74yq7RRz/noddscZHRS2T84oHZisW9muwbb8sRnU52A=
-github.com/brianvoe/gofakeit/v6 v6.24.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8=
+github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4=
+github.com/brianvoe/gofakeit/v6 v6.28.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@@ -139,8 +139,8 @@ github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151X
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY=
github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o=
-github.com/containerd/go-cni v1.1.11 h1:fWt1K15AmSLsEfa57N+qYw4NeGPiQKYq1pjNGJwV9mc=
-github.com/containerd/go-cni v1.1.11/go.mod h1:/Y/sL8yqYQn1ZG1om1OncJB1W4zN3YmjfP/ShCzG/OY=
+github.com/containerd/go-cni v1.1.12 h1:wm/5VD/i255hjM4uIZjBRiEQ7y98W9ACy/mHeLi4+94=
+github.com/containerd/go-cni v1.1.12/go.mod h1:+jaqRBdtW5faJxj2Qwg1Of7GsV66xcvnCx4mSJtUlxU=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/containerd/platforms v1.0.0-rc.1 h1:83KIq4yy1erSRgOVHNk1HYdPvzdJ5CnsWaRoJX4C41E=
@@ -165,8 +165,8 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/cosi-project/runtime v0.8.1 h1:zM5g3cOhvN8HjZ6iBtWwwP4KWmpXSTfMXo3QUZiRjhI=
-github.com/cosi-project/runtime v0.8.1/go.mod h1:sNqLK/aBb8862xGS4HLAcwTloDuH0TeU3N1+qr3TmAs=
+github.com/cosi-project/runtime v0.9.2 h1:l0kugKjZUFrmBFwkza2lt2vA1u8PBuWbrbB2HvPmkTs=
+github.com/cosi-project/runtime v0.9.2/go.mod h1:dzAY2bdrPv0y39FyJOOURMkx3Ae7erMVoxX/N0OAZQU=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc=
@@ -218,8 +218,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls=
-github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
+github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4=
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc=
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
@@ -307,8 +307,8 @@ github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
github.com/google/cadvisor v0.51.0 h1:BspqSPdZoLKrnvuZNOvM/KiJ/A+RdixwagN20n+2H8k=
github.com/google/cadvisor v0.51.0/go.mod h1:czGE/c/P/i0QFpVNKTFrIEzord9Y10YfpwuaSWXELc0=
-github.com/google/cel-go v0.22.1 h1:AfVXx3chM2qwoSbM7Da8g8hX8OVSkBFwX+rz2+PcK40=
-github.com/google/cel-go v0.22.1/go.mod h1:BuznPXXfQDpXKWQ9sPW3TzlAJN5zzFe+i9tIs0yC4s8=
+github.com/google/cel-go v0.23.2 h1:UdEe3CvQh3Nv+E/j9r1Y//WO0K0cSyD7/y0bzyLIMI4=
+github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx1J5Wwo=
github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
@@ -363,8 +363,8 @@ github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:Fecb
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0 h1:kQ0NI7W1B3HwiN5gAYtY+XFItDPbLBwYRxAqbFTyDes=
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.2.0/go.mod h1:zrT2dxOAjNFPRGjTUe2Xmb4q4YdUwVvQFV6xiCSf+z0=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -457,9 +457,8 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/martinlindhe/base36 v1.1.1 h1:1F1MZ5MGghBXDZ2KJ3QfxmiydlWOGB8HCEtkap5NkVg=
github.com/martinlindhe/base36 v1.1.1/go.mod h1:vMS8PaZ5e/jV9LwFKlm0YLnXl/hpOihiBxKkIoc3g08=
-github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
-github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
+github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
@@ -471,10 +470,6 @@ github.com/mdlayher/arp v0.0.0-20220512170110-6706a2966875 h1:ql8x//rJsHMjS+qqEa
github.com/mdlayher/arp v0.0.0-20220512170110-6706a2966875/go.mod h1:kfOoFJuHWp76v1RgZCb9/gVUc7XdY877S2uVYbNliGc=
github.com/mdlayher/ethernet v0.0.0-20220221185849-529eae5b6118 h1:2oDp6OOhLxQ9JBoUuysVz9UZ9uI6oLUbvAZu0x8o+vE=
github.com/mdlayher/ethernet v0.0.0-20220221185849-529eae5b6118/go.mod h1:ZFUnHIVchZ9lJoWoEGUg8Q3M4U8aNNWA3CVSUTkW4og=
-github.com/mdlayher/ethtool v0.0.0-20210210192532-2b88debcdd43/go.mod h1:+t7E0lkKfbBsebllff1xdTmyJt8lH37niI6kwFk9OTo=
-github.com/mdlayher/ethtool v0.2.0 h1:akcA4WZVWozzirPASeMq8qgLkxpF3ykftVXwnrMKrhY=
-github.com/mdlayher/ethtool v0.2.0/go.mod h1:W0pIBrNPK1TslIN4Z9wt1EVbay66Kbvek2z2f29VBfw=
-github.com/mdlayher/genetlink v1.0.0/go.mod h1:0rJ0h4itni50A86M2kHcgS85ttZazNt7a8H2a2cw0Gc=
github.com/mdlayher/genetlink v1.3.2 h1:KdrNKe+CTu+IbZnm/GVUMXSqBBLqcGpRDa0xkQy56gw=
github.com/mdlayher/genetlink v1.3.2/go.mod h1:tcC3pkCrPUGIKKsCsp0B3AdaaKuHtaxoJRz3cc+528o=
github.com/mdlayher/netlink v0.0.0-20190409211403-11939a169225/go.mod h1:eQB3mZE4aiYnlUsyGGCOpPETfdQq4Jhsgf1fk3cwQaA=
@@ -483,7 +478,6 @@ github.com/mdlayher/netlink v1.1.0/go.mod h1:H4WCitaheIsdF9yOYu8CFmCgQthAPIWZmcK
github.com/mdlayher/netlink v1.1.1/go.mod h1:WTYpFb/WTvlRJAyKhZL5/uy69TDDpHHu2VZmb2XgV7o=
github.com/mdlayher/netlink v1.2.0/go.mod h1:kwVW1io0AZy9A1E2YYgaD4Cj+C+GPkU6klXCMzIJ9p8=
github.com/mdlayher/netlink v1.2.1/go.mod h1:bacnNlfhqHqqLo4WsYeXSqfyXkInQ9JneWI68v1KwSU=
-github.com/mdlayher/netlink v1.2.2-0.20210123213345-5cc92139ae3e/go.mod h1:bacnNlfhqHqqLo4WsYeXSqfyXkInQ9JneWI68v1KwSU=
github.com/mdlayher/netlink v1.3.0/go.mod h1:xK/BssKuwcRXHrtN04UBkwQ6dY9VviGGuriDdoPSWys=
github.com/mdlayher/netlink v1.4.0/go.mod h1:dRJi5IABcZpBD2A3D0Mv/AiX8I9uDEu5oGkAVrekmf8=
github.com/mdlayher/netlink v1.4.1/go.mod h1:e4/KuJ+s8UhfUpO9z00/fDZZmhSrs+oxyqAS9cNgn6Q=
@@ -498,6 +492,7 @@ github.com/mdlayher/packet v1.1.2/go.mod h1:GEu1+n9sG5VtiRE4SydOmX5GTwyyYlteZiFU
github.com/mdlayher/socket v0.0.0-20210307095302-262dc9984e00/go.mod h1:GAFlyu4/XV68LkQKYzKhIo/WW7j3Zi0YRAz/BOoanUc=
github.com/mdlayher/socket v0.1.1/go.mod h1:mYV5YIZAfHh4dzDVzI8x8tWLWCliuX8Mon5Awbj+qDs=
github.com/mdlayher/socket v0.2.1/go.mod h1:QLlNPkFR88mRUNQIzRBMfXxwKal8H7u1h3bL1CV+f0E=
+github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA=
github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos=
github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ=
github.com/mdp/qrterminal/v3 v3.2.0 h1:qteQMXO3oyTK4IHwj2mWsKYYRBOp1Pj2WRYFYYNTCdk=
@@ -577,6 +572,8 @@ github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNH
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
+github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=
+github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pin/tftp/v3 v3.1.0 h1:rQaxd4pGwcAJnpId8zC+O2NX3B2/NscjDZQaqEjuE7c=
@@ -628,6 +625,8 @@ github.com/safchain/ethtool v0.5.9 h1://6RvaOKFf3nQ0rl5+8zBbE4/72455VC9Jq61pfq67
github.com/safchain/ethtool v0.5.9/go.mod h1:w8oSsZeowyRaM7xJJBAbubzzrOkwO8TBgPSEqPP/5mg=
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
+github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=
+github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U=
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 h1:yoKAVkEVwAqbGbR8n87rHQ1dulL25rKloGadb3vm770=
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30/go.mod h1:sH0u6fq6x4R5M7WxkoQFY/o7UaiItec0o1LinLCJNq8=
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
@@ -640,6 +639,8 @@ github.com/siderolabs/discovery-api v0.1.5 h1:fcHVkLkWla7C5+9IeOGEUQ4N8Yp9R7a/kc
github.com/siderolabs/discovery-api v0.1.5/go.mod h1:b9jOm9T2puYVcRqCAjWxPcHz2qBqDX8I0OZDOyOFHXg=
github.com/siderolabs/discovery-client v0.1.10 h1:bTAvFLiISSzVXyYL1cIgAz8cPYd9ZfvhxwdebgtxARA=
github.com/siderolabs/discovery-client v0.1.10/go.mod h1:Ew1z07eyJwqNwum84IKYH4S649KEKK5WUmRW49HlXS8=
+github.com/siderolabs/ethtool v0.0.0-20250204161245-ee04fc1b1856 h1:LQe9knKlZXGdrm0J/bcojk42qqhfBoPpiqqgXQa/7pY=
+github.com/siderolabs/ethtool v0.0.0-20250204161245-ee04fc1b1856/go.mod h1:3u47fCDlOQGM7IhXhUB3uPEcjdQxGmK53/45kEg1HDM=
github.com/siderolabs/gen v0.8.0 h1:Pj93+hexkk5hQ7izjJ6YXnEWc8vlzOmDwFz13/VzS7o=
github.com/siderolabs/gen v0.8.0/go.mod h1:an3a2Y53O7kUjnnK8Bfu3gewtvnIOu5RTU6HalFtXQQ=
github.com/siderolabs/go-api-signature v0.3.6 h1:wDIsXbpl7Oa/FXvxB6uz4VL9INA9fmr3EbmjEZYFJrU=
@@ -686,8 +687,8 @@ github.com/siderolabs/net v0.4.0 h1:1bOgVay/ijPkJz4qct98nHsiB/ysLQU0KLoBC4qLm7I=
github.com/siderolabs/net v0.4.0/go.mod h1:/ibG+Hm9HU27agp5r9Q3eZicEfjquzNzQNux5uEk0kM=
github.com/siderolabs/proto-codec v0.1.1 h1:4jiUwW/vaXTZ+YNgZDs37B4aj/1mzV/erIkzUUCRY9g=
github.com/siderolabs/proto-codec v0.1.1/go.mod h1:rIvmhKJG8+JwSCGPX+cQljpOMDmuHhLKPkt6KaFwEaU=
-github.com/siderolabs/protoenc v0.2.1 h1:BqxEmeWQeMpNP3R6WrPqDatX8sM/r4t97OP8mFmg6GA=
-github.com/siderolabs/protoenc v0.2.1/go.mod h1:StTHxjet1g11GpNAWiATgc8K0HMKiFSEVVFOa/H0otc=
+github.com/siderolabs/protoenc v0.2.2 h1:vVQDrTjV+QSOiroWTca6h2Sn5XWYk7VSUPav5J0Qp54=
+github.com/siderolabs/protoenc v0.2.2/go.mod h1:gtkHkjSCFEceXUHUzKDpnuvXu1mab9D3pVxTnQN+z+o=
github.com/siderolabs/siderolink v0.3.11 h1:teJ/LMjSyLekhJVy2+nDIuOBPrVRAMwusJQzxdA95K0=
github.com/siderolabs/siderolink v0.3.11/go.mod h1:QbGnXpHI5MDq6qMZkCFnxYOOw5eE+lkLx53L5ZgjLMQ=
github.com/siderolabs/tcpproxy v0.1.0 h1:IbkS9vRhjMOscc1US3M5P1RnsGKFgB6U5IzUk+4WkKA=
@@ -728,6 +729,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=
@@ -800,20 +803,20 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.5
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0/go.mod h1:n8MR6/liuGB5EmTETUBeU5ZgqMOlqKRxUaqPQBOANZ8=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM=
-go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
-go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
+go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
+go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4=
-go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
-go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
-go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
-go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
-go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
-go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
-go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
-go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
+go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
+go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
+go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
+go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
+go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU=
+go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ=
+go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
+go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0=
go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8=
@@ -836,8 +839,8 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
-golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
+golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c h1:KL/ZBHXgKGVmuZBZ01Lt57yE5ws8ZPSkkihmEyq7FXc=
+golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
@@ -883,6 +886,7 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -893,8 +897,8 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
-golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
+golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -906,8 +910,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
+golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -931,7 +935,6 @@ golang.org/x/sys v0.0.0-20201218084310-7d0127a74742/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210110051926-789bb1bd4061/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210123111255-9b0068b26619/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210216163648-f7da38b97c65/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -955,22 +958,24 @@ golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
+golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
@@ -982,11 +987,12 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg=
-golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
+golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
+golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4=
+golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@@ -1005,8 +1011,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o=
-golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q=
+golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE=
+golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1042,10 +1048,10 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc
google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto/googleapis/api v0.0.0-20241223144023-3abc09e42ca8 h1:st3LcW/BPi75W4q1jJTEor/QWwbNlPlDG0JTn6XhZu0=
-google.golang.org/genproto/googleapis/api v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:klhJGKFyG8Tn50enBn7gizg4nXGXJ+jqEREdCWaPcV4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA=
+google.golang.org/genproto/googleapis/api v0.0.0-20250127172529-29210b9bc287 h1:A2ni10G3UlplFrWdCDJTl7D7mJ7GSRm37S+PDimaKRw=
+google.golang.org/genproto/googleapis/api v0.0.0-20250127172529-29210b9bc287/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287 h1:J1H9f+LEdWAfHcez/4cvaVBox7cOYT+IU6rgqj5x++8=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -1062,8 +1068,8 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD
google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
-google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
-google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
+google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
+google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -1078,8 +1084,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
-google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
+google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
diff --git a/go.work b/go.work
index dbcf1a238b4..5722a6d97ca 100644
--- a/go.work
+++ b/go.work
@@ -1,4 +1,4 @@
-go 1.23.3
+go 1.23.5
use (
.
diff --git a/hack/cloud-image-uploader/go.mod b/hack/cloud-image-uploader/go.mod
index e5c7a9c6245..7874114dd73 100644
--- a/hack/cloud-image-uploader/go.mod
+++ b/hack/cloud-image-uploader/go.mod
@@ -1,6 +1,6 @@
module github.com/siderolabs/cloud-image-uploader
-go 1.23.3
+go 1.23.5
require (
cloud.google.com/go/storage v1.49.0
diff --git a/hack/docgen/go.mod b/hack/docgen/go.mod
index b5611ab49d0..c69269ea8eb 100644
--- a/hack/docgen/go.mod
+++ b/hack/docgen/go.mod
@@ -1,6 +1,6 @@
module github.com/siderolabs/talos-hack-docgen
-go 1.23.3
+go 1.23.5
// forked go-yaml that introduces RawYAML interface, which can be used to populate YAML fields using bytes
// which are then encoded as a valid YAML blocks with proper indentiation
diff --git a/hack/gotagsrewrite/go.mod b/hack/gotagsrewrite/go.mod
index 56175a6b2e2..2326aa62431 100644
--- a/hack/gotagsrewrite/go.mod
+++ b/hack/gotagsrewrite/go.mod
@@ -1,6 +1,6 @@
module github.com/siderolabs/gotagsrewrite
-go 1.23.3
+go 1.23.5
require (
github.com/fatih/structtag v1.2.0
diff --git a/hack/module-sig-verify/go.mod b/hack/module-sig-verify/go.mod
index e5f2472525f..1c8cf1a8a51 100644
--- a/hack/module-sig-verify/go.mod
+++ b/hack/module-sig-verify/go.mod
@@ -1,5 +1,5 @@
module module-sig-verify
-go 1.23.3
+go 1.23.5
require go.mozilla.org/pkcs7 v0.9.0
diff --git a/hack/release.toml b/hack/release.toml
index 7473f90c7eb..315942e54ed 100644
--- a/hack/release.toml
+++ b/hack/release.toml
@@ -100,6 +100,13 @@ The NQN can be read by `talosctl read /etc/nvme/hostnqn`
title = "ISO"
description = """\
Talos starting with 1.10 will have ISO's that will use GRUB only for legacy BIOS and systemd-boot for modern UEFI systems.
+"""
+
+ [notes.ethernet]
+ title = "Ethernet"
+ description = """\
+Talos now provides `ethtool`-style Ethernet low-level configuration via `network/EthernetConfig` documents.
+Current status of the interface can be read by `talosctl get ethernetstatus`.
"""
[make_deps]
diff --git a/hack/structprotogen/go.mod b/hack/structprotogen/go.mod
index 7d4a4cc7ea2..0dd637add79 100644
--- a/hack/structprotogen/go.mod
+++ b/hack/structprotogen/go.mod
@@ -1,6 +1,6 @@
module github.com/siderolabs/structprotogen
-go 1.23.3
+go 1.23.5
require (
github.com/fatih/structtag v1.2.0
diff --git a/internal/app/apid/pkg/director/local_address.go b/internal/app/apid/pkg/director/local_address.go
index 7c7b0b3c27a..5f256cac1d0 100644
--- a/internal/app/apid/pkg/director/local_address.go
+++ b/internal/app/apid/pkg/director/local_address.go
@@ -51,7 +51,7 @@ func (p *localAddressProvider) watch(evCh <-chan state.Event) {
switch ev.Type {
case state.Created, state.Updated:
// expected
- case state.Destroyed, state.Bootstrapped, state.Errored:
+ case state.Destroyed, state.Bootstrapped, state.Errored, state.Noop:
// shouldn't happen, ignore
continue
}
diff --git a/internal/app/apid/pkg/provider/provider.go b/internal/app/apid/pkg/provider/provider.go
index 215b3d57712..74853ba313a 100644
--- a/internal/app/apid/pkg/provider/provider.go
+++ b/internal/app/apid/pkg/provider/provider.go
@@ -51,7 +51,7 @@ func NewTLSConfig(ctx context.Context, resources state.State) (*TLSConfig, error
switch event.Type {
case state.Created, state.Updated:
// expected
- case state.Destroyed, state.Bootstrapped:
+ case state.Destroyed, state.Bootstrapped, state.Noop:
// ignore, we'll get another event
continue
case state.Errored:
@@ -85,7 +85,7 @@ func (tlsConfig *TLSConfig) Watch(ctx context.Context, onUpdate func()) error {
switch event.Type {
case state.Created, state.Updated:
// expected
- case state.Destroyed, state.Bootstrapped:
+ case state.Destroyed, state.Bootstrapped, state.Noop:
// ignore, we'll get another event
continue
case state.Errored:
diff --git a/internal/app/machined/pkg/controllers/network/ethernet_config.go b/internal/app/machined/pkg/controllers/network/ethernet_config.go
new file mode 100644
index 00000000000..51a995fb463
--- /dev/null
+++ b/internal/app/machined/pkg/controllers/network/ethernet_config.go
@@ -0,0 +1,92 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package network
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/cosi-project/runtime/pkg/controller"
+ "github.com/cosi-project/runtime/pkg/safe"
+ "github.com/cosi-project/runtime/pkg/state"
+ "github.com/siderolabs/gen/optional"
+ "go.uber.org/zap"
+
+ configtypes "github.com/siderolabs/talos/pkg/machinery/config/config"
+ "github.com/siderolabs/talos/pkg/machinery/resources/config"
+ "github.com/siderolabs/talos/pkg/machinery/resources/network"
+)
+
+// EthernetConfigController manages network.EthernetSpec based on machine configuration.
+type EthernetConfigController struct{}
+
+// Name implements controller.Controller interface.
+func (ctrl *EthernetConfigController) Name() string {
+ return "network.EthernetConfigController"
+}
+
+// Inputs implements controller.Controller interface.
+func (ctrl *EthernetConfigController) Inputs() []controller.Input {
+ return []controller.Input{
+ {
+ Namespace: config.NamespaceName,
+ Type: config.MachineConfigType,
+ ID: optional.Some(config.V1Alpha1ID),
+ Kind: controller.InputWeak,
+ },
+ }
+}
+
+// Outputs implements controller.Controller interface.
+func (ctrl *EthernetConfigController) Outputs() []controller.Output {
+ return []controller.Output{
+ {
+ Type: network.EthernetSpecType,
+ Kind: controller.OutputShared,
+ },
+ }
+}
+
+// Run implements controller.Controller interface.
+func (ctrl *EthernetConfigController) Run(ctx context.Context, r controller.Runtime, logger *zap.Logger) error {
+ for {
+ select {
+ case <-ctx.Done():
+ return nil
+ case <-r.EventCh():
+ }
+
+ r.StartTrackingOutputs()
+
+ cfg, err := safe.ReaderGetByID[*config.MachineConfig](ctx, r, config.V1Alpha1ID)
+ if err != nil && !state.IsNotFoundError(err) {
+ return fmt.Errorf("error reading machine configuration: %w", err)
+ }
+
+ if cfg != nil {
+ if err = ctrl.apply(ctx, r, cfg.Config().EthernetConfigs()); err != nil {
+ return fmt.Errorf("error applying EthernetSpec: %w", err)
+ }
+ }
+
+ if err = safe.CleanupOutputs[*network.EthernetSpec](ctx, r); err != nil {
+ return fmt.Errorf("error cleaning up EthernetSpec: %w", err)
+ }
+ }
+}
+
+func (ctrl *EthernetConfigController) apply(ctx context.Context, r controller.Runtime, configs []configtypes.EthernetConfig) error {
+ for _, cfg := range configs {
+ if err := safe.WriterModify(ctx, r, network.NewEthernetSpec(network.NamespaceName, cfg.Name()), func(spec *network.EthernetSpec) error {
+ spec.TypedSpec().Rings = network.EthernetRingsSpec(cfg.Rings())
+
+ return nil
+ }); err != nil {
+ return fmt.Errorf("error writing EthernetSpec: %w", err)
+ }
+ }
+
+ return nil
+}
diff --git a/internal/app/machined/pkg/controllers/network/ethernet_spec.go b/internal/app/machined/pkg/controllers/network/ethernet_spec.go
new file mode 100644
index 00000000000..d4f0c396a08
--- /dev/null
+++ b/internal/app/machined/pkg/controllers/network/ethernet_spec.go
@@ -0,0 +1,135 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package network
+
+import (
+ "context"
+ "errors"
+ "fmt"
+
+ "github.com/cosi-project/runtime/pkg/controller"
+ "github.com/cosi-project/runtime/pkg/safe"
+ "github.com/mdlayher/ethtool"
+ "github.com/siderolabs/gen/optional"
+ "go.uber.org/zap"
+
+ "github.com/siderolabs/talos/internal/app/machined/pkg/controllers/runtime"
+ "github.com/siderolabs/talos/pkg/machinery/resources/network"
+)
+
+// EthernetSpecController reports Ethernet link statuses.
+type EthernetSpecController struct{}
+
+// Name implements controller.Controller interface.
+func (ctrl *EthernetSpecController) Name() string {
+ return "network.EthernetSpecController"
+}
+
+// Inputs implements controller.Controller interface.
+func (ctrl *EthernetSpecController) Inputs() []controller.Input {
+ return []controller.Input{
+ {
+ Namespace: network.NamespaceName,
+ Type: network.EthernetSpecType,
+ Kind: controller.InputWeak,
+ },
+ }
+}
+
+// Outputs implements controller.Controller interface.
+func (ctrl *EthernetSpecController) Outputs() []controller.Output {
+ return nil
+}
+
+// Run implements controller.Controller interface.
+func (ctrl *EthernetSpecController) Run(ctx context.Context, r controller.Runtime, logger *zap.Logger) error {
+ // wait for udevd to be healthy, which implies that all link renames are done
+ if err := runtime.WaitForDevicesReady(ctx, r,
+ []controller.Input{
+ {
+ Namespace: network.NamespaceName,
+ Type: network.EthernetSpecType,
+ Kind: controller.InputWeak,
+ },
+ },
+ ); err != nil {
+ return err
+ }
+
+ ethClient, err := ethtool.New()
+ if err != nil {
+ logger.Warn("error dialing ethtool socket", zap.Error(err))
+
+ return nil
+ }
+
+ defer ethClient.Close() //nolint:errcheck
+
+ for {
+ select {
+ case <-ctx.Done():
+ return nil
+ case <-r.EventCh():
+ }
+
+ specs, err := safe.ReaderListAll[*network.EthernetSpec](ctx, r)
+ if err != nil {
+ return fmt.Errorf("error reading EthernetSpec resources: %w", err)
+ }
+
+ var errs error
+
+ for spec := range specs.All() {
+ if err = ctrl.apply(ethClient, spec); err != nil {
+ errs = errors.Join(errs, fmt.Errorf("error configuring %q: %w", spec.Metadata().ID(), err))
+ }
+ }
+
+ if errs != nil {
+ return fmt.Errorf("failed to reconcile Ethernet specs: %w", errs)
+ }
+
+ r.ResetRestartBackoff()
+ }
+}
+
+func optionalFromPtr[T any](ptr *T) optional.Optional[T] {
+ if ptr == nil {
+ return optional.None[T]()
+ }
+
+ return optional.Some(*ptr)
+}
+
+func (ctrl *EthernetSpecController) apply(
+ ethClient *ethtool.Client,
+ spec *network.EthernetSpec,
+) error {
+ ringSpec := spec.TypedSpec().Rings
+
+ var zeroRingSpec network.EthernetRingsSpec
+
+ if ringSpec != zeroRingSpec {
+ if err := ethClient.SetRings(ethtool.Rings{
+ Interface: ethtool.Interface{
+ Name: spec.Metadata().ID(),
+ },
+ RX: optionalFromPtr(ringSpec.RX),
+ RXMini: optionalFromPtr(ringSpec.RXMini),
+ RXJumbo: optionalFromPtr(ringSpec.RXJumbo),
+ TX: optionalFromPtr(ringSpec.TX),
+ RXBufLen: optionalFromPtr(ringSpec.RXBufLen),
+ CQESize: optionalFromPtr(ringSpec.CQESize),
+ TXPush: optionalFromPtr(ringSpec.TXPush),
+ RXPush: optionalFromPtr(ringSpec.RXPush),
+ TXPushBufLen: optionalFromPtr(ringSpec.TXPushBufLen),
+ TCPDataSplit: optionalFromPtr(ringSpec.TCPDataSplit),
+ }); err != nil {
+ return fmt.Errorf("error updating rings: %w", err)
+ }
+ }
+
+ return nil
+}
diff --git a/internal/app/machined/pkg/controllers/network/ethernet_status.go b/internal/app/machined/pkg/controllers/network/ethernet_status.go
new file mode 100644
index 00000000000..ca72c4582df
--- /dev/null
+++ b/internal/app/machined/pkg/controllers/network/ethernet_status.go
@@ -0,0 +1,184 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package network
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "os"
+
+ "github.com/cosi-project/runtime/pkg/controller"
+ "github.com/cosi-project/runtime/pkg/safe"
+ "github.com/mdlayher/ethtool"
+ "github.com/siderolabs/gen/xslices"
+ "github.com/siderolabs/go-pointer"
+ "go.uber.org/zap"
+
+ "github.com/siderolabs/talos/internal/app/machined/pkg/controllers/network/watch"
+ "github.com/siderolabs/talos/internal/app/machined/pkg/controllers/runtime"
+ "github.com/siderolabs/talos/pkg/machinery/nethelpers"
+ "github.com/siderolabs/talos/pkg/machinery/resources/network"
+)
+
+// EthernetStatusController reports Ethernet link statuses.
+type EthernetStatusController struct{}
+
+// Name implements controller.Controller interface.
+func (ctrl *EthernetStatusController) Name() string {
+ return "network.EthernetStatusController"
+}
+
+// Inputs implements controller.Controller interface.
+func (ctrl *EthernetStatusController) Inputs() []controller.Input {
+ return nil
+}
+
+// Outputs implements controller.Controller interface.
+func (ctrl *EthernetStatusController) Outputs() []controller.Output {
+ return []controller.Output{
+ {
+ Type: network.EthernetStatusType,
+ Kind: controller.OutputExclusive,
+ },
+ }
+}
+
+// Run implements controller.Controller interface.
+func (ctrl *EthernetStatusController) Run(ctx context.Context, r controller.Runtime, logger *zap.Logger) error {
+ // wait for udevd to be healthy, which implies that all link renames are done
+ if err := runtime.WaitForDevicesReady(ctx, r,
+ []controller.Input{
+ {
+ Namespace: network.NamespaceName,
+ Type: network.LinkSpecType,
+ Kind: controller.InputStrong,
+ },
+ },
+ ); err != nil {
+ return err
+ }
+
+ // create watch connections to ethtool via genetlink
+ // these connections are used only to join multicast groups and receive notifications on changes
+ // other connections are used to send requests and receive responses, as we can't mix the notifications and request/responses
+ ethtoolWatcher, err := watch.NewEthtool(watch.NewDefaultRateLimitedTrigger(ctx, r))
+ if err != nil {
+ logger.Warn("ethtool watcher failed to start", zap.Error(err))
+
+ return nil
+ }
+
+ defer ethtoolWatcher.Done()
+
+ ethClient, err := ethtool.New()
+ if err != nil {
+ logger.Warn("error dialing ethtool socket", zap.Error(err))
+
+ return nil
+ }
+
+ defer ethClient.Close() //nolint:errcheck
+
+ for {
+ select {
+ case <-ctx.Done():
+ return nil
+ case <-r.EventCh():
+ }
+
+ r.StartTrackingOutputs()
+
+ if err = ctrl.reconcile(ctx, r, logger, ethClient); err != nil {
+ return err
+ }
+
+ if err = safe.CleanupOutputs[*network.EthernetStatus](ctx, r); err != nil {
+ return err
+ }
+ }
+}
+
+// reconcile function runs for every reconciliation loop querying the ethtool state and updating resources.
+//
+//nolint:gocyclo
+func (ctrl *EthernetStatusController) reconcile(
+ ctx context.Context,
+ r controller.Runtime,
+ logger *zap.Logger,
+ ethClient *ethtool.Client,
+) error {
+ linkInfos, err := ethClient.LinkInfos()
+ if err != nil {
+ return fmt.Errorf("error listing links: %w", err)
+ }
+
+ for _, linkInfo := range linkInfos {
+ iface := linkInfo.Interface
+
+ lgger := logger.With(zap.String("interface", iface.Name))
+
+ linkState, err := ethClient.LinkState(iface)
+ if err != nil && !errors.Is(err, os.ErrNotExist) {
+ lgger.Warn("error getting link state", zap.Error(err))
+ }
+
+ linkMode, err := ethClient.LinkMode(iface)
+ if err != nil && !errors.Is(err, os.ErrNotExist) {
+ lgger.Warn("error getting link mode", zap.Error(err))
+ }
+
+ rings, err := ethClient.Rings(iface)
+ if err != nil && !errors.Is(err, os.ErrNotExist) {
+ lgger.Warn("error getting rings", zap.Error(err))
+ }
+
+ if err := safe.WriterModify(ctx, r, network.NewEthernetStatus(network.NamespaceName, iface.Name), func(res *network.EthernetStatus) error {
+ res.TypedSpec().Port = nethelpers.Port(linkInfo.Port)
+
+ if linkMode != nil {
+ res.TypedSpec().Duplex = nethelpers.Duplex(linkMode.Duplex)
+ res.TypedSpec().OurModes = xslices.Map(linkMode.Ours, func(m ethtool.AdvertisedLinkMode) string { return m.Name })
+ res.TypedSpec().PeerModes = xslices.Map(linkMode.Peer, func(m ethtool.AdvertisedLinkMode) string { return m.Name })
+ } else {
+ res.TypedSpec().Duplex = nethelpers.Duplex(0)
+ }
+
+ if linkState == nil {
+ res.TypedSpec().LinkState = nil
+ } else {
+ res.TypedSpec().LinkState = pointer.To(linkState.Link)
+ }
+
+ if rings == nil {
+ res.TypedSpec().Rings = nil
+ } else {
+ res.TypedSpec().Rings = &network.EthernetRingsStatus{
+ RXMax: rings.RXMax.Ptr(),
+ RXMiniMax: rings.RXMiniMax.Ptr(),
+ RXJumboMax: rings.RXJumboMax.Ptr(),
+ TXMax: rings.TXMax.Ptr(),
+ TXPushBufLenMax: rings.TXPushBufLenMax.Ptr(),
+ RX: rings.RX.Ptr(),
+ RXMini: rings.RXMini.Ptr(),
+ RXJumbo: rings.RXJumbo.Ptr(),
+ TX: rings.TX.Ptr(),
+ RXBufLen: rings.RXBufLen.Ptr(),
+ CQESize: rings.CQESize.Ptr(),
+ TXPush: rings.TXPush.Ptr(),
+ RXPush: rings.RXPush.Ptr(),
+ TXPushBufLen: rings.TXPushBufLen.Ptr(),
+ TCPDataSplit: rings.TCPDataSplit.Ptr(),
+ }
+ }
+
+ return nil
+ }); err != nil {
+ return fmt.Errorf("error updating EthernetStatus resource: %w", err)
+ }
+ }
+
+ return nil
+}
diff --git a/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/metal.go b/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/metal.go
index 110144c41e9..cc0d743a0b6 100644
--- a/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/metal.go
+++ b/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/metal.go
@@ -257,7 +257,7 @@ func (m *Metal) NetworkConfiguration(ctx context.Context, st state.State, ch cha
switch event.Type {
case state.Errored:
return fmt.Errorf("watch failed: %w", event.Error)
- case state.Bootstrapped:
+ case state.Bootstrapped, state.Noop:
// ignored, should not happen
case state.Created, state.Updated:
switch r := event.Resource.(type) {
diff --git a/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/url/map.go b/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/url/map.go
index a1ea0928066..36337ec67f0 100644
--- a/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/url/map.go
+++ b/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/url/map.go
@@ -65,7 +65,7 @@ waitLoop:
switch ev.Type {
case state.Errored:
return nil, fmt.Errorf("error watching variables: %w", ev.Error)
- case state.Bootstrapped:
+ case state.Bootstrapped, state.Noop:
// ignored
case state.Created, state.Updated, state.Destroyed:
for _, variable := range activeVariables {
diff --git a/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/url/url.go b/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/url/url.go
index 05d199c13d6..1c60ed6c436 100644
--- a/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/url/url.go
+++ b/internal/app/machined/pkg/runtime/v1alpha1/platform/metal/url/url.go
@@ -77,7 +77,7 @@ func PopulateVariables(ctx context.Context, downloadURL string, st state.State,
switch ev.Type {
case state.Errored:
return "", fmt.Errorf("error watching variables: %w", ev.Error)
- case state.Bootstrapped:
+ case state.Bootstrapped, state.Noop:
// ignored
case state.Created, state.Updated, state.Destroyed:
anyHandled := false
diff --git a/internal/app/machined/pkg/runtime/v1alpha1/v1alpha1_sequencer_tasks.go b/internal/app/machined/pkg/runtime/v1alpha1/v1alpha1_sequencer_tasks.go
index 594250c7af7..4535fa27dcb 100644
--- a/internal/app/machined/pkg/runtime/v1alpha1/v1alpha1_sequencer_tasks.go
+++ b/internal/app/machined/pkg/runtime/v1alpha1/v1alpha1_sequencer_tasks.go
@@ -2061,7 +2061,7 @@ func WaitForCARoots(runtime.Sequence, any) (runtime.TaskExecutionFunc, string) {
switch e.Type {
case state.Errored:
return e.Error
- case state.Bootstrapped, state.Destroyed: // ignore
+ case state.Bootstrapped, state.Destroyed, state.Noop: // ignore
case state.Created, state.Updated:
switch res := e.Resource.(type) {
case *resourcefiles.EtcFileSpec:
diff --git a/internal/app/machined/pkg/runtime/v1alpha2/v1alpha2_controller.go b/internal/app/machined/pkg/runtime/v1alpha2/v1alpha2_controller.go
index c0ca3c76e1c..c1ada9dfc1d 100644
--- a/internal/app/machined/pkg/runtime/v1alpha2/v1alpha2_controller.go
+++ b/internal/app/machined/pkg/runtime/v1alpha2/v1alpha2_controller.go
@@ -237,6 +237,9 @@ func (ctrl *Controller) Run(ctx context.Context, drainer *runtime.Drainer) error
PodResolvConfPath: constants.PodResolvConfPath,
V1Alpha1Mode: ctrl.v1alpha1Runtime.State().Platform().Mode(),
},
+ &network.EthernetConfigController{},
+ &network.EthernetSpecController{},
+ &network.EthernetStatusController{},
&network.HardwareAddrController{},
&network.HostDNSConfigController{},
&network.HostnameConfigController{
diff --git a/internal/app/machined/pkg/runtime/v1alpha2/v1alpha2_state.go b/internal/app/machined/pkg/runtime/v1alpha2/v1alpha2_state.go
index 78b15b826ee..fd26f336277 100644
--- a/internal/app/machined/pkg/runtime/v1alpha2/v1alpha2_state.go
+++ b/internal/app/machined/pkg/runtime/v1alpha2/v1alpha2_state.go
@@ -168,6 +168,8 @@ func NewState() (*State, error) {
&network.DeviceConfigSpec{},
&network.DNSResolveCache{},
&network.DNSUpstream{},
+ &network.EthernetSpec{},
+ &network.EthernetStatus{},
&network.HardwareAddr{},
&network.HostDNSConfig{},
&network.HostnameStatus{},
diff --git a/internal/app/trustd/internal/provider/provider.go b/internal/app/trustd/internal/provider/provider.go
index 7515496f7df..b9330b7ecce 100644
--- a/internal/app/trustd/internal/provider/provider.go
+++ b/internal/app/trustd/internal/provider/provider.go
@@ -53,7 +53,7 @@ func NewTLSConfig(ctx context.Context, resources state.State) (*TLSConfig, error
switch event.Type {
case state.Created, state.Updated:
// expected
- case state.Destroyed, state.Bootstrapped:
+ case state.Destroyed, state.Bootstrapped, state.Noop:
// ignore, we'll get another event
continue
case state.Errored:
@@ -87,7 +87,7 @@ func (tlsConfig *TLSConfig) Watch(ctx context.Context) error {
switch event.Type {
case state.Created, state.Updated:
// expected
- case state.Destroyed, state.Bootstrapped:
+ case state.Destroyed, state.Bootstrapped, state.Noop:
// ignore, we'll get another event
continue
case state.Errored:
diff --git a/internal/integration/api/ethernet.go b/internal/integration/api/ethernet.go
new file mode 100644
index 00000000000..30dde47c752
--- /dev/null
+++ b/internal/integration/api/ethernet.go
@@ -0,0 +1,132 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+//go:build integration_api
+
+package api
+
+import (
+ "context"
+ "os"
+ "time"
+
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/rtestutils"
+ "github.com/cosi-project/runtime/pkg/safe"
+ "github.com/siderolabs/go-pointer"
+ "github.com/stretchr/testify/assert"
+ "gopkg.in/yaml.v3"
+
+ "github.com/siderolabs/talos/internal/integration/base"
+ "github.com/siderolabs/talos/pkg/machinery/client"
+ networkconfig "github.com/siderolabs/talos/pkg/machinery/config/types/network"
+ "github.com/siderolabs/talos/pkg/machinery/resources/network"
+)
+
+// EthernetSuite ...
+type EthernetSuite struct {
+ base.APISuite
+
+ ctx context.Context //nolint:containedctx
+ ctxCancel context.CancelFunc
+}
+
+// SuiteName ...
+func (suite *EthernetSuite) SuiteName() string {
+ return "api.EthernetSuite"
+}
+
+// SetupTest ...
+func (suite *EthernetSuite) SetupTest() {
+ suite.ctx, suite.ctxCancel = context.WithTimeout(context.Background(), 1*time.Minute)
+
+ if suite.Cluster == nil || suite.Cluster.Provisioner() != base.ProvisionerQEMU {
+ suite.T().Skip("skipping ethernet test since provisioner is not qemu")
+ }
+}
+
+// TearDownTest ...
+func (suite *EthernetSuite) TearDownTest() {
+ if suite.ctxCancel != nil {
+ suite.ctxCancel()
+ }
+}
+
+// TestEthernetConfig verifies changing Ethernet settings.
+func (suite *EthernetSuite) TestEthernetConfig() {
+ // pick up a random node to test the Ethernet on, and use it throughout the test
+ node := suite.RandomDiscoveredNodeInternalIP()
+
+ suite.T().Logf("testing Ethernet on node %s", node)
+
+ // build a Talos API context which is tied to the node
+ nodeCtx := client.WithNode(suite.ctx, node)
+
+ // pick a Ethernet links
+ ethStatuses, err := safe.StateListAll[*network.EthernetStatus](nodeCtx, suite.Client.COSI)
+ suite.Require().NoError(err)
+
+ var (
+ linkName string
+ prevRingConfig *network.EthernetRingsStatus
+ )
+
+ for ethStatus := range ethStatuses.All() {
+ if ethStatus.TypedSpec().Rings != nil && ethStatus.TypedSpec().Rings.RXMax != nil {
+ linkName = ethStatus.Metadata().ID()
+ prevRingConfig = ethStatus.TypedSpec().Rings
+
+ marshaled, err := resource.MarshalYAML(ethStatus)
+ suite.Require().NoError(err)
+
+ out, err := yaml.Marshal(marshaled)
+ suite.Require().NoError(err)
+
+ suite.T().Logf("found link %s with: %s", linkName, string(out))
+
+ break
+ }
+ }
+
+ suite.Require().NotEmpty(linkName, "no link provides RX rings")
+
+ if os.Getenv("CI") != "" {
+ suite.T().Skip("skipping ethtool test in CI, as QEMU version doesn't support updating RX rings for virtio")
+ }
+
+ // first, adjust RX rings to be 50% of what it was before
+ newRX := pointer.SafeDeref(prevRingConfig.RXMax) / 2
+
+ cfgDocument := networkconfig.NewEthernetConfigV1Alpha1(linkName)
+ cfgDocument.RingsConfig = &networkconfig.EthernetRingsConfig{
+ RX: pointer.To(newRX),
+ }
+ suite.PatchMachineConfig(nodeCtx, cfgDocument)
+
+ // now EthernetStatus should reflect the new RX rings
+ rtestutils.AssertResource(nodeCtx, suite.T(), suite.Client.COSI, linkName,
+ func(ethStatus *network.EthernetStatus, asrt *assert.Assertions) {
+ asrt.Equal(newRX, pointer.SafeDeref(ethStatus.TypedSpec().Rings.RX))
+ },
+ )
+
+ // now, let's revert the RX rings to what it was before
+ cfgDocument.RingsConfig.RX = prevRingConfig.RX
+
+ suite.PatchMachineConfig(nodeCtx, cfgDocument)
+
+ // now EthernetStatus should reflect the new RX rings
+ rtestutils.AssertResource(nodeCtx, suite.T(), suite.Client.COSI, linkName,
+ func(ethStatus *network.EthernetStatus, asrt *assert.Assertions) {
+ asrt.Equal(pointer.SafeDeref(prevRingConfig.RX), pointer.SafeDeref(ethStatus.TypedSpec().Rings.RX))
+ },
+ )
+
+ // remove the config document
+ suite.RemoveMachineConfigDocuments(nodeCtx, cfgDocument.MetaKind)
+}
+
+func init() {
+ allSuites = append(allSuites, new(EthernetSuite))
+}
diff --git a/internal/pkg/dashboard/resourcedata/resourcedata.go b/internal/pkg/dashboard/resourcedata/resourcedata.go
index 766fec6d25f..7683c42c5c4 100644
--- a/internal/pkg/dashboard/resourcedata/resourcedata.go
+++ b/internal/pkg/dashboard/resourcedata/resourcedata.go
@@ -152,7 +152,7 @@ func (source *Source) runResourceWatch(ctx context.Context, node string) error {
switch event.Type {
case state.Errored:
return fmt.Errorf("watch failed: %w", event.Error)
- case state.Bootstrapped:
+ case state.Bootstrapped, state.Noop:
// ignored
case state.Created, state.Updated:
if !channel.SendWithContext(ctx, source.ch, Data{
diff --git a/pkg/cluster/check/events.go b/pkg/cluster/check/events.go
index d713de1aefb..740630ae91b 100644
--- a/pkg/cluster/check/events.go
+++ b/pkg/cluster/check/events.go
@@ -79,7 +79,7 @@ func AllNodesBootedAssertion(ctx context.Context, cluster ClusterInfo) error {
}
nodeStages[ev.node] = machineStatus.TypedSpec().Stage
- case state.Destroyed, state.Bootstrapped:
+ case state.Destroyed, state.Bootstrapped, state.Noop:
// nothing
case state.Errored:
return fmt.Errorf("error watching machine %s status: %w", ev.node, ev.event.Error)
diff --git a/pkg/machinery/api/resource/definitions/network/network.pb.go b/pkg/machinery/api/resource/definitions/network/network.pb.go
index cda3b3d3502..fef6da57b2f 100644
--- a/pkg/machinery/api/resource/definitions/network/network.pb.go
+++ b/pkg/machinery/api/resource/definitions/network/network.pb.go
@@ -819,6 +819,418 @@ func (x *DNSResolveCacheSpec) GetStatus() string {
return ""
}
+// EthernetRingsSpec describes config of Ethernet rings.
+type EthernetRingsSpec struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Rx uint32 `protobuf:"varint,1,opt,name=rx,proto3" json:"rx,omitempty"`
+ RxMini uint32 `protobuf:"varint,2,opt,name=rx_mini,json=rxMini,proto3" json:"rx_mini,omitempty"`
+ RxJumbo uint32 `protobuf:"varint,3,opt,name=rx_jumbo,json=rxJumbo,proto3" json:"rx_jumbo,omitempty"`
+ Tx uint32 `protobuf:"varint,4,opt,name=tx,proto3" json:"tx,omitempty"`
+ RxBufLen uint32 `protobuf:"varint,5,opt,name=rx_buf_len,json=rxBufLen,proto3" json:"rx_buf_len,omitempty"`
+ CqeSize uint32 `protobuf:"varint,6,opt,name=cqe_size,json=cqeSize,proto3" json:"cqe_size,omitempty"`
+ TxPush bool `protobuf:"varint,7,opt,name=tx_push,json=txPush,proto3" json:"tx_push,omitempty"`
+ RxPush bool `protobuf:"varint,8,opt,name=rx_push,json=rxPush,proto3" json:"rx_push,omitempty"`
+ TxPushBufLen uint32 `protobuf:"varint,9,opt,name=tx_push_buf_len,json=txPushBufLen,proto3" json:"tx_push_buf_len,omitempty"`
+ TcpDataSplit bool `protobuf:"varint,10,opt,name=tcp_data_split,json=tcpDataSplit,proto3" json:"tcp_data_split,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *EthernetRingsSpec) Reset() {
+ *x = EthernetRingsSpec{}
+ mi := &file_resource_definitions_network_network_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *EthernetRingsSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EthernetRingsSpec) ProtoMessage() {}
+
+func (x *EthernetRingsSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_resource_definitions_network_network_proto_msgTypes[10]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EthernetRingsSpec.ProtoReflect.Descriptor instead.
+func (*EthernetRingsSpec) Descriptor() ([]byte, []int) {
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *EthernetRingsSpec) GetRx() uint32 {
+ if x != nil {
+ return x.Rx
+ }
+ return 0
+}
+
+func (x *EthernetRingsSpec) GetRxMini() uint32 {
+ if x != nil {
+ return x.RxMini
+ }
+ return 0
+}
+
+func (x *EthernetRingsSpec) GetRxJumbo() uint32 {
+ if x != nil {
+ return x.RxJumbo
+ }
+ return 0
+}
+
+func (x *EthernetRingsSpec) GetTx() uint32 {
+ if x != nil {
+ return x.Tx
+ }
+ return 0
+}
+
+func (x *EthernetRingsSpec) GetRxBufLen() uint32 {
+ if x != nil {
+ return x.RxBufLen
+ }
+ return 0
+}
+
+func (x *EthernetRingsSpec) GetCqeSize() uint32 {
+ if x != nil {
+ return x.CqeSize
+ }
+ return 0
+}
+
+func (x *EthernetRingsSpec) GetTxPush() bool {
+ if x != nil {
+ return x.TxPush
+ }
+ return false
+}
+
+func (x *EthernetRingsSpec) GetRxPush() bool {
+ if x != nil {
+ return x.RxPush
+ }
+ return false
+}
+
+func (x *EthernetRingsSpec) GetTxPushBufLen() uint32 {
+ if x != nil {
+ return x.TxPushBufLen
+ }
+ return 0
+}
+
+func (x *EthernetRingsSpec) GetTcpDataSplit() bool {
+ if x != nil {
+ return x.TcpDataSplit
+ }
+ return false
+}
+
+// EthernetRingsStatus describes status of Ethernet rings.
+type EthernetRingsStatus struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RxMax uint32 `protobuf:"varint,1,opt,name=rx_max,json=rxMax,proto3" json:"rx_max,omitempty"`
+ RxMiniMax uint32 `protobuf:"varint,2,opt,name=rx_mini_max,json=rxMiniMax,proto3" json:"rx_mini_max,omitempty"`
+ RxJumboMax uint32 `protobuf:"varint,3,opt,name=rx_jumbo_max,json=rxJumboMax,proto3" json:"rx_jumbo_max,omitempty"`
+ TxMax uint32 `protobuf:"varint,4,opt,name=tx_max,json=txMax,proto3" json:"tx_max,omitempty"`
+ TxPushBufLenMax uint32 `protobuf:"varint,5,opt,name=tx_push_buf_len_max,json=txPushBufLenMax,proto3" json:"tx_push_buf_len_max,omitempty"`
+ Rx uint32 `protobuf:"varint,6,opt,name=rx,proto3" json:"rx,omitempty"`
+ RxMini uint32 `protobuf:"varint,7,opt,name=rx_mini,json=rxMini,proto3" json:"rx_mini,omitempty"`
+ RxJumbo uint32 `protobuf:"varint,8,opt,name=rx_jumbo,json=rxJumbo,proto3" json:"rx_jumbo,omitempty"`
+ Tx uint32 `protobuf:"varint,9,opt,name=tx,proto3" json:"tx,omitempty"`
+ RxBufLen uint32 `protobuf:"varint,10,opt,name=rx_buf_len,json=rxBufLen,proto3" json:"rx_buf_len,omitempty"`
+ CqeSize uint32 `protobuf:"varint,11,opt,name=cqe_size,json=cqeSize,proto3" json:"cqe_size,omitempty"`
+ TxPush bool `protobuf:"varint,12,opt,name=tx_push,json=txPush,proto3" json:"tx_push,omitempty"`
+ RxPush bool `protobuf:"varint,13,opt,name=rx_push,json=rxPush,proto3" json:"rx_push,omitempty"`
+ TxPushBufLen uint32 `protobuf:"varint,14,opt,name=tx_push_buf_len,json=txPushBufLen,proto3" json:"tx_push_buf_len,omitempty"`
+ TcpDataSplit bool `protobuf:"varint,15,opt,name=tcp_data_split,json=tcpDataSplit,proto3" json:"tcp_data_split,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *EthernetRingsStatus) Reset() {
+ *x = EthernetRingsStatus{}
+ mi := &file_resource_definitions_network_network_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *EthernetRingsStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EthernetRingsStatus) ProtoMessage() {}
+
+func (x *EthernetRingsStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_resource_definitions_network_network_proto_msgTypes[11]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EthernetRingsStatus.ProtoReflect.Descriptor instead.
+func (*EthernetRingsStatus) Descriptor() ([]byte, []int) {
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *EthernetRingsStatus) GetRxMax() uint32 {
+ if x != nil {
+ return x.RxMax
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetRxMiniMax() uint32 {
+ if x != nil {
+ return x.RxMiniMax
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetRxJumboMax() uint32 {
+ if x != nil {
+ return x.RxJumboMax
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetTxMax() uint32 {
+ if x != nil {
+ return x.TxMax
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetTxPushBufLenMax() uint32 {
+ if x != nil {
+ return x.TxPushBufLenMax
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetRx() uint32 {
+ if x != nil {
+ return x.Rx
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetRxMini() uint32 {
+ if x != nil {
+ return x.RxMini
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetRxJumbo() uint32 {
+ if x != nil {
+ return x.RxJumbo
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetTx() uint32 {
+ if x != nil {
+ return x.Tx
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetRxBufLen() uint32 {
+ if x != nil {
+ return x.RxBufLen
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetCqeSize() uint32 {
+ if x != nil {
+ return x.CqeSize
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetTxPush() bool {
+ if x != nil {
+ return x.TxPush
+ }
+ return false
+}
+
+func (x *EthernetRingsStatus) GetRxPush() bool {
+ if x != nil {
+ return x.RxPush
+ }
+ return false
+}
+
+func (x *EthernetRingsStatus) GetTxPushBufLen() uint32 {
+ if x != nil {
+ return x.TxPushBufLen
+ }
+ return 0
+}
+
+func (x *EthernetRingsStatus) GetTcpDataSplit() bool {
+ if x != nil {
+ return x.TcpDataSplit
+ }
+ return false
+}
+
+// EthernetSpecSpec describes config of Ethernet link.
+type EthernetSpecSpec struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Rings *EthernetRingsSpec `protobuf:"bytes,1,opt,name=rings,proto3" json:"rings,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *EthernetSpecSpec) Reset() {
+ *x = EthernetSpecSpec{}
+ mi := &file_resource_definitions_network_network_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *EthernetSpecSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EthernetSpecSpec) ProtoMessage() {}
+
+func (x *EthernetSpecSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_resource_definitions_network_network_proto_msgTypes[12]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EthernetSpecSpec.ProtoReflect.Descriptor instead.
+func (*EthernetSpecSpec) Descriptor() ([]byte, []int) {
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *EthernetSpecSpec) GetRings() *EthernetRingsSpec {
+ if x != nil {
+ return x.Rings
+ }
+ return nil
+}
+
+// EthernetStatusSpec describes status of rendered secrets.
+type EthernetStatusSpec struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ LinkState bool `protobuf:"varint,1,opt,name=link_state,json=linkState,proto3" json:"link_state,omitempty"`
+ SpeedMegabits int64 `protobuf:"varint,2,opt,name=speed_megabits,json=speedMegabits,proto3" json:"speed_megabits,omitempty"`
+ Port enums.NethelpersPort `protobuf:"varint,3,opt,name=port,proto3,enum=talos.resource.definitions.enums.NethelpersPort" json:"port,omitempty"`
+ Duplex enums.NethelpersDuplex `protobuf:"varint,4,opt,name=duplex,proto3,enum=talos.resource.definitions.enums.NethelpersDuplex" json:"duplex,omitempty"`
+ OurModes []string `protobuf:"bytes,5,rep,name=our_modes,json=ourModes,proto3" json:"our_modes,omitempty"`
+ PeerModes []string `protobuf:"bytes,6,rep,name=peer_modes,json=peerModes,proto3" json:"peer_modes,omitempty"`
+ Rings *EthernetRingsStatus `protobuf:"bytes,7,opt,name=rings,proto3" json:"rings,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *EthernetStatusSpec) Reset() {
+ *x = EthernetStatusSpec{}
+ mi := &file_resource_definitions_network_network_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *EthernetStatusSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EthernetStatusSpec) ProtoMessage() {}
+
+func (x *EthernetStatusSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_resource_definitions_network_network_proto_msgTypes[13]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use EthernetStatusSpec.ProtoReflect.Descriptor instead.
+func (*EthernetStatusSpec) Descriptor() ([]byte, []int) {
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *EthernetStatusSpec) GetLinkState() bool {
+ if x != nil {
+ return x.LinkState
+ }
+ return false
+}
+
+func (x *EthernetStatusSpec) GetSpeedMegabits() int64 {
+ if x != nil {
+ return x.SpeedMegabits
+ }
+ return 0
+}
+
+func (x *EthernetStatusSpec) GetPort() enums.NethelpersPort {
+ if x != nil {
+ return x.Port
+ }
+ return enums.NethelpersPort(0)
+}
+
+func (x *EthernetStatusSpec) GetDuplex() enums.NethelpersDuplex {
+ if x != nil {
+ return x.Duplex
+ }
+ return enums.NethelpersDuplex(0)
+}
+
+func (x *EthernetStatusSpec) GetOurModes() []string {
+ if x != nil {
+ return x.OurModes
+ }
+ return nil
+}
+
+func (x *EthernetStatusSpec) GetPeerModes() []string {
+ if x != nil {
+ return x.PeerModes
+ }
+ return nil
+}
+
+func (x *EthernetStatusSpec) GetRings() *EthernetRingsStatus {
+ if x != nil {
+ return x.Rings
+ }
+ return nil
+}
+
// HardwareAddrSpec describes spec for the link.
type HardwareAddrSpec struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -830,7 +1242,7 @@ type HardwareAddrSpec struct {
func (x *HardwareAddrSpec) Reset() {
*x = HardwareAddrSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[10]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -842,7 +1254,7 @@ func (x *HardwareAddrSpec) String() string {
func (*HardwareAddrSpec) ProtoMessage() {}
func (x *HardwareAddrSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[10]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[14]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -855,7 +1267,7 @@ func (x *HardwareAddrSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use HardwareAddrSpec.ProtoReflect.Descriptor instead.
func (*HardwareAddrSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{10}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{14}
}
func (x *HardwareAddrSpec) GetName() string {
@@ -885,7 +1297,7 @@ type HostDNSConfigSpec struct {
func (x *HostDNSConfigSpec) Reset() {
*x = HostDNSConfigSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[11]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -897,7 +1309,7 @@ func (x *HostDNSConfigSpec) String() string {
func (*HostDNSConfigSpec) ProtoMessage() {}
func (x *HostDNSConfigSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[11]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -910,7 +1322,7 @@ func (x *HostDNSConfigSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use HostDNSConfigSpec.ProtoReflect.Descriptor instead.
func (*HostDNSConfigSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{11}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{15}
}
func (x *HostDNSConfigSpec) GetEnabled() bool {
@@ -953,7 +1365,7 @@ type HostnameSpecSpec struct {
func (x *HostnameSpecSpec) Reset() {
*x = HostnameSpecSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[12]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -965,7 +1377,7 @@ func (x *HostnameSpecSpec) String() string {
func (*HostnameSpecSpec) ProtoMessage() {}
func (x *HostnameSpecSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[12]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -978,7 +1390,7 @@ func (x *HostnameSpecSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use HostnameSpecSpec.ProtoReflect.Descriptor instead.
func (*HostnameSpecSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{12}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{16}
}
func (x *HostnameSpecSpec) GetHostname() string {
@@ -1013,7 +1425,7 @@ type HostnameStatusSpec struct {
func (x *HostnameStatusSpec) Reset() {
*x = HostnameStatusSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[13]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1025,7 +1437,7 @@ func (x *HostnameStatusSpec) String() string {
func (*HostnameStatusSpec) ProtoMessage() {}
func (x *HostnameStatusSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[13]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[17]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1038,7 +1450,7 @@ func (x *HostnameStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use HostnameStatusSpec.ProtoReflect.Descriptor instead.
func (*HostnameStatusSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{13}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{17}
}
func (x *HostnameStatusSpec) GetHostname() string {
@@ -1065,7 +1477,7 @@ type LinkRefreshSpec struct {
func (x *LinkRefreshSpec) Reset() {
*x = LinkRefreshSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[14]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1077,7 +1489,7 @@ func (x *LinkRefreshSpec) String() string {
func (*LinkRefreshSpec) ProtoMessage() {}
func (x *LinkRefreshSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[14]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[18]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1090,7 +1502,7 @@ func (x *LinkRefreshSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use LinkRefreshSpec.ProtoReflect.Descriptor instead.
func (*LinkRefreshSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{14}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{18}
}
func (x *LinkRefreshSpec) GetGeneration() int64 {
@@ -1123,7 +1535,7 @@ type LinkSpecSpec struct {
func (x *LinkSpecSpec) Reset() {
*x = LinkSpecSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[15]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1135,7 +1547,7 @@ func (x *LinkSpecSpec) String() string {
func (*LinkSpecSpec) ProtoMessage() {}
func (x *LinkSpecSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[15]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[19]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1148,7 +1560,7 @@ func (x *LinkSpecSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use LinkSpecSpec.ProtoReflect.Descriptor instead.
func (*LinkSpecSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{15}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{19}
}
func (x *LinkSpecSpec) GetName() string {
@@ -1290,7 +1702,7 @@ type LinkStatusSpec struct {
func (x *LinkStatusSpec) Reset() {
*x = LinkStatusSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[16]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1302,7 +1714,7 @@ func (x *LinkStatusSpec) String() string {
func (*LinkStatusSpec) ProtoMessage() {}
func (x *LinkStatusSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[16]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[20]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1315,7 +1727,7 @@ func (x *LinkStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use LinkStatusSpec.ProtoReflect.Descriptor instead.
func (*LinkStatusSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{16}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{20}
}
func (x *LinkStatusSpec) GetIndex() uint32 {
@@ -1554,7 +1966,7 @@ type NfTablesAddressMatch struct {
func (x *NfTablesAddressMatch) Reset() {
*x = NfTablesAddressMatch{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[17]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1566,7 +1978,7 @@ func (x *NfTablesAddressMatch) String() string {
func (*NfTablesAddressMatch) ProtoMessage() {}
func (x *NfTablesAddressMatch) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[17]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[21]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1579,7 +1991,7 @@ func (x *NfTablesAddressMatch) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesAddressMatch.ProtoReflect.Descriptor instead.
func (*NfTablesAddressMatch) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{17}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{21}
}
func (x *NfTablesAddressMatch) GetIncludeSubnets() []*common.NetIPPrefix {
@@ -1617,7 +2029,7 @@ type NfTablesChainSpec struct {
func (x *NfTablesChainSpec) Reset() {
*x = NfTablesChainSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[18]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1629,7 +2041,7 @@ func (x *NfTablesChainSpec) String() string {
func (*NfTablesChainSpec) ProtoMessage() {}
func (x *NfTablesChainSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[18]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[22]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1642,7 +2054,7 @@ func (x *NfTablesChainSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesChainSpec.ProtoReflect.Descriptor instead.
func (*NfTablesChainSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{18}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{22}
}
func (x *NfTablesChainSpec) GetType() string {
@@ -1694,7 +2106,7 @@ type NfTablesClampMSS struct {
func (x *NfTablesClampMSS) Reset() {
*x = NfTablesClampMSS{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[19]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1706,7 +2118,7 @@ func (x *NfTablesClampMSS) String() string {
func (*NfTablesClampMSS) ProtoMessage() {}
func (x *NfTablesClampMSS) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[19]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[23]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1719,7 +2131,7 @@ func (x *NfTablesClampMSS) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesClampMSS.ProtoReflect.Descriptor instead.
func (*NfTablesClampMSS) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{19}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{23}
}
func (x *NfTablesClampMSS) GetMtu() uint32 {
@@ -1739,7 +2151,7 @@ type NfTablesConntrackStateMatch struct {
func (x *NfTablesConntrackStateMatch) Reset() {
*x = NfTablesConntrackStateMatch{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[20]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1751,7 +2163,7 @@ func (x *NfTablesConntrackStateMatch) String() string {
func (*NfTablesConntrackStateMatch) ProtoMessage() {}
func (x *NfTablesConntrackStateMatch) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[20]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[24]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1764,7 +2176,7 @@ func (x *NfTablesConntrackStateMatch) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesConntrackStateMatch.ProtoReflect.Descriptor instead.
func (*NfTablesConntrackStateMatch) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{20}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{24}
}
func (x *NfTablesConntrackStateMatch) GetStates() []enums.NethelpersConntrackState {
@@ -1785,7 +2197,7 @@ type NfTablesIfNameMatch struct {
func (x *NfTablesIfNameMatch) Reset() {
*x = NfTablesIfNameMatch{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[21]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1797,7 +2209,7 @@ func (x *NfTablesIfNameMatch) String() string {
func (*NfTablesIfNameMatch) ProtoMessage() {}
func (x *NfTablesIfNameMatch) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[21]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[25]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1810,7 +2222,7 @@ func (x *NfTablesIfNameMatch) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesIfNameMatch.ProtoReflect.Descriptor instead.
func (*NfTablesIfNameMatch) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{21}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{25}
}
func (x *NfTablesIfNameMatch) GetOperator() enums.NethelpersMatchOperator {
@@ -1839,7 +2251,7 @@ type NfTablesLayer4Match struct {
func (x *NfTablesLayer4Match) Reset() {
*x = NfTablesLayer4Match{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[22]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1851,7 +2263,7 @@ func (x *NfTablesLayer4Match) String() string {
func (*NfTablesLayer4Match) ProtoMessage() {}
func (x *NfTablesLayer4Match) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[22]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[26]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1864,7 +2276,7 @@ func (x *NfTablesLayer4Match) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesLayer4Match.ProtoReflect.Descriptor instead.
func (*NfTablesLayer4Match) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{22}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{26}
}
func (x *NfTablesLayer4Match) GetProtocol() enums.NethelpersProtocol {
@@ -1898,7 +2310,7 @@ type NfTablesLimitMatch struct {
func (x *NfTablesLimitMatch) Reset() {
*x = NfTablesLimitMatch{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[23]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1910,7 +2322,7 @@ func (x *NfTablesLimitMatch) String() string {
func (*NfTablesLimitMatch) ProtoMessage() {}
func (x *NfTablesLimitMatch) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[23]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[27]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1923,7 +2335,7 @@ func (x *NfTablesLimitMatch) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesLimitMatch.ProtoReflect.Descriptor instead.
func (*NfTablesLimitMatch) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{23}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{27}
}
func (x *NfTablesLimitMatch) GetPacketRatePerSecond() uint64 {
@@ -1951,7 +2363,7 @@ type NfTablesMark struct {
func (x *NfTablesMark) Reset() {
*x = NfTablesMark{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[24]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1963,7 +2375,7 @@ func (x *NfTablesMark) String() string {
func (*NfTablesMark) ProtoMessage() {}
func (x *NfTablesMark) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[24]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[28]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1976,7 +2388,7 @@ func (x *NfTablesMark) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesMark.ProtoReflect.Descriptor instead.
func (*NfTablesMark) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{24}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{28}
}
func (x *NfTablesMark) GetMask() uint32 {
@@ -2010,7 +2422,7 @@ type NfTablesPortMatch struct {
func (x *NfTablesPortMatch) Reset() {
*x = NfTablesPortMatch{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[25]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2022,7 +2434,7 @@ func (x *NfTablesPortMatch) String() string {
func (*NfTablesPortMatch) ProtoMessage() {}
func (x *NfTablesPortMatch) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[25]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[29]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2035,7 +2447,7 @@ func (x *NfTablesPortMatch) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesPortMatch.ProtoReflect.Descriptor instead.
func (*NfTablesPortMatch) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{25}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{29}
}
func (x *NfTablesPortMatch) GetRanges() []*PortRange {
@@ -2066,7 +2478,7 @@ type NfTablesRule struct {
func (x *NfTablesRule) Reset() {
*x = NfTablesRule{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[26]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2078,7 +2490,7 @@ func (x *NfTablesRule) String() string {
func (*NfTablesRule) ProtoMessage() {}
func (x *NfTablesRule) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[26]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[30]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2091,7 +2503,7 @@ func (x *NfTablesRule) ProtoReflect() protoreflect.Message {
// Deprecated: Use NfTablesRule.ProtoReflect.Descriptor instead.
func (*NfTablesRule) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{26}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{30}
}
func (x *NfTablesRule) GetMatchOIfName() *NfTablesIfNameMatch {
@@ -2189,7 +2601,7 @@ type NodeAddressFilterSpec struct {
func (x *NodeAddressFilterSpec) Reset() {
*x = NodeAddressFilterSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[27]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2201,7 +2613,7 @@ func (x *NodeAddressFilterSpec) String() string {
func (*NodeAddressFilterSpec) ProtoMessage() {}
func (x *NodeAddressFilterSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[27]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[31]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2214,7 +2626,7 @@ func (x *NodeAddressFilterSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeAddressFilterSpec.ProtoReflect.Descriptor instead.
func (*NodeAddressFilterSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{27}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{31}
}
func (x *NodeAddressFilterSpec) GetIncludeSubnets() []*common.NetIPPrefix {
@@ -2241,7 +2653,7 @@ type NodeAddressSortAlgorithmSpec struct {
func (x *NodeAddressSortAlgorithmSpec) Reset() {
*x = NodeAddressSortAlgorithmSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[28]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2253,7 +2665,7 @@ func (x *NodeAddressSortAlgorithmSpec) String() string {
func (*NodeAddressSortAlgorithmSpec) ProtoMessage() {}
func (x *NodeAddressSortAlgorithmSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[28]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[32]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2266,7 +2678,7 @@ func (x *NodeAddressSortAlgorithmSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeAddressSortAlgorithmSpec.ProtoReflect.Descriptor instead.
func (*NodeAddressSortAlgorithmSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{28}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{32}
}
func (x *NodeAddressSortAlgorithmSpec) GetAlgorithm() enums.NethelpersAddressSortAlgorithm {
@@ -2287,7 +2699,7 @@ type NodeAddressSpec struct {
func (x *NodeAddressSpec) Reset() {
*x = NodeAddressSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[29]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2299,7 +2711,7 @@ func (x *NodeAddressSpec) String() string {
func (*NodeAddressSpec) ProtoMessage() {}
func (x *NodeAddressSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[29]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[33]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2312,7 +2724,7 @@ func (x *NodeAddressSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use NodeAddressSpec.ProtoReflect.Descriptor instead.
func (*NodeAddressSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{29}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{33}
}
func (x *NodeAddressSpec) GetAddresses() []*common.NetIPPrefix {
@@ -2345,7 +2757,7 @@ type OperatorSpecSpec struct {
func (x *OperatorSpecSpec) Reset() {
*x = OperatorSpecSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[30]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2357,7 +2769,7 @@ func (x *OperatorSpecSpec) String() string {
func (*OperatorSpecSpec) ProtoMessage() {}
func (x *OperatorSpecSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[30]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[34]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2370,7 +2782,7 @@ func (x *OperatorSpecSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use OperatorSpecSpec.ProtoReflect.Descriptor instead.
func (*OperatorSpecSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{30}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{34}
}
func (x *OperatorSpecSpec) GetOperator() enums.NetworkOperator {
@@ -2435,7 +2847,7 @@ type PortRange struct {
func (x *PortRange) Reset() {
*x = PortRange{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[31]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2447,7 +2859,7 @@ func (x *PortRange) String() string {
func (*PortRange) ProtoMessage() {}
func (x *PortRange) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[31]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[35]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2460,7 +2872,7 @@ func (x *PortRange) ProtoReflect() protoreflect.Message {
// Deprecated: Use PortRange.ProtoReflect.Descriptor instead.
func (*PortRange) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{31}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{35}
}
func (x *PortRange) GetLo() uint32 {
@@ -2490,7 +2902,7 @@ type ProbeSpecSpec struct {
func (x *ProbeSpecSpec) Reset() {
*x = ProbeSpecSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[32]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2502,7 +2914,7 @@ func (x *ProbeSpecSpec) String() string {
func (*ProbeSpecSpec) ProtoMessage() {}
func (x *ProbeSpecSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[32]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[36]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2515,7 +2927,7 @@ func (x *ProbeSpecSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProbeSpecSpec.ProtoReflect.Descriptor instead.
func (*ProbeSpecSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{32}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{36}
}
func (x *ProbeSpecSpec) GetInterval() *durationpb.Duration {
@@ -2557,7 +2969,7 @@ type ProbeStatusSpec struct {
func (x *ProbeStatusSpec) Reset() {
*x = ProbeStatusSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[33]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2569,7 +2981,7 @@ func (x *ProbeStatusSpec) String() string {
func (*ProbeStatusSpec) ProtoMessage() {}
func (x *ProbeStatusSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[33]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[37]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2582,7 +2994,7 @@ func (x *ProbeStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProbeStatusSpec.ProtoReflect.Descriptor instead.
func (*ProbeStatusSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{33}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{37}
}
func (x *ProbeStatusSpec) GetSuccess() bool {
@@ -2611,7 +3023,7 @@ type ResolverSpecSpec struct {
func (x *ResolverSpecSpec) Reset() {
*x = ResolverSpecSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[34]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2623,7 +3035,7 @@ func (x *ResolverSpecSpec) String() string {
func (*ResolverSpecSpec) ProtoMessage() {}
func (x *ResolverSpecSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[34]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[38]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2636,7 +3048,7 @@ func (x *ResolverSpecSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResolverSpecSpec.ProtoReflect.Descriptor instead.
func (*ResolverSpecSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{34}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{38}
}
func (x *ResolverSpecSpec) GetDnsServers() []*common.NetIP {
@@ -2671,7 +3083,7 @@ type ResolverStatusSpec struct {
func (x *ResolverStatusSpec) Reset() {
*x = ResolverStatusSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[35]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2683,7 +3095,7 @@ func (x *ResolverStatusSpec) String() string {
func (*ResolverStatusSpec) ProtoMessage() {}
func (x *ResolverStatusSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[35]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[39]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2696,7 +3108,7 @@ func (x *ResolverStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResolverStatusSpec.ProtoReflect.Descriptor instead.
func (*ResolverStatusSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{35}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{39}
}
func (x *ResolverStatusSpec) GetDnsServers() []*common.NetIP {
@@ -2735,7 +3147,7 @@ type RouteSpecSpec struct {
func (x *RouteSpecSpec) Reset() {
*x = RouteSpecSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[36]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[40]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2747,7 +3159,7 @@ func (x *RouteSpecSpec) String() string {
func (*RouteSpecSpec) ProtoMessage() {}
func (x *RouteSpecSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[36]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[40]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2760,7 +3172,7 @@ func (x *RouteSpecSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use RouteSpecSpec.ProtoReflect.Descriptor instead.
func (*RouteSpecSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{36}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{40}
}
func (x *RouteSpecSpec) GetFamily() enums.NethelpersFamily {
@@ -2876,7 +3288,7 @@ type RouteStatusSpec struct {
func (x *RouteStatusSpec) Reset() {
*x = RouteStatusSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[37]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[41]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2888,7 +3300,7 @@ func (x *RouteStatusSpec) String() string {
func (*RouteStatusSpec) ProtoMessage() {}
func (x *RouteStatusSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[37]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[41]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2901,7 +3313,7 @@ func (x *RouteStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use RouteStatusSpec.ProtoReflect.Descriptor instead.
func (*RouteStatusSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{37}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{41}
}
func (x *RouteStatusSpec) GetFamily() enums.NethelpersFamily {
@@ -3005,7 +3417,7 @@ type STPSpec struct {
func (x *STPSpec) Reset() {
*x = STPSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[38]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[42]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3017,7 +3429,7 @@ func (x *STPSpec) String() string {
func (*STPSpec) ProtoMessage() {}
func (x *STPSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[38]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[42]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3030,7 +3442,7 @@ func (x *STPSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use STPSpec.ProtoReflect.Descriptor instead.
func (*STPSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{38}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{42}
}
func (x *STPSpec) GetEnabled() bool {
@@ -3053,7 +3465,7 @@ type StatusSpec struct {
func (x *StatusSpec) Reset() {
*x = StatusSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[39]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[43]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3065,7 +3477,7 @@ func (x *StatusSpec) String() string {
func (*StatusSpec) ProtoMessage() {}
func (x *StatusSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[39]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[43]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3078,7 +3490,7 @@ func (x *StatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use StatusSpec.ProtoReflect.Descriptor instead.
func (*StatusSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{39}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{43}
}
func (x *StatusSpec) GetAddressReady() bool {
@@ -3120,7 +3532,7 @@ type TCPProbeSpec struct {
func (x *TCPProbeSpec) Reset() {
*x = TCPProbeSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[40]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[44]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3132,7 +3544,7 @@ func (x *TCPProbeSpec) String() string {
func (*TCPProbeSpec) ProtoMessage() {}
func (x *TCPProbeSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[40]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[44]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3145,7 +3557,7 @@ func (x *TCPProbeSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use TCPProbeSpec.ProtoReflect.Descriptor instead.
func (*TCPProbeSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{40}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{44}
}
func (x *TCPProbeSpec) GetEndpoint() string {
@@ -3173,7 +3585,7 @@ type TimeServerSpecSpec struct {
func (x *TimeServerSpecSpec) Reset() {
*x = TimeServerSpecSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[41]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[45]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3185,7 +3597,7 @@ func (x *TimeServerSpecSpec) String() string {
func (*TimeServerSpecSpec) ProtoMessage() {}
func (x *TimeServerSpecSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[41]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[45]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3198,7 +3610,7 @@ func (x *TimeServerSpecSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use TimeServerSpecSpec.ProtoReflect.Descriptor instead.
func (*TimeServerSpecSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{41}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{45}
}
func (x *TimeServerSpecSpec) GetNtpServers() []string {
@@ -3225,7 +3637,7 @@ type TimeServerStatusSpec struct {
func (x *TimeServerStatusSpec) Reset() {
*x = TimeServerStatusSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[42]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[46]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3237,7 +3649,7 @@ func (x *TimeServerStatusSpec) String() string {
func (*TimeServerStatusSpec) ProtoMessage() {}
func (x *TimeServerStatusSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[42]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[46]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3250,7 +3662,7 @@ func (x *TimeServerStatusSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use TimeServerStatusSpec.ProtoReflect.Descriptor instead.
func (*TimeServerStatusSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{42}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{46}
}
func (x *TimeServerStatusSpec) GetNtpServers() []string {
@@ -3272,7 +3684,7 @@ type VIPEquinixMetalSpec struct {
func (x *VIPEquinixMetalSpec) Reset() {
*x = VIPEquinixMetalSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[43]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3284,7 +3696,7 @@ func (x *VIPEquinixMetalSpec) String() string {
func (*VIPEquinixMetalSpec) ProtoMessage() {}
func (x *VIPEquinixMetalSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[43]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[47]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3297,7 +3709,7 @@ func (x *VIPEquinixMetalSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use VIPEquinixMetalSpec.ProtoReflect.Descriptor instead.
func (*VIPEquinixMetalSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{43}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{47}
}
func (x *VIPEquinixMetalSpec) GetProjectId() string {
@@ -3333,7 +3745,7 @@ type VIPHCloudSpec struct {
func (x *VIPHCloudSpec) Reset() {
*x = VIPHCloudSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[44]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[48]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3345,7 +3757,7 @@ func (x *VIPHCloudSpec) String() string {
func (*VIPHCloudSpec) ProtoMessage() {}
func (x *VIPHCloudSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[44]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[48]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3358,7 +3770,7 @@ func (x *VIPHCloudSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use VIPHCloudSpec.ProtoReflect.Descriptor instead.
func (*VIPHCloudSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{44}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{48}
}
func (x *VIPHCloudSpec) GetDeviceId() int64 {
@@ -3395,7 +3807,7 @@ type VIPOperatorSpec struct {
func (x *VIPOperatorSpec) Reset() {
*x = VIPOperatorSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[45]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3407,7 +3819,7 @@ func (x *VIPOperatorSpec) String() string {
func (*VIPOperatorSpec) ProtoMessage() {}
func (x *VIPOperatorSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[45]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[49]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3420,7 +3832,7 @@ func (x *VIPOperatorSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use VIPOperatorSpec.ProtoReflect.Descriptor instead.
func (*VIPOperatorSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{45}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{49}
}
func (x *VIPOperatorSpec) GetIp() *common.NetIP {
@@ -3462,7 +3874,7 @@ type VLANSpec struct {
func (x *VLANSpec) Reset() {
*x = VLANSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[46]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[50]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3474,7 +3886,7 @@ func (x *VLANSpec) String() string {
func (*VLANSpec) ProtoMessage() {}
func (x *VLANSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[46]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[50]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3487,7 +3899,7 @@ func (x *VLANSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use VLANSpec.ProtoReflect.Descriptor instead.
func (*VLANSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{46}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{50}
}
func (x *VLANSpec) GetVid() uint32 {
@@ -3518,7 +3930,7 @@ type WireguardPeer struct {
func (x *WireguardPeer) Reset() {
*x = WireguardPeer{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[47]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[51]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3530,7 +3942,7 @@ func (x *WireguardPeer) String() string {
func (*WireguardPeer) ProtoMessage() {}
func (x *WireguardPeer) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[47]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[51]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3543,7 +3955,7 @@ func (x *WireguardPeer) ProtoReflect() protoreflect.Message {
// Deprecated: Use WireguardPeer.ProtoReflect.Descriptor instead.
func (*WireguardPeer) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{47}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{51}
}
func (x *WireguardPeer) GetPublicKey() string {
@@ -3595,7 +4007,7 @@ type WireguardSpec struct {
func (x *WireguardSpec) Reset() {
*x = WireguardSpec{}
- mi := &file_resource_definitions_network_network_proto_msgTypes[48]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[52]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3607,7 +4019,7 @@ func (x *WireguardSpec) String() string {
func (*WireguardSpec) ProtoMessage() {}
func (x *WireguardSpec) ProtoReflect() protoreflect.Message {
- mi := &file_resource_definitions_network_network_proto_msgTypes[48]
+ mi := &file_resource_definitions_network_network_proto_msgTypes[52]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3620,7 +4032,7 @@ func (x *WireguardSpec) ProtoReflect() protoreflect.Message {
// Deprecated: Use WireguardSpec.ProtoReflect.Descriptor instead.
func (*WireguardSpec) Descriptor() ([]byte, []int) {
- return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{48}
+ return file_resource_definitions_network_network_proto_rawDescGZIP(), []int{52}
}
func (x *WireguardSpec) GetPrivateKey() string {
@@ -3847,637 +4259,713 @@ var file_resource_definitions_network_network_proto_rawDesc = []byte{
0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2d,
0x0a, 0x13, 0x44, 0x4e, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x43, 0x61, 0x63, 0x68,
0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4b, 0x0a,
- 0x10, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x53, 0x70, 0x65,
- 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72,
- 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x68, 0x61,
- 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x22, 0xe5, 0x01, 0x0a, 0x11, 0x48,
- 0x6f, 0x73, 0x74, 0x44, 0x4e, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63,
- 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x10, 0x6c, 0x69,
- 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65,
- 0x74, 0x49, 0x50, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x41,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x18, 0x73, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x61, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69,
- 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x44, 0x6e, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
- 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x62,
- 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12,
- 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x61, 0x6d,
- 0x65, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x10, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53,
- 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e,
- 0x61, 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x61,
- 0x79, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f,
- 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52,
- 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x50, 0x0a, 0x12,
- 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70,
- 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e,
- 0x0a, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x31,
- 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x70, 0x65,
- 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x22, 0x9b, 0x06, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70,
- 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61,
- 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c,
- 0x12, 0x0e, 0x0a, 0x02, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x75, 0x70,
- 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d,
- 0x74, 0x75, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x9f, 0x02,
+ 0x0a, 0x11, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x52, 0x69, 0x6e, 0x67, 0x73, 0x53,
+ 0x70, 0x65, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x72, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
+ 0x02, 0x72, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x78, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x78, 0x4d, 0x69, 0x6e, 0x69, 0x12, 0x19, 0x0a, 0x08,
+ 0x72, 0x78, 0x5f, 0x6a, 0x75, 0x6d, 0x62, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07,
+ 0x72, 0x78, 0x4a, 0x75, 0x6d, 0x62, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0d, 0x52, 0x02, 0x74, 0x78, 0x12, 0x1c, 0x0a, 0x0a, 0x72, 0x78, 0x5f, 0x62, 0x75,
+ 0x66, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x72, 0x78, 0x42,
+ 0x75, 0x66, 0x4c, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x71, 0x65, 0x5f, 0x73, 0x69, 0x7a,
+ 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x71, 0x65, 0x53, 0x69, 0x7a, 0x65,
+ 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x06, 0x74, 0x78, 0x50, 0x75, 0x73, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x78, 0x5f,
+ 0x70, 0x75, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x78, 0x50, 0x75,
+ 0x73, 0x68, 0x12, 0x25, 0x0a, 0x0f, 0x74, 0x78, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x62, 0x75,
+ 0x66, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x78, 0x50,
+ 0x75, 0x73, 0x68, 0x42, 0x75, 0x66, 0x4c, 0x65, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x63, 0x70,
+ 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0c, 0x74, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x22,
+ 0xbf, 0x03, 0x0a, 0x13, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x52, 0x69, 0x6e, 0x67,
+ 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x72, 0x78, 0x5f, 0x6d, 0x61,
+ 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x78, 0x4d, 0x61, 0x78, 0x12, 0x1e,
+ 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x78, 0x4d, 0x69, 0x6e, 0x69, 0x4d, 0x61, 0x78, 0x12, 0x20,
+ 0x0a, 0x0c, 0x72, 0x78, 0x5f, 0x6a, 0x75, 0x6d, 0x62, 0x6f, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x78, 0x4a, 0x75, 0x6d, 0x62, 0x6f, 0x4d, 0x61, 0x78,
+ 0x12, 0x15, 0x0a, 0x06, 0x74, 0x78, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
+ 0x52, 0x05, 0x74, 0x78, 0x4d, 0x61, 0x78, 0x12, 0x2c, 0x0a, 0x13, 0x74, 0x78, 0x5f, 0x70, 0x75,
+ 0x73, 0x68, 0x5f, 0x62, 0x75, 0x66, 0x5f, 0x6c, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x78, 0x50, 0x75, 0x73, 0x68, 0x42, 0x75, 0x66, 0x4c,
+ 0x65, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x72, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x0d, 0x52, 0x02, 0x72, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x78, 0x5f, 0x6d, 0x69, 0x6e, 0x69,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x78, 0x4d, 0x69, 0x6e, 0x69, 0x12, 0x19,
+ 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x6a, 0x75, 0x6d, 0x62, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d,
+ 0x52, 0x07, 0x72, 0x78, 0x4a, 0x75, 0x6d, 0x62, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x74, 0x78, 0x12, 0x1c, 0x0a, 0x0a, 0x72, 0x78, 0x5f,
+ 0x62, 0x75, 0x66, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x72,
+ 0x78, 0x42, 0x75, 0x66, 0x4c, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x71, 0x65, 0x5f, 0x73,
+ 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x71, 0x65, 0x53, 0x69,
+ 0x7a, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x0c, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x06, 0x74, 0x78, 0x50, 0x75, 0x73, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x72,
+ 0x78, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x78,
+ 0x50, 0x75, 0x73, 0x68, 0x12, 0x25, 0x0a, 0x0f, 0x74, 0x78, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x5f,
+ 0x62, 0x75, 0x66, 0x5f, 0x6c, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74,
+ 0x78, 0x50, 0x75, 0x73, 0x68, 0x42, 0x75, 0x66, 0x4c, 0x65, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x74,
+ 0x63, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x18, 0x0f, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0c, 0x74, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x53, 0x70, 0x6c, 0x69,
+ 0x74, 0x22, 0x5f, 0x0a, 0x10, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x70, 0x65,
+ 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4b, 0x0a, 0x05, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65,
- 0x72, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d,
- 0x65, 0x12, 0x4c, 0x0a, 0x0a, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x18,
- 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x6f, 0x6e, 0x64, 0x53,
- 0x6c, 0x61, 0x76, 0x65, 0x52, 0x09, 0x62, 0x6f, 0x6e, 0x64, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x12,
- 0x52, 0x0a, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65,
+ 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e,
+ 0x65, 0x74, 0x52, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x72, 0x69, 0x6e,
+ 0x67, 0x73, 0x22, 0xf7, 0x02, 0x0a, 0x12, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x6e,
+ 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6c,
+ 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x70, 0x65, 0x65,
+ 0x64, 0x5f, 0x6d, 0x65, 0x67, 0x61, 0x62, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x0d, 0x73, 0x70, 0x65, 0x65, 0x64, 0x4d, 0x65, 0x67, 0x61, 0x62, 0x69, 0x74, 0x73, 0x12,
+ 0x44, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e,
+ 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73,
+ 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x52,
+ 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x64, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67,
- 0x65, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x0b, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x6c,
- 0x61, 0x76, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x56, 0x4c, 0x41, 0x4e, 0x53, 0x70, 0x65, 0x63, 0x52,
- 0x04, 0x76, 0x6c, 0x61, 0x6e, 0x12, 0x53, 0x0a, 0x0b, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x6d, 0x61,
- 0x73, 0x74, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x61, 0x6c,
- 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69,
- 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,
- 0x42, 0x6f, 0x6e, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a,
- 0x62, 0x6f, 0x6e, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0d, 0x62, 0x72,
- 0x69, 0x64, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x61, 0x73,
- 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d,
- 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61,
- 0x72, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73,
- 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x57, 0x69,
- 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x77, 0x69, 0x72,
- 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74,
+ 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70,
+ 0x65, 0x72, 0x73, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x06, 0x64, 0x75, 0x70, 0x6c, 0x65,
+ 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x75, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x75, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03,
+ 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x4d, 0x0a,
+ 0x05, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74,
0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e,
- 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79,
- 0x65, 0x72, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22,
- 0xe1, 0x0a, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70,
- 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c,
- 0x70, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
- 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x64, 0x65,
- 0x78, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
- 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x61, 0x72, 0x64, 0x77,
- 0x61, 0x72, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c,
- 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x25, 0x0a, 0x0e,
- 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x41,
- 0x64, 0x64, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d,
- 0x52, 0x03, 0x6d, 0x74, 0x75, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x64,
- 0x69, 0x73, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65,
- 0x44, 0x69, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
- 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x61, 0x73, 0x74,
- 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x69, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73,
- 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65,
- 0x52, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f,
- 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6c, 0x61, 0x76,
- 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x74,
- 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68,
- 0x12, 0x14, 0x0a, 0x05, 0x70, 0x63, 0x69, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x70, 0x63, 0x69, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72,
- 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x25,
- 0x0a, 0x0e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x56, 0x65,
- 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72,
- 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x12,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12,
- 0x1b, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x13, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07,
- 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
- 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72,
- 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x12, 0x1d,
- 0x0a, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x16, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a,
- 0x0e, 0x73, 0x70, 0x65, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x67, 0x61, 0x62, 0x69, 0x74, 0x73, 0x18,
- 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x70, 0x65, 0x65, 0x64, 0x4d, 0x65, 0x67, 0x61,
- 0x62, 0x69, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73,
- 0x50, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x64, 0x75,
- 0x70, 0x6c, 0x65, 0x78, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x61, 0x6c,
- 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69,
- 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65,
- 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x06,
- 0x64, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x12, 0x40, 0x0a, 0x04, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x1a,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x56, 0x4c, 0x41, 0x4e, 0x53, 0x70,
- 0x65, 0x63, 0x52, 0x04, 0x76, 0x6c, 0x61, 0x6e, 0x12, 0x59, 0x0a, 0x0d, 0x62, 0x72, 0x69, 0x64,
- 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65,
- 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x61, 0x73,
- 0x74, 0x65, 0x72, 0x12, 0x53, 0x0a, 0x0b, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x74,
- 0x65, 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73,
- 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x6f,
- 0x6e, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x62, 0x6f,
- 0x6e, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x69, 0x72, 0x65,
- 0x67, 0x75, 0x61, 0x72, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x61,
- 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66,
- 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x2e, 0x57, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09,
- 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72,
- 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28,
- 0x0c, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72,
- 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6c, 0x74, 0x4e, 0x61,
- 0x6d, 0x65, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73,
- 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0f,
- 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e,
- 0x65, 0x74, 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0f, 0x65, 0x78,
- 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74,
- 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64,
- 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x65,
- 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74,
- 0x22, 0xf6, 0x02, 0x0a, 0x11, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x68, 0x61,
- 0x69, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x04, 0x68, 0x6f,
- 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73,
+ 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+ 0x6b, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x52, 0x69, 0x6e, 0x67, 0x73, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x4b, 0x0a, 0x10,
+ 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65,
+ 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x68, 0x61, 0x72,
+ 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x22, 0xe5, 0x01, 0x0a, 0x11, 0x48, 0x6f,
+ 0x73, 0x74, 0x44, 0x4e, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12,
+ 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x10, 0x6c, 0x69, 0x73,
+ 0x74, 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74,
+ 0x49, 0x50, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x41, 0x64,
+ 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69,
+ 0x63, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72,
+ 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+ 0x65, 0x48, 0x6f, 0x73, 0x74, 0x44, 0x6e, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,
+ 0x30, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65,
+ 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72,
+ 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+ 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x10, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70,
+ 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73,
0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68,
- 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x68,
- 0x61, 0x69, 0x6e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x5d, 0x0a,
- 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x41, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75,
- 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x4e, 0x66, 0x54,
- 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x05,
- 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x61,
- 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66,
- 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72,
- 0x75, 0x6c, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0b,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x50, 0x0a, 0x12, 0x48,
+ 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a,
+ 0x0f, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x22, 0x9b, 0x06, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x12,
+ 0x0e, 0x0a, 0x02, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x75, 0x70, 0x12,
+ 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x74,
+ 0x75, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72,
+ 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65,
+ 0x12, 0x4c, 0x0a, 0x0a, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65,
- 0x72, 0x73, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63,
- 0x74, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x24, 0x0a, 0x10, 0x4e, 0x66, 0x54,
- 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6c, 0x61, 0x6d, 0x70, 0x4d, 0x53, 0x53, 0x12, 0x10, 0x0a,
- 0x03, 0x6d, 0x74, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x22,
- 0x71, 0x0a, 0x1b, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x74,
- 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x52,
- 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3a,
- 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
- 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d,
- 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x6e,
- 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
- 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x13, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x49,
- 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x08, 0x6f, 0x70,
- 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x74,
- 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e,
- 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f,
- 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65,
- 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xb7, 0x02, 0x0a, 0x13, 0x4e,
- 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x34, 0x4d, 0x61, 0x74,
- 0x63, 0x68, 0x12, 0x50, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
+ 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x6f, 0x6e, 0x64, 0x53, 0x6c,
+ 0x61, 0x76, 0x65, 0x52, 0x09, 0x62, 0x6f, 0x6e, 0x64, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x12, 0x52,
+ 0x0a, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x18, 0x09,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65,
- 0x72, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x61, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x50, 0x6f, 0x72,
- 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x6b, 0x0a, 0x16, 0x6d, 0x61, 0x74, 0x63, 0x68,
- 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x72,
- 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e,
- 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54,
- 0x61, 0x62, 0x6c, 0x65, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x14,
- 0x6d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x50, 0x6f, 0x72, 0x74, 0x22, 0x49, 0x0a, 0x12, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73,
- 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x33, 0x0a, 0x16, 0x70, 0x61,
- 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65,
- 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x70, 0x61, 0x63, 0x6b,
- 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x22,
- 0x4a, 0x0a, 0x0c, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x12,
- 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6d,
- 0x61, 0x73, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x78, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
- 0x52, 0x03, 0x78, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5a, 0x0a, 0x11, 0x4e,
- 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68,
- 0x12, 0x45, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x2d, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65,
+ 0x53, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x0b, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x6c, 0x61,
+ 0x76, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x2c, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52,
- 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0xc5, 0x08, 0x0a, 0x0c, 0x4e, 0x66, 0x54, 0x61,
- 0x62, 0x6c, 0x65, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x5e, 0x0a, 0x0f, 0x6d, 0x61, 0x74, 0x63,
- 0x68, 0x5f, 0x6f, 0x5f, 0x69, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x49,
- 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63,
- 0x68, 0x4f, 0x49, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x64,
- 0x69, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x74, 0x61, 0x6c, 0x6f,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x56, 0x4c, 0x41, 0x4e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04,
+ 0x76, 0x6c, 0x61, 0x6e, 0x12, 0x53, 0x0a, 0x0b, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x6d, 0x61, 0x73,
+ 0x74, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x61, 0x6c, 0x6f,
+ 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42,
+ 0x6f, 0x6e, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x62,
+ 0x6f, 0x6e, 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0d, 0x62, 0x72, 0x69,
+ 0x64, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x61, 0x73, 0x74,
+ 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x61,
+ 0x73, 0x74, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72,
+ 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x57, 0x69, 0x72,
+ 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x77, 0x69, 0x72, 0x65,
+ 0x67, 0x75, 0x61, 0x72, 0x64, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61,
+ 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65,
+ 0x72, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22, 0xe1,
+ 0x0a, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
+ 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70,
+ 0x65, 0x72, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78,
+ 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52,
+ 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61,
+ 0x72, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x68,
+ 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x62,
+ 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x41, 0x64,
+ 0x64, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52,
+ 0x03, 0x6d, 0x74, 0x75, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x64, 0x69,
+ 0x73, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x44,
+ 0x69, 0x73, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x61, 0x73, 0x74, 0x65,
+ 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x69, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x3c, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65,
+ 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x4f,
+ 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52,
+ 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74,
+ 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x6b,
+ 0x69, 0x6e, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6c, 0x61, 0x76, 0x65,
+ 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68,
+ 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12,
+ 0x14, 0x0a, 0x05, 0x70, 0x63, 0x69, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x70, 0x63, 0x69, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18,
+ 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x25, 0x0a,
+ 0x0e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72,
+ 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65,
+ 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
+ 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x12, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b,
+ 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70,
+ 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72,
+ 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x18,
+ 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e,
+ 0x73, 0x70, 0x65, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x67, 0x61, 0x62, 0x69, 0x74, 0x73, 0x18, 0x17,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x70, 0x65, 0x65, 0x64, 0x4d, 0x65, 0x67, 0x61, 0x62,
+ 0x69, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x30, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65,
+ 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x50,
+ 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x64, 0x75, 0x70,
+ 0x6c, 0x65, 0x78, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x61, 0x6c, 0x6f,
0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74,
- 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x56,
- 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x52, 0x07, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x12,
- 0x4f, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
+ 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x06, 0x64,
+ 0x75, 0x70, 0x6c, 0x65, 0x78, 0x12, 0x40, 0x0a, 0x04, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x1a, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65,
- 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x72, 0x6b,
- 0x12, 0x4b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01,
+ 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x56, 0x4c, 0x41, 0x4e, 0x53, 0x70, 0x65,
+ 0x63, 0x52, 0x04, 0x76, 0x6c, 0x61, 0x6e, 0x12, 0x59, 0x0a, 0x0d, 0x62, 0x72, 0x69, 0x64, 0x67,
+ 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34,
+ 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72,
+ 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, 0x61, 0x73, 0x74,
+ 0x65, 0x72, 0x12, 0x53, 0x0a, 0x0b, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65,
+ 0x72, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x42, 0x6f, 0x6e,
+ 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x62, 0x6f, 0x6e,
+ 0x64, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x69, 0x72, 0x65, 0x67,
+ 0x75, 0x61, 0x72, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x61, 0x6c,
+ 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,
+ 0x57, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x77,
+ 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x6d,
+ 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0c,
+ 0x52, 0x0d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12,
+ 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x6c, 0x74, 0x4e, 0x61, 0x6d,
+ 0x65, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x41,
+ 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0f, 0x69,
+ 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65,
+ 0x74, 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75,
+ 0x64, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0f, 0x65, 0x78, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49,
+ 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
+ 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x65, 0x72,
+ 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x22,
+ 0xf6, 0x02, 0x0a, 0x11, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x68, 0x61, 0x69,
+ 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x04, 0x68, 0x6f, 0x6f,
+ 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e,
+ 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65,
+ 0x6c, 0x70, 0x65, 0x72, 0x73, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x68, 0x61,
+ 0x69, 0x6e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x5d, 0x0a, 0x08,
+ 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41,
+ 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d,
+ 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x4e, 0x66, 0x54, 0x61,
+ 0x62, 0x6c, 0x65, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
+ 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x72,
+ 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x61, 0x6c,
+ 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,
+ 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75,
+ 0x6c, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72,
+ 0x73, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74,
+ 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x24, 0x0a, 0x10, 0x4e, 0x66, 0x54, 0x61,
+ 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6c, 0x61, 0x6d, 0x70, 0x4d, 0x53, 0x53, 0x12, 0x10, 0x0a, 0x03,
+ 0x6d, 0x74, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x22, 0x71,
+ 0x0a, 0x1b, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x74, 0x72,
+ 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x52, 0x0a,
+ 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3a, 0x2e,
+ 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73,
+ 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x74,
+ 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65,
+ 0x73, 0x22, 0x95, 0x01, 0x0a, 0x13, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x49, 0x66,
+ 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x55, 0x0a, 0x08, 0x6f, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x74, 0x61,
+ 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e,
+ 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70,
+ 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
+ 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72,
+ 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xb7, 0x02, 0x0a, 0x13, 0x4e, 0x66,
+ 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x34, 0x4d, 0x61, 0x74, 0x63,
+ 0x68, 0x12, 0x50, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72,
+ 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x63, 0x6f, 0x6c, 0x12, 0x61, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35,
+ 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x50, 0x6f, 0x72, 0x74,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x6b, 0x0a, 0x16, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f,
+ 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61,
+ 0x62, 0x6c, 0x65, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x14, 0x6d,
+ 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
+ 0x6f, 0x72, 0x74, 0x22, 0x49, 0x0a, 0x12, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4c,
+ 0x69, 0x6d, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x33, 0x0a, 0x16, 0x70, 0x61, 0x63,
+ 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63,
+ 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x74, 0x52, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x22, 0x4a,
+ 0x0a, 0x0c, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x12,
+ 0x0a, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6d, 0x61,
+ 0x73, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x78, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
+ 0x03, 0x78, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5a, 0x0a, 0x11, 0x4e, 0x66,
+ 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12,
+ 0x45, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2d, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74,
+ 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06,
+ 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0xc5, 0x08, 0x0a, 0x0c, 0x4e, 0x66, 0x54, 0x61, 0x62,
+ 0x6c, 0x65, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x5e, 0x0a, 0x0f, 0x6d, 0x61, 0x74, 0x63, 0x68,
+ 0x5f, 0x6f, 0x5f, 0x69, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x37, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x49, 0x66,
+ 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68,
+ 0x4f, 0x49, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x64, 0x69,
+ 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73,
+ 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68,
+ 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x56, 0x65,
+ 0x72, 0x64, 0x69, 0x63, 0x74, 0x52, 0x07, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x12, 0x4f,
+ 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73,
- 0x4d, 0x61, 0x72, 0x6b, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x6a, 0x0a,
- 0x14, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64,
- 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x61,
+ 0x4d, 0x61, 0x72, 0x6b, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x72, 0x6b, 0x12,
+ 0x4b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4d,
+ 0x61, 0x72, 0x6b, 0x52, 0x07, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x12, 0x6a, 0x0a, 0x14,
+ 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64,
+ 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x61, 0x6c,
+ 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,
+ 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d,
+ 0x61, 0x74, 0x63, 0x68, 0x52, 0x12, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x74, 0x0a, 0x19, 0x6d, 0x61, 0x74, 0x63,
+ 0x68, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64,
+ 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x61,
0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66,
0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
- 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x12, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x74, 0x0a, 0x19, 0x6d, 0x61, 0x74,
- 0x63, 0x68, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74,
- 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
- 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x17, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,
- 0x5a, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x34, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62,
- 0x6c, 0x65, 0x73, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0b,
- 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x34, 0x12, 0x5e, 0x0a, 0x0f, 0x6d,
- 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x5f, 0x69, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08,
+ 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x17, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x73, 0x74,
+ 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5a,
+ 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x34, 0x18, 0x07,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c,
- 0x65, 0x73, 0x49, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0c, 0x6d,
- 0x61, 0x74, 0x63, 0x68, 0x49, 0x49, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x09, 0x63,
- 0x6c, 0x61, 0x6d, 0x70, 0x5f, 0x6d, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34,
- 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
- 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77,
- 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6c, 0x61, 0x6d,
- 0x70, 0x4d, 0x53, 0x53, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x4d, 0x73, 0x73, 0x12, 0x57,
- 0x0a, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
+ 0x65, 0x73, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x34, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0b, 0x6d,
+ 0x61, 0x74, 0x63, 0x68, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x34, 0x12, 0x5e, 0x0a, 0x0f, 0x6d, 0x61,
+ 0x74, 0x63, 0x68, 0x5f, 0x69, 0x5f, 0x69, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65,
- 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0a, 0x6d, 0x61, 0x74,
- 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x73, 0x0a, 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68,
- 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65,
- 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61,
- 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f,
- 0x6e, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c,
- 0x61, 0x6e, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6e, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x22,
- 0x93, 0x01, 0x0a, 0x15, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x46,
- 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x0f, 0x69, 0x6e, 0x63,
- 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49,
- 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
- 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75,
- 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x50,
- 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x75,
- 0x62, 0x6e, 0x65, 0x74, 0x73, 0x22, 0x7e, 0x0a, 0x1c, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68,
- 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5e, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74,
- 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73,
- 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68,
- 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x6f, 0x72,
- 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f,
- 0x72, 0x69, 0x74, 0x68, 0x6d, 0x22, 0xad, 0x01, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64,
- 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x09, 0x61, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63,
- 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69,
- 0x78, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x67, 0x0a, 0x0e,
- 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65,
- 0x72, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x41, 0x6c, 0x67,
- 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x41, 0x6c, 0x67, 0x6f,
- 0x72, 0x69, 0x74, 0x68, 0x6d, 0x22, 0xd7, 0x03, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
- 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x08, 0x6f, 0x70,
- 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x74,
- 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e,
- 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52,
- 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x6e,
- 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69,
- 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
- 0x65, 0x5f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75,
- 0x69, 0x72, 0x65, 0x55, 0x70, 0x12, 0x4b, 0x0a, 0x05, 0x64, 0x68, 0x63, 0x70, 0x34, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x44, 0x48, 0x43, 0x50, 0x34, 0x4f,
- 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x64, 0x68, 0x63,
- 0x70, 0x34, 0x12, 0x4b, 0x0a, 0x05, 0x64, 0x68, 0x63, 0x70, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e,
- 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x44, 0x48, 0x43, 0x50, 0x36, 0x4f, 0x70, 0x65, 0x72,
- 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x64, 0x68, 0x63, 0x70, 0x36, 0x12,
- 0x45, 0x0a, 0x03, 0x76, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74,
- 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x2e, 0x56, 0x49, 0x50, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65,
- 0x63, 0x52, 0x03, 0x76, 0x69, 0x70, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74,
- 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e,
- 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79,
- 0x65, 0x72, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22,
- 0x2b, 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02,
- 0x6c, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x02, 0x6c, 0x6f, 0x12, 0x0e, 0x0a, 0x02,
- 0x68, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x02, 0x68, 0x69, 0x22, 0x90, 0x02, 0x0a,
- 0x0d, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x35,
- 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74,
- 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
- 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
- 0x6c, 0x64, 0x12, 0x42, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x30, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x54, 0x43, 0x50, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x53, 0x70, 0x65,
- 0x63, 0x52, 0x03, 0x74, 0x63, 0x70, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74,
- 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65,
- 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e,
- 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79,
- 0x65, 0x72, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22,
- 0x4a, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70,
- 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
- 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc2, 0x01, 0x0a, 0x10,
- 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63,
- 0x12, 0x2e, 0x0a, 0x0b, 0x64, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e,
- 0x65, 0x74, 0x49, 0x50, 0x52, 0x0a, 0x64, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
- 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x61,
- 0x72, 0x63, 0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73,
- 0x22, 0x6b, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2e, 0x0a, 0x0b, 0x64, 0x6e, 0x73, 0x5f, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f,
- 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x0a, 0x64, 0x6e, 0x73, 0x53,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
- 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d,
- 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xde, 0x05,
- 0x0a, 0x0d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12,
- 0x4a, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x32, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75,
- 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x46, 0x61, 0x6d,
- 0x69, 0x6c, 0x79, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x35, 0x0a, 0x0b, 0x64,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x50,
- 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49,
- 0x50, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x67, 0x61, 0x74,
- 0x65, 0x77, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77,
- 0x61, 0x79, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x4c, 0x69,
- 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70,
- 0x65, 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52,
- 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x31, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65,
- 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x53,
- 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x74,
- 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f,
- 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74,
- 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65,
- 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18,
- 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x55, 0x0a, 0x08,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39,
- 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
- 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d,
- 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74,
- 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x61,
- 0x79, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f,
- 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52,
- 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03,
- 0x6d, 0x74, 0x75, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x22, 0xad,
- 0x05, 0x0a, 0x0f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70,
- 0x65, 0x63, 0x12, 0x4a, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73,
- 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x35,
- 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74,
- 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e,
- 0x65, 0x74, 0x49, 0x50, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x07,
- 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
- 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x07, 0x67, 0x61,
- 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x69, 0x6e,
- 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6f,
- 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x6f,
- 0x75, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x4e, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38,
- 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
- 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d,
- 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74,
- 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12,
- 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28,
- 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x73,
- 0x63, 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x74, 0x61, 0x6c,
- 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69,
- 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65,
- 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73,
- 0x63, 0x6f, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x73, 0x49, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0c, 0x6d, 0x61,
+ 0x74, 0x63, 0x68, 0x49, 0x49, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x09, 0x63, 0x6c,
+ 0x61, 0x6d, 0x70, 0x5f, 0x6d, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e,
+ 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f,
+ 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6c, 0x61, 0x6d, 0x70,
+ 0x4d, 0x53, 0x53, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x4d, 0x73, 0x73, 0x12, 0x57, 0x0a,
+ 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73,
- 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
- 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05,
- 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x55, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e,
+ 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73,
+ 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0a, 0x6d, 0x61, 0x74, 0x63,
+ 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x73, 0x0a, 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f,
+ 0x63, 0x6f, 0x6e, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x4e, 0x66, 0x54, 0x61, 0x62,
+ 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74,
+ 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61,
+ 0x6e, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0b, 0x61, 0x6e, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x93,
+ 0x01, 0x0a, 0x15, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x46, 0x69,
+ 0x6c, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50,
+ 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53,
+ 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64,
+ 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x50, 0x72,
+ 0x65, 0x66, 0x69, 0x78, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x75, 0x62,
+ 0x6e, 0x65, 0x74, 0x73, 0x22, 0x7e, 0x0a, 0x1c, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64, 0x72,
+ 0x65, 0x73, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d,
+ 0x53, 0x70, 0x65, 0x63, 0x12, 0x5e, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68,
+ 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e,
0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65,
- 0x6c, 0x70, 0x65, 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x10, 0x0a, 0x03,
- 0x6d, 0x74, 0x75, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x22, 0x23,
- 0x0a, 0x07, 0x53, 0x54, 0x50, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
- 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
- 0x6c, 0x65, 0x64, 0x22, 0xaf, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70,
- 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65,
- 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65,
- 0x73, 0x73, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
- 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
- 0x79, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
- 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d,
- 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x26, 0x0a,
- 0x0f, 0x65, 0x74, 0x63, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x74, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x73,
- 0x52, 0x65, 0x61, 0x64, 0x79, 0x22, 0x5f, 0x0a, 0x0c, 0x54, 0x43, 0x50, 0x50, 0x72, 0x6f, 0x62,
- 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
- 0x74, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74,
- 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x54, 0x69, 0x6d, 0x65, 0x53,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f, 0x0a,
- 0x0b, 0x6e, 0x74, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x57,
- 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x37, 0x0a, 0x14, 0x54, 0x69, 0x6d, 0x65, 0x53,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12,
- 0x1f, 0x0a, 0x0b, 0x6e, 0x74, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
- 0x22, 0x6e, 0x0a, 0x13, 0x56, 0x49, 0x50, 0x45, 0x71, 0x75, 0x69, 0x6e, 0x69, 0x78, 0x4d, 0x65,
- 0x74, 0x61, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65,
- 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f,
- 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63,
- 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
- 0x22, 0x68, 0x0a, 0x0d, 0x56, 0x49, 0x50, 0x48, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x70, 0x65,
- 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x1b, 0x0a,
- 0x09, 0x61, 0x70, 0x69, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x61, 0x70, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x81, 0x02, 0x0a, 0x0f, 0x56,
- 0x49, 0x50, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d,
- 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d,
- 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x02, 0x69, 0x70, 0x12, 0x25, 0x0a,
- 0x0e, 0x67, 0x72, 0x61, 0x74, 0x75, 0x69, 0x74, 0x6f, 0x75, 0x73, 0x5f, 0x61, 0x72, 0x70, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x67, 0x72, 0x61, 0x74, 0x75, 0x69, 0x74, 0x6f, 0x75,
- 0x73, 0x41, 0x72, 0x70, 0x12, 0x5c, 0x0a, 0x0d, 0x65, 0x71, 0x75, 0x69, 0x6e, 0x69, 0x78, 0x5f,
- 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x61,
+ 0x6c, 0x70, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x6f, 0x72, 0x74,
+ 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72,
+ 0x69, 0x74, 0x68, 0x6d, 0x22, 0xad, 0x01, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x64,
+ 0x72, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72,
+ 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78,
+ 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x67, 0x0a, 0x0e, 0x73,
+ 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72,
+ 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x41, 0x6c, 0x67, 0x6f,
+ 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x0d, 0x73, 0x6f, 0x72, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72,
+ 0x69, 0x74, 0x68, 0x6d, 0x22, 0xd7, 0x03, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f,
+ 0x72, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4d, 0x0a, 0x08, 0x6f, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x74, 0x61,
0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66,
- 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x2e, 0x56, 0x49, 0x50, 0x45, 0x71, 0x75, 0x69, 0x6e, 0x69, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x6c,
- 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x65, 0x71, 0x75, 0x69, 0x6e, 0x69, 0x78, 0x4d, 0x65, 0x74,
- 0x61, 0x6c, 0x12, 0x4a, 0x0a, 0x07, 0x68, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08,
+ 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x6e, 0x6b,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x6e,
+ 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+ 0x5f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69,
+ 0x72, 0x65, 0x55, 0x70, 0x12, 0x4b, 0x0a, 0x05, 0x64, 0x68, 0x63, 0x70, 0x34, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x56, 0x49, 0x50, 0x48, 0x43, 0x6c, 0x6f,
- 0x75, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x06, 0x68, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x22, 0x72,
- 0x0a, 0x08, 0x56, 0x4c, 0x41, 0x4e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x76, 0x69, 0x64, 0x12, 0x54, 0x0a, 0x08,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38,
+ 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x44, 0x48, 0x43, 0x50, 0x34, 0x4f, 0x70,
+ 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x64, 0x68, 0x63, 0x70,
+ 0x34, 0x12, 0x4b, 0x0a, 0x05, 0x64, 0x68, 0x63, 0x70, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x44, 0x48, 0x43, 0x50, 0x36, 0x4f, 0x70, 0x65, 0x72, 0x61,
+ 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x64, 0x68, 0x63, 0x70, 0x36, 0x12, 0x45,
+ 0x0a, 0x03, 0x76, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x61,
+ 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
+ 0x2e, 0x56, 0x49, 0x50, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63,
+ 0x52, 0x03, 0x76, 0x69, 0x70, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61,
+ 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65,
+ 0x72, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x2b,
+ 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6c,
+ 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x02, 0x6c, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x68,
+ 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x02, 0x68, 0x69, 0x22, 0x90, 0x02, 0x0a, 0x0d,
+ 0x50, 0x72, 0x6f, 0x62, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a,
+ 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+ 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65,
+ 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f,
+ 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
+ 0x64, 0x12, 0x42, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30,
+ 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x2e, 0x54, 0x43, 0x50, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x53, 0x70, 0x65, 0x63,
+ 0x52, 0x03, 0x74, 0x63, 0x70, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f,
+ 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61,
+ 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65,
+ 0x72, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x4a,
+ 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c,
+ 0x61, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x52,
+ 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12,
+ 0x2e, 0x0a, 0x0b, 0x64, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65,
+ 0x74, 0x49, 0x50, 0x52, 0x0a, 0x64, 0x6e, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12,
+ 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x61, 0x72,
+ 0x63, 0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22,
+ 0x6b, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2e, 0x0a, 0x0b, 0x64, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x0a, 0x64, 0x6e, 0x73, 0x53, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f,
+ 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xde, 0x05, 0x0a,
+ 0x0d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4a,
+ 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32,
0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d,
- 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x56, 0x4c, 0x41, 0x4e,
- 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x22, 0x84, 0x02, 0x0a, 0x0d, 0x57, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64,
- 0x50, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
- 0x4b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64,
- 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73,
- 0x68, 0x61, 0x72, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70,
- 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x1d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
- 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74,
- 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1b, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
- 0x6e, 0x74, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72,
- 0x76, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x69,
- 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0a, 0x61,
- 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x49, 0x70, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x0d, 0x57, 0x69,
- 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x70,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a,
- 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c,
- 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d,
- 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x03, 0x52, 0x0c, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x4d, 0x61, 0x72,
- 0x6b, 0x12, 0x47, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
+ 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x46, 0x61, 0x6d, 0x69,
+ 0x6c, 0x79, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x35, 0x0a, 0x0b, 0x64, 0x65,
+ 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x50, 0x72,
+ 0x65, 0x66, 0x69, 0x78, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50,
+ 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65,
+ 0x77, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
+ 0x79, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x4c, 0x69, 0x6e,
+ 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65,
+ 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
+ 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
+ 0x79, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x31, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65,
- 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x57, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x50,
- 0x65, 0x65, 0x72, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x42, 0x78, 0x0a, 0x2a, 0x64, 0x65,
- 0x76, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f,
+ 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e,
+ 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x53, 0x63,
+ 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73,
+ 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68,
+ 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52,
+ 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x0a,
+ 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x55, 0x0a, 0x08, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e,
+ 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73,
+ 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+ 0x6f, 0x6c, 0x12, 0x57, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x61, 0x79,
+ 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73,
+ 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0b,
+ 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d,
+ 0x74, 0x75, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x22, 0xad, 0x05,
+ 0x0a, 0x0f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x4a, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65,
+ 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x46,
+ 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x35, 0x0a,
+ 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49,
+ 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65,
+ 0x74, 0x49, 0x50, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x67,
+ 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x07, 0x67, 0x61, 0x74,
+ 0x65, 0x77, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x6b,
+ 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6f, 0x75,
+ 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x75,
+ 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e,
+ 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e,
+ 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73,
+ 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x69,
+ 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a,
+ 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d,
+ 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x63,
+ 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x74, 0x61, 0x6c, 0x6f,
+ 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74,
+ 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63,
+ 0x6f, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x35, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65,
+ 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x52,
+ 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14,
+ 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66,
+ 0x6c, 0x61, 0x67, 0x73, 0x12, 0x55, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
+ 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c,
+ 0x70, 0x65, 0x72, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d,
+ 0x74, 0x75, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x22, 0x23, 0x0a,
+ 0x07, 0x53, 0x54, 0x50, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+ 0x65, 0x64, 0x22, 0xaf, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65,
+ 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x61,
+ 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
+ 0x73, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+ 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79,
+ 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d,
+ 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68,
+ 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x26, 0x0a, 0x0f,
+ 0x65, 0x74, 0x63, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x74, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52,
+ 0x65, 0x61, 0x64, 0x79, 0x22, 0x5f, 0x0a, 0x0c, 0x54, 0x43, 0x50, 0x50, 0x72, 0x6f, 0x62, 0x65,
+ 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+ 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69,
+ 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x0b,
+ 0x6e, 0x74, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x0a, 0x6e, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a,
+ 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f,
- 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e,
- 0x65, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x37, 0x0a, 0x14, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x6e, 0x74, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x22,
+ 0x6e, 0x0a, 0x13, 0x56, 0x49, 0x50, 0x45, 0x71, 0x75, 0x69, 0x6e, 0x69, 0x78, 0x4d, 0x65, 0x74,
+ 0x61, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+ 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a,
+ 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
+ 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
+ 0x68, 0x0a, 0x0d, 0x56, 0x49, 0x50, 0x48, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x70, 0x65, 0x63,
+ 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
+ 0x61, 0x70, 0x69, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x61, 0x70, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x81, 0x02, 0x0a, 0x0f, 0x56, 0x49,
+ 0x50, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a,
+ 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x52, 0x02, 0x69, 0x70, 0x12, 0x25, 0x0a, 0x0e,
+ 0x67, 0x72, 0x61, 0x74, 0x75, 0x69, 0x74, 0x6f, 0x75, 0x73, 0x5f, 0x61, 0x72, 0x70, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x67, 0x72, 0x61, 0x74, 0x75, 0x69, 0x74, 0x6f, 0x75, 0x73,
+ 0x41, 0x72, 0x70, 0x12, 0x5c, 0x0a, 0x0d, 0x65, 0x71, 0x75, 0x69, 0x6e, 0x69, 0x78, 0x5f, 0x6d,
+ 0x65, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x61, 0x6c,
+ 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69,
+ 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,
+ 0x56, 0x49, 0x50, 0x45, 0x71, 0x75, 0x69, 0x6e, 0x69, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x53,
+ 0x70, 0x65, 0x63, 0x52, 0x0c, 0x65, 0x71, 0x75, 0x69, 0x6e, 0x69, 0x78, 0x4d, 0x65, 0x74, 0x61,
+ 0x6c, 0x12, 0x4a, 0x0a, 0x07, 0x68, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x56, 0x49, 0x50, 0x48, 0x43, 0x6c, 0x6f, 0x75,
+ 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x06, 0x68, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x22, 0x72, 0x0a,
+ 0x08, 0x56, 0x4c, 0x41, 0x4e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x76, 0x69, 0x64, 0x12, 0x54, 0x0a, 0x08, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e,
+ 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x64,
+ 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73,
+ 0x2e, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x56, 0x4c, 0x41, 0x4e, 0x50,
+ 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6c, 0x22, 0x84, 0x02, 0x0a, 0x0d, 0x57, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x50,
+ 0x65, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
+ 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f,
+ 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x68,
+ 0x61, 0x72, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f,
+ 0x69, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x1d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
+ 0x74, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65,
+ 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1b, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
+ 0x74, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76,
+ 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x69, 0x70,
+ 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
+ 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x50, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0a, 0x61, 0x6c,
+ 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x49, 0x70, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x0d, 0x57, 0x69, 0x72,
+ 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72,
+ 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
+ 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69,
+ 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66,
+ 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x0c, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x4d, 0x61, 0x72, 0x6b,
+ 0x12, 0x47, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x31, 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6e, 0x65, 0x74,
+ 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x57, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x50, 0x65,
+ 0x65, 0x72, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x42, 0x78, 0x0a, 0x2a, 0x64, 0x65, 0x76,
+ 0x2e, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x2e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x64, 0x65, 0x72, 0x6f, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x74,
+ 0x61, 0x6c, 0x6f, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65,
+ 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2f,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -4492,7 +4980,7 @@ func file_resource_definitions_network_network_proto_rawDescGZIP() []byte {
return file_resource_definitions_network_network_proto_rawDescData
}
-var file_resource_definitions_network_network_proto_msgTypes = make([]protoimpl.MessageInfo, 49)
+var file_resource_definitions_network_network_proto_msgTypes = make([]protoimpl.MessageInfo, 53)
var file_resource_definitions_network_network_proto_goTypes = []any{
(*AddressSpecSpec)(nil), // 0: talos.resource.definitions.network.AddressSpecSpec
(*AddressStatusSpec)(nil), // 1: talos.resource.definitions.network.AddressStatusSpec
@@ -4504,188 +4992,196 @@ var file_resource_definitions_network_network_proto_goTypes = []any{
(*DHCP4OperatorSpec)(nil), // 7: talos.resource.definitions.network.DHCP4OperatorSpec
(*DHCP6OperatorSpec)(nil), // 8: talos.resource.definitions.network.DHCP6OperatorSpec
(*DNSResolveCacheSpec)(nil), // 9: talos.resource.definitions.network.DNSResolveCacheSpec
- (*HardwareAddrSpec)(nil), // 10: talos.resource.definitions.network.HardwareAddrSpec
- (*HostDNSConfigSpec)(nil), // 11: talos.resource.definitions.network.HostDNSConfigSpec
- (*HostnameSpecSpec)(nil), // 12: talos.resource.definitions.network.HostnameSpecSpec
- (*HostnameStatusSpec)(nil), // 13: talos.resource.definitions.network.HostnameStatusSpec
- (*LinkRefreshSpec)(nil), // 14: talos.resource.definitions.network.LinkRefreshSpec
- (*LinkSpecSpec)(nil), // 15: talos.resource.definitions.network.LinkSpecSpec
- (*LinkStatusSpec)(nil), // 16: talos.resource.definitions.network.LinkStatusSpec
- (*NfTablesAddressMatch)(nil), // 17: talos.resource.definitions.network.NfTablesAddressMatch
- (*NfTablesChainSpec)(nil), // 18: talos.resource.definitions.network.NfTablesChainSpec
- (*NfTablesClampMSS)(nil), // 19: talos.resource.definitions.network.NfTablesClampMSS
- (*NfTablesConntrackStateMatch)(nil), // 20: talos.resource.definitions.network.NfTablesConntrackStateMatch
- (*NfTablesIfNameMatch)(nil), // 21: talos.resource.definitions.network.NfTablesIfNameMatch
- (*NfTablesLayer4Match)(nil), // 22: talos.resource.definitions.network.NfTablesLayer4Match
- (*NfTablesLimitMatch)(nil), // 23: talos.resource.definitions.network.NfTablesLimitMatch
- (*NfTablesMark)(nil), // 24: talos.resource.definitions.network.NfTablesMark
- (*NfTablesPortMatch)(nil), // 25: talos.resource.definitions.network.NfTablesPortMatch
- (*NfTablesRule)(nil), // 26: talos.resource.definitions.network.NfTablesRule
- (*NodeAddressFilterSpec)(nil), // 27: talos.resource.definitions.network.NodeAddressFilterSpec
- (*NodeAddressSortAlgorithmSpec)(nil), // 28: talos.resource.definitions.network.NodeAddressSortAlgorithmSpec
- (*NodeAddressSpec)(nil), // 29: talos.resource.definitions.network.NodeAddressSpec
- (*OperatorSpecSpec)(nil), // 30: talos.resource.definitions.network.OperatorSpecSpec
- (*PortRange)(nil), // 31: talos.resource.definitions.network.PortRange
- (*ProbeSpecSpec)(nil), // 32: talos.resource.definitions.network.ProbeSpecSpec
- (*ProbeStatusSpec)(nil), // 33: talos.resource.definitions.network.ProbeStatusSpec
- (*ResolverSpecSpec)(nil), // 34: talos.resource.definitions.network.ResolverSpecSpec
- (*ResolverStatusSpec)(nil), // 35: talos.resource.definitions.network.ResolverStatusSpec
- (*RouteSpecSpec)(nil), // 36: talos.resource.definitions.network.RouteSpecSpec
- (*RouteStatusSpec)(nil), // 37: talos.resource.definitions.network.RouteStatusSpec
- (*STPSpec)(nil), // 38: talos.resource.definitions.network.STPSpec
- (*StatusSpec)(nil), // 39: talos.resource.definitions.network.StatusSpec
- (*TCPProbeSpec)(nil), // 40: talos.resource.definitions.network.TCPProbeSpec
- (*TimeServerSpecSpec)(nil), // 41: talos.resource.definitions.network.TimeServerSpecSpec
- (*TimeServerStatusSpec)(nil), // 42: talos.resource.definitions.network.TimeServerStatusSpec
- (*VIPEquinixMetalSpec)(nil), // 43: talos.resource.definitions.network.VIPEquinixMetalSpec
- (*VIPHCloudSpec)(nil), // 44: talos.resource.definitions.network.VIPHCloudSpec
- (*VIPOperatorSpec)(nil), // 45: talos.resource.definitions.network.VIPOperatorSpec
- (*VLANSpec)(nil), // 46: talos.resource.definitions.network.VLANSpec
- (*WireguardPeer)(nil), // 47: talos.resource.definitions.network.WireguardPeer
- (*WireguardSpec)(nil), // 48: talos.resource.definitions.network.WireguardSpec
- (*common.NetIPPrefix)(nil), // 49: common.NetIPPrefix
- (enums.NethelpersFamily)(0), // 50: talos.resource.definitions.enums.NethelpersFamily
- (enums.NethelpersScope)(0), // 51: talos.resource.definitions.enums.NethelpersScope
- (enums.NetworkConfigLayer)(0), // 52: talos.resource.definitions.enums.NetworkConfigLayer
- (*common.NetIP)(nil), // 53: common.NetIP
- (enums.NethelpersBondMode)(0), // 54: talos.resource.definitions.enums.NethelpersBondMode
- (enums.NethelpersBondXmitHashPolicy)(0), // 55: talos.resource.definitions.enums.NethelpersBondXmitHashPolicy
- (enums.NethelpersLACPRate)(0), // 56: talos.resource.definitions.enums.NethelpersLACPRate
- (enums.NethelpersARPValidate)(0), // 57: talos.resource.definitions.enums.NethelpersARPValidate
- (enums.NethelpersARPAllTargets)(0), // 58: talos.resource.definitions.enums.NethelpersARPAllTargets
- (enums.NethelpersPrimaryReselect)(0), // 59: talos.resource.definitions.enums.NethelpersPrimaryReselect
- (enums.NethelpersFailOverMAC)(0), // 60: talos.resource.definitions.enums.NethelpersFailOverMAC
- (enums.NethelpersADSelect)(0), // 61: talos.resource.definitions.enums.NethelpersADSelect
- (*common.NetIPPort)(nil), // 62: common.NetIPPort
- (enums.NethelpersLinkType)(0), // 63: talos.resource.definitions.enums.NethelpersLinkType
- (enums.NethelpersOperationalState)(0), // 64: talos.resource.definitions.enums.NethelpersOperationalState
- (enums.NethelpersPort)(0), // 65: talos.resource.definitions.enums.NethelpersPort
- (enums.NethelpersDuplex)(0), // 66: talos.resource.definitions.enums.NethelpersDuplex
- (enums.NethelpersNfTablesChainHook)(0), // 67: talos.resource.definitions.enums.NethelpersNfTablesChainHook
- (enums.NethelpersNfTablesChainPriority)(0), // 68: talos.resource.definitions.enums.NethelpersNfTablesChainPriority
- (enums.NethelpersNfTablesVerdict)(0), // 69: talos.resource.definitions.enums.NethelpersNfTablesVerdict
- (enums.NethelpersConntrackState)(0), // 70: talos.resource.definitions.enums.NethelpersConntrackState
- (enums.NethelpersMatchOperator)(0), // 71: talos.resource.definitions.enums.NethelpersMatchOperator
- (enums.NethelpersProtocol)(0), // 72: talos.resource.definitions.enums.NethelpersProtocol
- (enums.NethelpersAddressSortAlgorithm)(0), // 73: talos.resource.definitions.enums.NethelpersAddressSortAlgorithm
- (enums.NetworkOperator)(0), // 74: talos.resource.definitions.enums.NetworkOperator
- (*durationpb.Duration)(nil), // 75: google.protobuf.Duration
- (enums.NethelpersRoutingTable)(0), // 76: talos.resource.definitions.enums.NethelpersRoutingTable
- (enums.NethelpersRouteType)(0), // 77: talos.resource.definitions.enums.NethelpersRouteType
- (enums.NethelpersRouteProtocol)(0), // 78: talos.resource.definitions.enums.NethelpersRouteProtocol
- (enums.NethelpersVLANProtocol)(0), // 79: talos.resource.definitions.enums.NethelpersVLANProtocol
+ (*EthernetRingsSpec)(nil), // 10: talos.resource.definitions.network.EthernetRingsSpec
+ (*EthernetRingsStatus)(nil), // 11: talos.resource.definitions.network.EthernetRingsStatus
+ (*EthernetSpecSpec)(nil), // 12: talos.resource.definitions.network.EthernetSpecSpec
+ (*EthernetStatusSpec)(nil), // 13: talos.resource.definitions.network.EthernetStatusSpec
+ (*HardwareAddrSpec)(nil), // 14: talos.resource.definitions.network.HardwareAddrSpec
+ (*HostDNSConfigSpec)(nil), // 15: talos.resource.definitions.network.HostDNSConfigSpec
+ (*HostnameSpecSpec)(nil), // 16: talos.resource.definitions.network.HostnameSpecSpec
+ (*HostnameStatusSpec)(nil), // 17: talos.resource.definitions.network.HostnameStatusSpec
+ (*LinkRefreshSpec)(nil), // 18: talos.resource.definitions.network.LinkRefreshSpec
+ (*LinkSpecSpec)(nil), // 19: talos.resource.definitions.network.LinkSpecSpec
+ (*LinkStatusSpec)(nil), // 20: talos.resource.definitions.network.LinkStatusSpec
+ (*NfTablesAddressMatch)(nil), // 21: talos.resource.definitions.network.NfTablesAddressMatch
+ (*NfTablesChainSpec)(nil), // 22: talos.resource.definitions.network.NfTablesChainSpec
+ (*NfTablesClampMSS)(nil), // 23: talos.resource.definitions.network.NfTablesClampMSS
+ (*NfTablesConntrackStateMatch)(nil), // 24: talos.resource.definitions.network.NfTablesConntrackStateMatch
+ (*NfTablesIfNameMatch)(nil), // 25: talos.resource.definitions.network.NfTablesIfNameMatch
+ (*NfTablesLayer4Match)(nil), // 26: talos.resource.definitions.network.NfTablesLayer4Match
+ (*NfTablesLimitMatch)(nil), // 27: talos.resource.definitions.network.NfTablesLimitMatch
+ (*NfTablesMark)(nil), // 28: talos.resource.definitions.network.NfTablesMark
+ (*NfTablesPortMatch)(nil), // 29: talos.resource.definitions.network.NfTablesPortMatch
+ (*NfTablesRule)(nil), // 30: talos.resource.definitions.network.NfTablesRule
+ (*NodeAddressFilterSpec)(nil), // 31: talos.resource.definitions.network.NodeAddressFilterSpec
+ (*NodeAddressSortAlgorithmSpec)(nil), // 32: talos.resource.definitions.network.NodeAddressSortAlgorithmSpec
+ (*NodeAddressSpec)(nil), // 33: talos.resource.definitions.network.NodeAddressSpec
+ (*OperatorSpecSpec)(nil), // 34: talos.resource.definitions.network.OperatorSpecSpec
+ (*PortRange)(nil), // 35: talos.resource.definitions.network.PortRange
+ (*ProbeSpecSpec)(nil), // 36: talos.resource.definitions.network.ProbeSpecSpec
+ (*ProbeStatusSpec)(nil), // 37: talos.resource.definitions.network.ProbeStatusSpec
+ (*ResolverSpecSpec)(nil), // 38: talos.resource.definitions.network.ResolverSpecSpec
+ (*ResolverStatusSpec)(nil), // 39: talos.resource.definitions.network.ResolverStatusSpec
+ (*RouteSpecSpec)(nil), // 40: talos.resource.definitions.network.RouteSpecSpec
+ (*RouteStatusSpec)(nil), // 41: talos.resource.definitions.network.RouteStatusSpec
+ (*STPSpec)(nil), // 42: talos.resource.definitions.network.STPSpec
+ (*StatusSpec)(nil), // 43: talos.resource.definitions.network.StatusSpec
+ (*TCPProbeSpec)(nil), // 44: talos.resource.definitions.network.TCPProbeSpec
+ (*TimeServerSpecSpec)(nil), // 45: talos.resource.definitions.network.TimeServerSpecSpec
+ (*TimeServerStatusSpec)(nil), // 46: talos.resource.definitions.network.TimeServerStatusSpec
+ (*VIPEquinixMetalSpec)(nil), // 47: talos.resource.definitions.network.VIPEquinixMetalSpec
+ (*VIPHCloudSpec)(nil), // 48: talos.resource.definitions.network.VIPHCloudSpec
+ (*VIPOperatorSpec)(nil), // 49: talos.resource.definitions.network.VIPOperatorSpec
+ (*VLANSpec)(nil), // 50: talos.resource.definitions.network.VLANSpec
+ (*WireguardPeer)(nil), // 51: talos.resource.definitions.network.WireguardPeer
+ (*WireguardSpec)(nil), // 52: talos.resource.definitions.network.WireguardSpec
+ (*common.NetIPPrefix)(nil), // 53: common.NetIPPrefix
+ (enums.NethelpersFamily)(0), // 54: talos.resource.definitions.enums.NethelpersFamily
+ (enums.NethelpersScope)(0), // 55: talos.resource.definitions.enums.NethelpersScope
+ (enums.NetworkConfigLayer)(0), // 56: talos.resource.definitions.enums.NetworkConfigLayer
+ (*common.NetIP)(nil), // 57: common.NetIP
+ (enums.NethelpersBondMode)(0), // 58: talos.resource.definitions.enums.NethelpersBondMode
+ (enums.NethelpersBondXmitHashPolicy)(0), // 59: talos.resource.definitions.enums.NethelpersBondXmitHashPolicy
+ (enums.NethelpersLACPRate)(0), // 60: talos.resource.definitions.enums.NethelpersLACPRate
+ (enums.NethelpersARPValidate)(0), // 61: talos.resource.definitions.enums.NethelpersARPValidate
+ (enums.NethelpersARPAllTargets)(0), // 62: talos.resource.definitions.enums.NethelpersARPAllTargets
+ (enums.NethelpersPrimaryReselect)(0), // 63: talos.resource.definitions.enums.NethelpersPrimaryReselect
+ (enums.NethelpersFailOverMAC)(0), // 64: talos.resource.definitions.enums.NethelpersFailOverMAC
+ (enums.NethelpersADSelect)(0), // 65: talos.resource.definitions.enums.NethelpersADSelect
+ (enums.NethelpersPort)(0), // 66: talos.resource.definitions.enums.NethelpersPort
+ (enums.NethelpersDuplex)(0), // 67: talos.resource.definitions.enums.NethelpersDuplex
+ (*common.NetIPPort)(nil), // 68: common.NetIPPort
+ (enums.NethelpersLinkType)(0), // 69: talos.resource.definitions.enums.NethelpersLinkType
+ (enums.NethelpersOperationalState)(0), // 70: talos.resource.definitions.enums.NethelpersOperationalState
+ (enums.NethelpersNfTablesChainHook)(0), // 71: talos.resource.definitions.enums.NethelpersNfTablesChainHook
+ (enums.NethelpersNfTablesChainPriority)(0), // 72: talos.resource.definitions.enums.NethelpersNfTablesChainPriority
+ (enums.NethelpersNfTablesVerdict)(0), // 73: talos.resource.definitions.enums.NethelpersNfTablesVerdict
+ (enums.NethelpersConntrackState)(0), // 74: talos.resource.definitions.enums.NethelpersConntrackState
+ (enums.NethelpersMatchOperator)(0), // 75: talos.resource.definitions.enums.NethelpersMatchOperator
+ (enums.NethelpersProtocol)(0), // 76: talos.resource.definitions.enums.NethelpersProtocol
+ (enums.NethelpersAddressSortAlgorithm)(0), // 77: talos.resource.definitions.enums.NethelpersAddressSortAlgorithm
+ (enums.NetworkOperator)(0), // 78: talos.resource.definitions.enums.NetworkOperator
+ (*durationpb.Duration)(nil), // 79: google.protobuf.Duration
+ (enums.NethelpersRoutingTable)(0), // 80: talos.resource.definitions.enums.NethelpersRoutingTable
+ (enums.NethelpersRouteType)(0), // 81: talos.resource.definitions.enums.NethelpersRouteType
+ (enums.NethelpersRouteProtocol)(0), // 82: talos.resource.definitions.enums.NethelpersRouteProtocol
+ (enums.NethelpersVLANProtocol)(0), // 83: talos.resource.definitions.enums.NethelpersVLANProtocol
}
var file_resource_definitions_network_network_proto_depIdxs = []int32{
- 49, // 0: talos.resource.definitions.network.AddressSpecSpec.address:type_name -> common.NetIPPrefix
- 50, // 1: talos.resource.definitions.network.AddressSpecSpec.family:type_name -> talos.resource.definitions.enums.NethelpersFamily
- 51, // 2: talos.resource.definitions.network.AddressSpecSpec.scope:type_name -> talos.resource.definitions.enums.NethelpersScope
- 52, // 3: talos.resource.definitions.network.AddressSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
- 49, // 4: talos.resource.definitions.network.AddressStatusSpec.address:type_name -> common.NetIPPrefix
- 53, // 5: talos.resource.definitions.network.AddressStatusSpec.local:type_name -> common.NetIP
- 53, // 6: talos.resource.definitions.network.AddressStatusSpec.broadcast:type_name -> common.NetIP
- 53, // 7: talos.resource.definitions.network.AddressStatusSpec.anycast:type_name -> common.NetIP
- 53, // 8: talos.resource.definitions.network.AddressStatusSpec.multicast:type_name -> common.NetIP
- 50, // 9: talos.resource.definitions.network.AddressStatusSpec.family:type_name -> talos.resource.definitions.enums.NethelpersFamily
- 51, // 10: talos.resource.definitions.network.AddressStatusSpec.scope:type_name -> talos.resource.definitions.enums.NethelpersScope
- 54, // 11: talos.resource.definitions.network.BondMasterSpec.mode:type_name -> talos.resource.definitions.enums.NethelpersBondMode
- 55, // 12: talos.resource.definitions.network.BondMasterSpec.hash_policy:type_name -> talos.resource.definitions.enums.NethelpersBondXmitHashPolicy
- 56, // 13: talos.resource.definitions.network.BondMasterSpec.lacp_rate:type_name -> talos.resource.definitions.enums.NethelpersLACPRate
- 57, // 14: talos.resource.definitions.network.BondMasterSpec.arp_validate:type_name -> talos.resource.definitions.enums.NethelpersARPValidate
- 58, // 15: talos.resource.definitions.network.BondMasterSpec.arp_all_targets:type_name -> talos.resource.definitions.enums.NethelpersARPAllTargets
- 59, // 16: talos.resource.definitions.network.BondMasterSpec.primary_reselect:type_name -> talos.resource.definitions.enums.NethelpersPrimaryReselect
- 60, // 17: talos.resource.definitions.network.BondMasterSpec.fail_over_mac:type_name -> talos.resource.definitions.enums.NethelpersFailOverMAC
- 61, // 18: talos.resource.definitions.network.BondMasterSpec.ad_select:type_name -> talos.resource.definitions.enums.NethelpersADSelect
- 38, // 19: talos.resource.definitions.network.BridgeMasterSpec.stp:type_name -> talos.resource.definitions.network.STPSpec
+ 53, // 0: talos.resource.definitions.network.AddressSpecSpec.address:type_name -> common.NetIPPrefix
+ 54, // 1: talos.resource.definitions.network.AddressSpecSpec.family:type_name -> talos.resource.definitions.enums.NethelpersFamily
+ 55, // 2: talos.resource.definitions.network.AddressSpecSpec.scope:type_name -> talos.resource.definitions.enums.NethelpersScope
+ 56, // 3: talos.resource.definitions.network.AddressSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
+ 53, // 4: talos.resource.definitions.network.AddressStatusSpec.address:type_name -> common.NetIPPrefix
+ 57, // 5: talos.resource.definitions.network.AddressStatusSpec.local:type_name -> common.NetIP
+ 57, // 6: talos.resource.definitions.network.AddressStatusSpec.broadcast:type_name -> common.NetIP
+ 57, // 7: talos.resource.definitions.network.AddressStatusSpec.anycast:type_name -> common.NetIP
+ 57, // 8: talos.resource.definitions.network.AddressStatusSpec.multicast:type_name -> common.NetIP
+ 54, // 9: talos.resource.definitions.network.AddressStatusSpec.family:type_name -> talos.resource.definitions.enums.NethelpersFamily
+ 55, // 10: talos.resource.definitions.network.AddressStatusSpec.scope:type_name -> talos.resource.definitions.enums.NethelpersScope
+ 58, // 11: talos.resource.definitions.network.BondMasterSpec.mode:type_name -> talos.resource.definitions.enums.NethelpersBondMode
+ 59, // 12: talos.resource.definitions.network.BondMasterSpec.hash_policy:type_name -> talos.resource.definitions.enums.NethelpersBondXmitHashPolicy
+ 60, // 13: talos.resource.definitions.network.BondMasterSpec.lacp_rate:type_name -> talos.resource.definitions.enums.NethelpersLACPRate
+ 61, // 14: talos.resource.definitions.network.BondMasterSpec.arp_validate:type_name -> talos.resource.definitions.enums.NethelpersARPValidate
+ 62, // 15: talos.resource.definitions.network.BondMasterSpec.arp_all_targets:type_name -> talos.resource.definitions.enums.NethelpersARPAllTargets
+ 63, // 16: talos.resource.definitions.network.BondMasterSpec.primary_reselect:type_name -> talos.resource.definitions.enums.NethelpersPrimaryReselect
+ 64, // 17: talos.resource.definitions.network.BondMasterSpec.fail_over_mac:type_name -> talos.resource.definitions.enums.NethelpersFailOverMAC
+ 65, // 18: talos.resource.definitions.network.BondMasterSpec.ad_select:type_name -> talos.resource.definitions.enums.NethelpersADSelect
+ 42, // 19: talos.resource.definitions.network.BridgeMasterSpec.stp:type_name -> talos.resource.definitions.network.STPSpec
6, // 20: talos.resource.definitions.network.BridgeMasterSpec.vlan:type_name -> talos.resource.definitions.network.BridgeVLANSpec
- 62, // 21: talos.resource.definitions.network.HostDNSConfigSpec.listen_addresses:type_name -> common.NetIPPort
- 53, // 22: talos.resource.definitions.network.HostDNSConfigSpec.service_host_dns_address:type_name -> common.NetIP
- 52, // 23: talos.resource.definitions.network.HostnameSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
- 63, // 24: talos.resource.definitions.network.LinkSpecSpec.type:type_name -> talos.resource.definitions.enums.NethelpersLinkType
- 3, // 25: talos.resource.definitions.network.LinkSpecSpec.bond_slave:type_name -> talos.resource.definitions.network.BondSlave
- 5, // 26: talos.resource.definitions.network.LinkSpecSpec.bridge_slave:type_name -> talos.resource.definitions.network.BridgeSlave
- 46, // 27: talos.resource.definitions.network.LinkSpecSpec.vlan:type_name -> talos.resource.definitions.network.VLANSpec
- 2, // 28: talos.resource.definitions.network.LinkSpecSpec.bond_master:type_name -> talos.resource.definitions.network.BondMasterSpec
- 4, // 29: talos.resource.definitions.network.LinkSpecSpec.bridge_master:type_name -> talos.resource.definitions.network.BridgeMasterSpec
- 48, // 30: talos.resource.definitions.network.LinkSpecSpec.wireguard:type_name -> talos.resource.definitions.network.WireguardSpec
- 52, // 31: talos.resource.definitions.network.LinkSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
- 63, // 32: talos.resource.definitions.network.LinkStatusSpec.type:type_name -> talos.resource.definitions.enums.NethelpersLinkType
- 64, // 33: talos.resource.definitions.network.LinkStatusSpec.operational_state:type_name -> talos.resource.definitions.enums.NethelpersOperationalState
- 65, // 34: talos.resource.definitions.network.LinkStatusSpec.port:type_name -> talos.resource.definitions.enums.NethelpersPort
- 66, // 35: talos.resource.definitions.network.LinkStatusSpec.duplex:type_name -> talos.resource.definitions.enums.NethelpersDuplex
- 46, // 36: talos.resource.definitions.network.LinkStatusSpec.vlan:type_name -> talos.resource.definitions.network.VLANSpec
- 4, // 37: talos.resource.definitions.network.LinkStatusSpec.bridge_master:type_name -> talos.resource.definitions.network.BridgeMasterSpec
- 2, // 38: talos.resource.definitions.network.LinkStatusSpec.bond_master:type_name -> talos.resource.definitions.network.BondMasterSpec
- 48, // 39: talos.resource.definitions.network.LinkStatusSpec.wireguard:type_name -> talos.resource.definitions.network.WireguardSpec
- 49, // 40: talos.resource.definitions.network.NfTablesAddressMatch.include_subnets:type_name -> common.NetIPPrefix
- 49, // 41: talos.resource.definitions.network.NfTablesAddressMatch.exclude_subnets:type_name -> common.NetIPPrefix
- 67, // 42: talos.resource.definitions.network.NfTablesChainSpec.hook:type_name -> talos.resource.definitions.enums.NethelpersNfTablesChainHook
- 68, // 43: talos.resource.definitions.network.NfTablesChainSpec.priority:type_name -> talos.resource.definitions.enums.NethelpersNfTablesChainPriority
- 26, // 44: talos.resource.definitions.network.NfTablesChainSpec.rules:type_name -> talos.resource.definitions.network.NfTablesRule
- 69, // 45: talos.resource.definitions.network.NfTablesChainSpec.policy:type_name -> talos.resource.definitions.enums.NethelpersNfTablesVerdict
- 70, // 46: talos.resource.definitions.network.NfTablesConntrackStateMatch.states:type_name -> talos.resource.definitions.enums.NethelpersConntrackState
- 71, // 47: talos.resource.definitions.network.NfTablesIfNameMatch.operator:type_name -> talos.resource.definitions.enums.NethelpersMatchOperator
- 72, // 48: talos.resource.definitions.network.NfTablesLayer4Match.protocol:type_name -> talos.resource.definitions.enums.NethelpersProtocol
- 25, // 49: talos.resource.definitions.network.NfTablesLayer4Match.match_source_port:type_name -> talos.resource.definitions.network.NfTablesPortMatch
- 25, // 50: talos.resource.definitions.network.NfTablesLayer4Match.match_destination_port:type_name -> talos.resource.definitions.network.NfTablesPortMatch
- 31, // 51: talos.resource.definitions.network.NfTablesPortMatch.ranges:type_name -> talos.resource.definitions.network.PortRange
- 21, // 52: talos.resource.definitions.network.NfTablesRule.match_o_if_name:type_name -> talos.resource.definitions.network.NfTablesIfNameMatch
- 69, // 53: talos.resource.definitions.network.NfTablesRule.verdict:type_name -> talos.resource.definitions.enums.NethelpersNfTablesVerdict
- 24, // 54: talos.resource.definitions.network.NfTablesRule.match_mark:type_name -> talos.resource.definitions.network.NfTablesMark
- 24, // 55: talos.resource.definitions.network.NfTablesRule.set_mark:type_name -> talos.resource.definitions.network.NfTablesMark
- 17, // 56: talos.resource.definitions.network.NfTablesRule.match_source_address:type_name -> talos.resource.definitions.network.NfTablesAddressMatch
- 17, // 57: talos.resource.definitions.network.NfTablesRule.match_destination_address:type_name -> talos.resource.definitions.network.NfTablesAddressMatch
- 22, // 58: talos.resource.definitions.network.NfTablesRule.match_layer4:type_name -> talos.resource.definitions.network.NfTablesLayer4Match
- 21, // 59: talos.resource.definitions.network.NfTablesRule.match_i_if_name:type_name -> talos.resource.definitions.network.NfTablesIfNameMatch
- 19, // 60: talos.resource.definitions.network.NfTablesRule.clamp_mss:type_name -> talos.resource.definitions.network.NfTablesClampMSS
- 23, // 61: talos.resource.definitions.network.NfTablesRule.match_limit:type_name -> talos.resource.definitions.network.NfTablesLimitMatch
- 20, // 62: talos.resource.definitions.network.NfTablesRule.match_conntrack_state:type_name -> talos.resource.definitions.network.NfTablesConntrackStateMatch
- 49, // 63: talos.resource.definitions.network.NodeAddressFilterSpec.include_subnets:type_name -> common.NetIPPrefix
- 49, // 64: talos.resource.definitions.network.NodeAddressFilterSpec.exclude_subnets:type_name -> common.NetIPPrefix
- 73, // 65: talos.resource.definitions.network.NodeAddressSortAlgorithmSpec.algorithm:type_name -> talos.resource.definitions.enums.NethelpersAddressSortAlgorithm
- 49, // 66: talos.resource.definitions.network.NodeAddressSpec.addresses:type_name -> common.NetIPPrefix
- 73, // 67: talos.resource.definitions.network.NodeAddressSpec.sort_algorithm:type_name -> talos.resource.definitions.enums.NethelpersAddressSortAlgorithm
- 74, // 68: talos.resource.definitions.network.OperatorSpecSpec.operator:type_name -> talos.resource.definitions.enums.NetworkOperator
- 7, // 69: talos.resource.definitions.network.OperatorSpecSpec.dhcp4:type_name -> talos.resource.definitions.network.DHCP4OperatorSpec
- 8, // 70: talos.resource.definitions.network.OperatorSpecSpec.dhcp6:type_name -> talos.resource.definitions.network.DHCP6OperatorSpec
- 45, // 71: talos.resource.definitions.network.OperatorSpecSpec.vip:type_name -> talos.resource.definitions.network.VIPOperatorSpec
- 52, // 72: talos.resource.definitions.network.OperatorSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
- 75, // 73: talos.resource.definitions.network.ProbeSpecSpec.interval:type_name -> google.protobuf.Duration
- 40, // 74: talos.resource.definitions.network.ProbeSpecSpec.tcp:type_name -> talos.resource.definitions.network.TCPProbeSpec
- 52, // 75: talos.resource.definitions.network.ProbeSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
- 53, // 76: talos.resource.definitions.network.ResolverSpecSpec.dns_servers:type_name -> common.NetIP
- 52, // 77: talos.resource.definitions.network.ResolverSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
- 53, // 78: talos.resource.definitions.network.ResolverStatusSpec.dns_servers:type_name -> common.NetIP
- 50, // 79: talos.resource.definitions.network.RouteSpecSpec.family:type_name -> talos.resource.definitions.enums.NethelpersFamily
- 49, // 80: talos.resource.definitions.network.RouteSpecSpec.destination:type_name -> common.NetIPPrefix
- 53, // 81: talos.resource.definitions.network.RouteSpecSpec.source:type_name -> common.NetIP
- 53, // 82: talos.resource.definitions.network.RouteSpecSpec.gateway:type_name -> common.NetIP
- 76, // 83: talos.resource.definitions.network.RouteSpecSpec.table:type_name -> talos.resource.definitions.enums.NethelpersRoutingTable
- 51, // 84: talos.resource.definitions.network.RouteSpecSpec.scope:type_name -> talos.resource.definitions.enums.NethelpersScope
- 77, // 85: talos.resource.definitions.network.RouteSpecSpec.type:type_name -> talos.resource.definitions.enums.NethelpersRouteType
- 78, // 86: talos.resource.definitions.network.RouteSpecSpec.protocol:type_name -> talos.resource.definitions.enums.NethelpersRouteProtocol
- 52, // 87: talos.resource.definitions.network.RouteSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
- 50, // 88: talos.resource.definitions.network.RouteStatusSpec.family:type_name -> talos.resource.definitions.enums.NethelpersFamily
- 49, // 89: talos.resource.definitions.network.RouteStatusSpec.destination:type_name -> common.NetIPPrefix
- 53, // 90: talos.resource.definitions.network.RouteStatusSpec.source:type_name -> common.NetIP
- 53, // 91: talos.resource.definitions.network.RouteStatusSpec.gateway:type_name -> common.NetIP
- 76, // 92: talos.resource.definitions.network.RouteStatusSpec.table:type_name -> talos.resource.definitions.enums.NethelpersRoutingTable
- 51, // 93: talos.resource.definitions.network.RouteStatusSpec.scope:type_name -> talos.resource.definitions.enums.NethelpersScope
- 77, // 94: talos.resource.definitions.network.RouteStatusSpec.type:type_name -> talos.resource.definitions.enums.NethelpersRouteType
- 78, // 95: talos.resource.definitions.network.RouteStatusSpec.protocol:type_name -> talos.resource.definitions.enums.NethelpersRouteProtocol
- 75, // 96: talos.resource.definitions.network.TCPProbeSpec.timeout:type_name -> google.protobuf.Duration
- 52, // 97: talos.resource.definitions.network.TimeServerSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
- 53, // 98: talos.resource.definitions.network.VIPOperatorSpec.ip:type_name -> common.NetIP
- 43, // 99: talos.resource.definitions.network.VIPOperatorSpec.equinix_metal:type_name -> talos.resource.definitions.network.VIPEquinixMetalSpec
- 44, // 100: talos.resource.definitions.network.VIPOperatorSpec.h_cloud:type_name -> talos.resource.definitions.network.VIPHCloudSpec
- 79, // 101: talos.resource.definitions.network.VLANSpec.protocol:type_name -> talos.resource.definitions.enums.NethelpersVLANProtocol
- 75, // 102: talos.resource.definitions.network.WireguardPeer.persistent_keepalive_interval:type_name -> google.protobuf.Duration
- 49, // 103: talos.resource.definitions.network.WireguardPeer.allowed_ips:type_name -> common.NetIPPrefix
- 47, // 104: talos.resource.definitions.network.WireguardSpec.peers:type_name -> talos.resource.definitions.network.WireguardPeer
- 105, // [105:105] is the sub-list for method output_type
- 105, // [105:105] is the sub-list for method input_type
- 105, // [105:105] is the sub-list for extension type_name
- 105, // [105:105] is the sub-list for extension extendee
- 0, // [0:105] is the sub-list for field type_name
+ 10, // 21: talos.resource.definitions.network.EthernetSpecSpec.rings:type_name -> talos.resource.definitions.network.EthernetRingsSpec
+ 66, // 22: talos.resource.definitions.network.EthernetStatusSpec.port:type_name -> talos.resource.definitions.enums.NethelpersPort
+ 67, // 23: talos.resource.definitions.network.EthernetStatusSpec.duplex:type_name -> talos.resource.definitions.enums.NethelpersDuplex
+ 11, // 24: talos.resource.definitions.network.EthernetStatusSpec.rings:type_name -> talos.resource.definitions.network.EthernetRingsStatus
+ 68, // 25: talos.resource.definitions.network.HostDNSConfigSpec.listen_addresses:type_name -> common.NetIPPort
+ 57, // 26: talos.resource.definitions.network.HostDNSConfigSpec.service_host_dns_address:type_name -> common.NetIP
+ 56, // 27: talos.resource.definitions.network.HostnameSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
+ 69, // 28: talos.resource.definitions.network.LinkSpecSpec.type:type_name -> talos.resource.definitions.enums.NethelpersLinkType
+ 3, // 29: talos.resource.definitions.network.LinkSpecSpec.bond_slave:type_name -> talos.resource.definitions.network.BondSlave
+ 5, // 30: talos.resource.definitions.network.LinkSpecSpec.bridge_slave:type_name -> talos.resource.definitions.network.BridgeSlave
+ 50, // 31: talos.resource.definitions.network.LinkSpecSpec.vlan:type_name -> talos.resource.definitions.network.VLANSpec
+ 2, // 32: talos.resource.definitions.network.LinkSpecSpec.bond_master:type_name -> talos.resource.definitions.network.BondMasterSpec
+ 4, // 33: talos.resource.definitions.network.LinkSpecSpec.bridge_master:type_name -> talos.resource.definitions.network.BridgeMasterSpec
+ 52, // 34: talos.resource.definitions.network.LinkSpecSpec.wireguard:type_name -> talos.resource.definitions.network.WireguardSpec
+ 56, // 35: talos.resource.definitions.network.LinkSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
+ 69, // 36: talos.resource.definitions.network.LinkStatusSpec.type:type_name -> talos.resource.definitions.enums.NethelpersLinkType
+ 70, // 37: talos.resource.definitions.network.LinkStatusSpec.operational_state:type_name -> talos.resource.definitions.enums.NethelpersOperationalState
+ 66, // 38: talos.resource.definitions.network.LinkStatusSpec.port:type_name -> talos.resource.definitions.enums.NethelpersPort
+ 67, // 39: talos.resource.definitions.network.LinkStatusSpec.duplex:type_name -> talos.resource.definitions.enums.NethelpersDuplex
+ 50, // 40: talos.resource.definitions.network.LinkStatusSpec.vlan:type_name -> talos.resource.definitions.network.VLANSpec
+ 4, // 41: talos.resource.definitions.network.LinkStatusSpec.bridge_master:type_name -> talos.resource.definitions.network.BridgeMasterSpec
+ 2, // 42: talos.resource.definitions.network.LinkStatusSpec.bond_master:type_name -> talos.resource.definitions.network.BondMasterSpec
+ 52, // 43: talos.resource.definitions.network.LinkStatusSpec.wireguard:type_name -> talos.resource.definitions.network.WireguardSpec
+ 53, // 44: talos.resource.definitions.network.NfTablesAddressMatch.include_subnets:type_name -> common.NetIPPrefix
+ 53, // 45: talos.resource.definitions.network.NfTablesAddressMatch.exclude_subnets:type_name -> common.NetIPPrefix
+ 71, // 46: talos.resource.definitions.network.NfTablesChainSpec.hook:type_name -> talos.resource.definitions.enums.NethelpersNfTablesChainHook
+ 72, // 47: talos.resource.definitions.network.NfTablesChainSpec.priority:type_name -> talos.resource.definitions.enums.NethelpersNfTablesChainPriority
+ 30, // 48: talos.resource.definitions.network.NfTablesChainSpec.rules:type_name -> talos.resource.definitions.network.NfTablesRule
+ 73, // 49: talos.resource.definitions.network.NfTablesChainSpec.policy:type_name -> talos.resource.definitions.enums.NethelpersNfTablesVerdict
+ 74, // 50: talos.resource.definitions.network.NfTablesConntrackStateMatch.states:type_name -> talos.resource.definitions.enums.NethelpersConntrackState
+ 75, // 51: talos.resource.definitions.network.NfTablesIfNameMatch.operator:type_name -> talos.resource.definitions.enums.NethelpersMatchOperator
+ 76, // 52: talos.resource.definitions.network.NfTablesLayer4Match.protocol:type_name -> talos.resource.definitions.enums.NethelpersProtocol
+ 29, // 53: talos.resource.definitions.network.NfTablesLayer4Match.match_source_port:type_name -> talos.resource.definitions.network.NfTablesPortMatch
+ 29, // 54: talos.resource.definitions.network.NfTablesLayer4Match.match_destination_port:type_name -> talos.resource.definitions.network.NfTablesPortMatch
+ 35, // 55: talos.resource.definitions.network.NfTablesPortMatch.ranges:type_name -> talos.resource.definitions.network.PortRange
+ 25, // 56: talos.resource.definitions.network.NfTablesRule.match_o_if_name:type_name -> talos.resource.definitions.network.NfTablesIfNameMatch
+ 73, // 57: talos.resource.definitions.network.NfTablesRule.verdict:type_name -> talos.resource.definitions.enums.NethelpersNfTablesVerdict
+ 28, // 58: talos.resource.definitions.network.NfTablesRule.match_mark:type_name -> talos.resource.definitions.network.NfTablesMark
+ 28, // 59: talos.resource.definitions.network.NfTablesRule.set_mark:type_name -> talos.resource.definitions.network.NfTablesMark
+ 21, // 60: talos.resource.definitions.network.NfTablesRule.match_source_address:type_name -> talos.resource.definitions.network.NfTablesAddressMatch
+ 21, // 61: talos.resource.definitions.network.NfTablesRule.match_destination_address:type_name -> talos.resource.definitions.network.NfTablesAddressMatch
+ 26, // 62: talos.resource.definitions.network.NfTablesRule.match_layer4:type_name -> talos.resource.definitions.network.NfTablesLayer4Match
+ 25, // 63: talos.resource.definitions.network.NfTablesRule.match_i_if_name:type_name -> talos.resource.definitions.network.NfTablesIfNameMatch
+ 23, // 64: talos.resource.definitions.network.NfTablesRule.clamp_mss:type_name -> talos.resource.definitions.network.NfTablesClampMSS
+ 27, // 65: talos.resource.definitions.network.NfTablesRule.match_limit:type_name -> talos.resource.definitions.network.NfTablesLimitMatch
+ 24, // 66: talos.resource.definitions.network.NfTablesRule.match_conntrack_state:type_name -> talos.resource.definitions.network.NfTablesConntrackStateMatch
+ 53, // 67: talos.resource.definitions.network.NodeAddressFilterSpec.include_subnets:type_name -> common.NetIPPrefix
+ 53, // 68: talos.resource.definitions.network.NodeAddressFilterSpec.exclude_subnets:type_name -> common.NetIPPrefix
+ 77, // 69: talos.resource.definitions.network.NodeAddressSortAlgorithmSpec.algorithm:type_name -> talos.resource.definitions.enums.NethelpersAddressSortAlgorithm
+ 53, // 70: talos.resource.definitions.network.NodeAddressSpec.addresses:type_name -> common.NetIPPrefix
+ 77, // 71: talos.resource.definitions.network.NodeAddressSpec.sort_algorithm:type_name -> talos.resource.definitions.enums.NethelpersAddressSortAlgorithm
+ 78, // 72: talos.resource.definitions.network.OperatorSpecSpec.operator:type_name -> talos.resource.definitions.enums.NetworkOperator
+ 7, // 73: talos.resource.definitions.network.OperatorSpecSpec.dhcp4:type_name -> talos.resource.definitions.network.DHCP4OperatorSpec
+ 8, // 74: talos.resource.definitions.network.OperatorSpecSpec.dhcp6:type_name -> talos.resource.definitions.network.DHCP6OperatorSpec
+ 49, // 75: talos.resource.definitions.network.OperatorSpecSpec.vip:type_name -> talos.resource.definitions.network.VIPOperatorSpec
+ 56, // 76: talos.resource.definitions.network.OperatorSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
+ 79, // 77: talos.resource.definitions.network.ProbeSpecSpec.interval:type_name -> google.protobuf.Duration
+ 44, // 78: talos.resource.definitions.network.ProbeSpecSpec.tcp:type_name -> talos.resource.definitions.network.TCPProbeSpec
+ 56, // 79: talos.resource.definitions.network.ProbeSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
+ 57, // 80: talos.resource.definitions.network.ResolverSpecSpec.dns_servers:type_name -> common.NetIP
+ 56, // 81: talos.resource.definitions.network.ResolverSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
+ 57, // 82: talos.resource.definitions.network.ResolverStatusSpec.dns_servers:type_name -> common.NetIP
+ 54, // 83: talos.resource.definitions.network.RouteSpecSpec.family:type_name -> talos.resource.definitions.enums.NethelpersFamily
+ 53, // 84: talos.resource.definitions.network.RouteSpecSpec.destination:type_name -> common.NetIPPrefix
+ 57, // 85: talos.resource.definitions.network.RouteSpecSpec.source:type_name -> common.NetIP
+ 57, // 86: talos.resource.definitions.network.RouteSpecSpec.gateway:type_name -> common.NetIP
+ 80, // 87: talos.resource.definitions.network.RouteSpecSpec.table:type_name -> talos.resource.definitions.enums.NethelpersRoutingTable
+ 55, // 88: talos.resource.definitions.network.RouteSpecSpec.scope:type_name -> talos.resource.definitions.enums.NethelpersScope
+ 81, // 89: talos.resource.definitions.network.RouteSpecSpec.type:type_name -> talos.resource.definitions.enums.NethelpersRouteType
+ 82, // 90: talos.resource.definitions.network.RouteSpecSpec.protocol:type_name -> talos.resource.definitions.enums.NethelpersRouteProtocol
+ 56, // 91: talos.resource.definitions.network.RouteSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
+ 54, // 92: talos.resource.definitions.network.RouteStatusSpec.family:type_name -> talos.resource.definitions.enums.NethelpersFamily
+ 53, // 93: talos.resource.definitions.network.RouteStatusSpec.destination:type_name -> common.NetIPPrefix
+ 57, // 94: talos.resource.definitions.network.RouteStatusSpec.source:type_name -> common.NetIP
+ 57, // 95: talos.resource.definitions.network.RouteStatusSpec.gateway:type_name -> common.NetIP
+ 80, // 96: talos.resource.definitions.network.RouteStatusSpec.table:type_name -> talos.resource.definitions.enums.NethelpersRoutingTable
+ 55, // 97: talos.resource.definitions.network.RouteStatusSpec.scope:type_name -> talos.resource.definitions.enums.NethelpersScope
+ 81, // 98: talos.resource.definitions.network.RouteStatusSpec.type:type_name -> talos.resource.definitions.enums.NethelpersRouteType
+ 82, // 99: talos.resource.definitions.network.RouteStatusSpec.protocol:type_name -> talos.resource.definitions.enums.NethelpersRouteProtocol
+ 79, // 100: talos.resource.definitions.network.TCPProbeSpec.timeout:type_name -> google.protobuf.Duration
+ 56, // 101: talos.resource.definitions.network.TimeServerSpecSpec.config_layer:type_name -> talos.resource.definitions.enums.NetworkConfigLayer
+ 57, // 102: talos.resource.definitions.network.VIPOperatorSpec.ip:type_name -> common.NetIP
+ 47, // 103: talos.resource.definitions.network.VIPOperatorSpec.equinix_metal:type_name -> talos.resource.definitions.network.VIPEquinixMetalSpec
+ 48, // 104: talos.resource.definitions.network.VIPOperatorSpec.h_cloud:type_name -> talos.resource.definitions.network.VIPHCloudSpec
+ 83, // 105: talos.resource.definitions.network.VLANSpec.protocol:type_name -> talos.resource.definitions.enums.NethelpersVLANProtocol
+ 79, // 106: talos.resource.definitions.network.WireguardPeer.persistent_keepalive_interval:type_name -> google.protobuf.Duration
+ 53, // 107: talos.resource.definitions.network.WireguardPeer.allowed_ips:type_name -> common.NetIPPrefix
+ 51, // 108: talos.resource.definitions.network.WireguardSpec.peers:type_name -> talos.resource.definitions.network.WireguardPeer
+ 109, // [109:109] is the sub-list for method output_type
+ 109, // [109:109] is the sub-list for method input_type
+ 109, // [109:109] is the sub-list for extension type_name
+ 109, // [109:109] is the sub-list for extension extendee
+ 0, // [0:109] is the sub-list for field type_name
}
func init() { file_resource_definitions_network_network_proto_init() }
@@ -4699,7 +5195,7 @@ func file_resource_definitions_network_network_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_resource_definitions_network_network_proto_rawDesc,
NumEnums: 0,
- NumMessages: 49,
+ NumMessages: 53,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/pkg/machinery/api/resource/definitions/network/network_vtproto.pb.go b/pkg/machinery/api/resource/definitions/network/network_vtproto.pb.go
index 47224478c1d..633f4910bd0 100644
--- a/pkg/machinery/api/resource/definitions/network/network_vtproto.pb.go
+++ b/pkg/machinery/api/resource/definitions/network/network_vtproto.pb.go
@@ -793,7 +793,7 @@ func (m *DNSResolveCacheSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
-func (m *HardwareAddrSpec) MarshalVT() (dAtA []byte, err error) {
+func (m *EthernetRingsSpec) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
}
@@ -806,12 +806,12 @@ func (m *HardwareAddrSpec) MarshalVT() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *HardwareAddrSpec) MarshalToVT(dAtA []byte) (int, error) {
+func (m *EthernetRingsSpec) MarshalToVT(dAtA []byte) (int, error) {
size := m.SizeVT()
return m.MarshalToSizedBufferVT(dAtA[:size])
}
-func (m *HardwareAddrSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+func (m *EthernetRingsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
if m == nil {
return 0, nil
}
@@ -823,24 +823,75 @@ func (m *HardwareAddrSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
i -= len(m.unknownFields)
copy(dAtA[i:], m.unknownFields)
}
- if len(m.HardwareAddr) > 0 {
- i -= len(m.HardwareAddr)
- copy(dAtA[i:], m.HardwareAddr)
- i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HardwareAddr)))
+ if m.TcpDataSplit {
i--
- dAtA[i] = 0x12
+ if m.TcpDataSplit {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x50
}
- if len(m.Name) > 0 {
- i -= len(m.Name)
- copy(dAtA[i:], m.Name)
- i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ if m.TxPushBufLen != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.TxPushBufLen))
i--
- dAtA[i] = 0xa
+ dAtA[i] = 0x48
+ }
+ if m.RxPush {
+ i--
+ if m.RxPush {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x40
+ }
+ if m.TxPush {
+ i--
+ if m.TxPush {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.CqeSize != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.CqeSize))
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.RxBufLen != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RxBufLen))
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.Tx != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Tx))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.RxJumbo != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RxJumbo))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.RxMini != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RxMini))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Rx != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Rx))
+ i--
+ dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
-func (m *HostDNSConfigSpec) MarshalVT() (dAtA []byte, err error) {
+func (m *EthernetRingsStatus) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
}
@@ -853,12 +904,12 @@ func (m *HostDNSConfigSpec) MarshalVT() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *HostDNSConfigSpec) MarshalToVT(dAtA []byte) (int, error) {
+func (m *EthernetRingsStatus) MarshalToVT(dAtA []byte) (int, error) {
size := m.SizeVT()
return m.MarshalToSizedBufferVT(dAtA[:size])
}
-func (m *HostDNSConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+func (m *EthernetRingsStatus) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
if m == nil {
return 0, nil
}
@@ -870,76 +921,100 @@ func (m *HostDNSConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
i -= len(m.unknownFields)
copy(dAtA[i:], m.unknownFields)
}
- if m.ResolveMemberNames {
+ if m.TcpDataSplit {
i--
- if m.ResolveMemberNames {
+ if m.TcpDataSplit {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
- dAtA[i] = 0x20
+ dAtA[i] = 0x78
}
- if m.ServiceHostDnsAddress != nil {
- if vtmsg, ok := interface{}(m.ServiceHostDnsAddress).(interface {
- MarshalToSizedBufferVT([]byte) (int, error)
- }); ok {
- size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
- } else {
- encoded, err := proto.Marshal(m.ServiceHostDnsAddress)
- if err != nil {
- return 0, err
- }
- i -= len(encoded)
- copy(dAtA[i:], encoded)
- i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))
- }
+ if m.TxPushBufLen != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.TxPushBufLen))
i--
- dAtA[i] = 0x1a
+ dAtA[i] = 0x70
}
- if len(m.ListenAddresses) > 0 {
- for iNdEx := len(m.ListenAddresses) - 1; iNdEx >= 0; iNdEx-- {
- if vtmsg, ok := interface{}(m.ListenAddresses[iNdEx]).(interface {
- MarshalToSizedBufferVT([]byte) (int, error)
- }); ok {
- size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
- } else {
- encoded, err := proto.Marshal(m.ListenAddresses[iNdEx])
- if err != nil {
- return 0, err
- }
- i -= len(encoded)
- copy(dAtA[i:], encoded)
- i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))
- }
- i--
- dAtA[i] = 0x12
+ if m.RxPush {
+ i--
+ if m.RxPush {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
}
+ i--
+ dAtA[i] = 0x68
}
- if m.Enabled {
+ if m.TxPush {
i--
- if m.Enabled {
+ if m.TxPush {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
+ dAtA[i] = 0x60
+ }
+ if m.CqeSize != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.CqeSize))
+ i--
+ dAtA[i] = 0x58
+ }
+ if m.RxBufLen != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RxBufLen))
+ i--
+ dAtA[i] = 0x50
+ }
+ if m.Tx != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Tx))
+ i--
+ dAtA[i] = 0x48
+ }
+ if m.RxJumbo != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RxJumbo))
+ i--
+ dAtA[i] = 0x40
+ }
+ if m.RxMini != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RxMini))
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.Rx != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Rx))
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.TxPushBufLenMax != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.TxPushBufLenMax))
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.TxMax != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.TxMax))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.RxJumboMax != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RxJumboMax))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.RxMiniMax != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RxMiniMax))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.RxMax != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.RxMax))
+ i--
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
-func (m *HostnameSpecSpec) MarshalVT() (dAtA []byte, err error) {
+func (m *EthernetSpecSpec) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
}
@@ -952,12 +1027,12 @@ func (m *HostnameSpecSpec) MarshalVT() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *HostnameSpecSpec) MarshalToVT(dAtA []byte) (int, error) {
+func (m *EthernetSpecSpec) MarshalToVT(dAtA []byte) (int, error) {
size := m.SizeVT()
return m.MarshalToSizedBufferVT(dAtA[:size])
}
-func (m *HostnameSpecSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+func (m *EthernetSpecSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
if m == nil {
return 0, nil
}
@@ -969,29 +1044,20 @@ func (m *HostnameSpecSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
i -= len(m.unknownFields)
copy(dAtA[i:], m.unknownFields)
}
- if m.ConfigLayer != 0 {
- i = protohelpers.EncodeVarint(dAtA, i, uint64(m.ConfigLayer))
- i--
- dAtA[i] = 0x18
- }
- if len(m.Domainname) > 0 {
- i -= len(m.Domainname)
- copy(dAtA[i:], m.Domainname)
- i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Domainname)))
- i--
- dAtA[i] = 0x12
- }
- if len(m.Hostname) > 0 {
- i -= len(m.Hostname)
- copy(dAtA[i:], m.Hostname)
- i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Hostname)))
+ if m.Rings != nil {
+ size, err := m.Rings.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
-func (m *HostnameStatusSpec) MarshalVT() (dAtA []byte, err error) {
+func (m *EthernetStatusSpec) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
}
@@ -1004,12 +1070,12 @@ func (m *HostnameStatusSpec) MarshalVT() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *HostnameStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+func (m *EthernetStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
size := m.SizeVT()
return m.MarshalToSizedBufferVT(dAtA[:size])
}
-func (m *HostnameStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+func (m *EthernetStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
if m == nil {
return 0, nil
}
@@ -1021,24 +1087,63 @@ func (m *HostnameStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
i -= len(m.unknownFields)
copy(dAtA[i:], m.unknownFields)
}
- if len(m.Domainname) > 0 {
- i -= len(m.Domainname)
- copy(dAtA[i:], m.Domainname)
- i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Domainname)))
+ if m.Rings != nil {
+ size, err := m.Rings.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
i--
- dAtA[i] = 0x12
+ dAtA[i] = 0x3a
}
- if len(m.Hostname) > 0 {
- i -= len(m.Hostname)
- copy(dAtA[i:], m.Hostname)
- i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Hostname)))
+ if len(m.PeerModes) > 0 {
+ for iNdEx := len(m.PeerModes) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.PeerModes[iNdEx])
+ copy(dAtA[i:], m.PeerModes[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.PeerModes[iNdEx])))
+ i--
+ dAtA[i] = 0x32
+ }
+ }
+ if len(m.OurModes) > 0 {
+ for iNdEx := len(m.OurModes) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.OurModes[iNdEx])
+ copy(dAtA[i:], m.OurModes[iNdEx])
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.OurModes[iNdEx])))
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if m.Duplex != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Duplex))
i--
- dAtA[i] = 0xa
+ dAtA[i] = 0x20
+ }
+ if m.Port != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Port))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.SpeedMegabits != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.SpeedMegabits))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.LinkState {
+ i--
+ if m.LinkState {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
-func (m *LinkRefreshSpec) MarshalVT() (dAtA []byte, err error) {
+func (m *HardwareAddrSpec) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
}
@@ -1051,12 +1156,12 @@ func (m *LinkRefreshSpec) MarshalVT() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *LinkRefreshSpec) MarshalToVT(dAtA []byte) (int, error) {
+func (m *HardwareAddrSpec) MarshalToVT(dAtA []byte) (int, error) {
size := m.SizeVT()
return m.MarshalToSizedBufferVT(dAtA[:size])
}
-func (m *LinkRefreshSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+func (m *HardwareAddrSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
if m == nil {
return 0, nil
}
@@ -1068,15 +1173,24 @@ func (m *LinkRefreshSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
i -= len(m.unknownFields)
copy(dAtA[i:], m.unknownFields)
}
- if m.Generation != 0 {
- i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Generation))
+ if len(m.HardwareAddr) > 0 {
+ i -= len(m.HardwareAddr)
+ copy(dAtA[i:], m.HardwareAddr)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.HardwareAddr)))
i--
- dAtA[i] = 0x8
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
-func (m *LinkSpecSpec) MarshalVT() (dAtA []byte, err error) {
+func (m *HostDNSConfigSpec) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
}
@@ -1089,12 +1203,12 @@ func (m *LinkSpecSpec) MarshalVT() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *LinkSpecSpec) MarshalToVT(dAtA []byte) (int, error) {
+func (m *HostDNSConfigSpec) MarshalToVT(dAtA []byte) (int, error) {
size := m.SizeVT()
return m.MarshalToSizedBufferVT(dAtA[:size])
}
-func (m *LinkSpecSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+func (m *HostDNSConfigSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
if m == nil {
return 0, nil
}
@@ -1106,10 +1220,246 @@ func (m *LinkSpecSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
i -= len(m.unknownFields)
copy(dAtA[i:], m.unknownFields)
}
- if m.ConfigLayer != 0 {
- i = protohelpers.EncodeVarint(dAtA, i, uint64(m.ConfigLayer))
+ if m.ResolveMemberNames {
i--
- dAtA[i] = 0x70
+ if m.ResolveMemberNames {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.ServiceHostDnsAddress != nil {
+ if vtmsg, ok := interface{}(m.ServiceHostDnsAddress).(interface {
+ MarshalToSizedBufferVT([]byte) (int, error)
+ }); ok {
+ size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ } else {
+ encoded, err := proto.Marshal(m.ServiceHostDnsAddress)
+ if err != nil {
+ return 0, err
+ }
+ i -= len(encoded)
+ copy(dAtA[i:], encoded)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.ListenAddresses) > 0 {
+ for iNdEx := len(m.ListenAddresses) - 1; iNdEx >= 0; iNdEx-- {
+ if vtmsg, ok := interface{}(m.ListenAddresses[iNdEx]).(interface {
+ MarshalToSizedBufferVT([]byte) (int, error)
+ }); ok {
+ size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ } else {
+ encoded, err := proto.Marshal(m.ListenAddresses[iNdEx])
+ if err != nil {
+ return 0, err
+ }
+ i -= len(encoded)
+ copy(dAtA[i:], encoded)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded)))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.Enabled {
+ i--
+ if m.Enabled {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *HostnameSpecSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *HostnameSpecSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *HostnameSpecSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.ConfigLayer != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.ConfigLayer))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Domainname) > 0 {
+ i -= len(m.Domainname)
+ copy(dAtA[i:], m.Domainname)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Domainname)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Hostname) > 0 {
+ i -= len(m.Hostname)
+ copy(dAtA[i:], m.Hostname)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Hostname)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *HostnameStatusSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *HostnameStatusSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *HostnameStatusSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if len(m.Domainname) > 0 {
+ i -= len(m.Domainname)
+ copy(dAtA[i:], m.Domainname)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Domainname)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Hostname) > 0 {
+ i -= len(m.Hostname)
+ copy(dAtA[i:], m.Hostname)
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Hostname)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *LinkRefreshSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LinkRefreshSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *LinkRefreshSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Generation != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.Generation))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *LinkSpecSpec) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LinkSpecSpec) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *LinkSpecSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.ConfigLayer != 0 {
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(m.ConfigLayer))
+ i--
+ dAtA[i] = 0x70
}
if m.Wireguard != nil {
size, err := m.Wireguard.MarshalToSizedBufferVT(dAtA[:i])
@@ -3970,37 +4320,184 @@ func (m *DNSResolveCacheSpec) SizeVT() (n int) {
return n
}
-func (m *HardwareAddrSpec) SizeVT() (n int) {
+func (m *EthernetRingsSpec) SizeVT() (n int) {
if m == nil {
return 0
}
var l int
_ = l
- l = len(m.Name)
- if l > 0 {
- n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ if m.Rx != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Rx))
}
- l = len(m.HardwareAddr)
- if l > 0 {
- n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ if m.RxMini != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.RxMini))
+ }
+ if m.RxJumbo != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.RxJumbo))
+ }
+ if m.Tx != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Tx))
+ }
+ if m.RxBufLen != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.RxBufLen))
+ }
+ if m.CqeSize != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.CqeSize))
+ }
+ if m.TxPush {
+ n += 2
+ }
+ if m.RxPush {
+ n += 2
+ }
+ if m.TxPushBufLen != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.TxPushBufLen))
+ }
+ if m.TcpDataSplit {
+ n += 2
}
n += len(m.unknownFields)
return n
}
-func (m *HostDNSConfigSpec) SizeVT() (n int) {
+func (m *EthernetRingsStatus) SizeVT() (n int) {
if m == nil {
return 0
}
var l int
_ = l
- if m.Enabled {
- n += 2
+ if m.RxMax != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.RxMax))
}
- if len(m.ListenAddresses) > 0 {
- for _, e := range m.ListenAddresses {
- if size, ok := interface{}(e).(interface {
- SizeVT() int
+ if m.RxMiniMax != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.RxMiniMax))
+ }
+ if m.RxJumboMax != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.RxJumboMax))
+ }
+ if m.TxMax != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.TxMax))
+ }
+ if m.TxPushBufLenMax != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.TxPushBufLenMax))
+ }
+ if m.Rx != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Rx))
+ }
+ if m.RxMini != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.RxMini))
+ }
+ if m.RxJumbo != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.RxJumbo))
+ }
+ if m.Tx != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Tx))
+ }
+ if m.RxBufLen != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.RxBufLen))
+ }
+ if m.CqeSize != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.CqeSize))
+ }
+ if m.TxPush {
+ n += 2
+ }
+ if m.RxPush {
+ n += 2
+ }
+ if m.TxPushBufLen != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.TxPushBufLen))
+ }
+ if m.TcpDataSplit {
+ n += 2
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EthernetSpecSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Rings != nil {
+ l = m.Rings.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *EthernetStatusSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.LinkState {
+ n += 2
+ }
+ if m.SpeedMegabits != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.SpeedMegabits))
+ }
+ if m.Port != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Port))
+ }
+ if m.Duplex != 0 {
+ n += 1 + protohelpers.SizeOfVarint(uint64(m.Duplex))
+ }
+ if len(m.OurModes) > 0 {
+ for _, s := range m.OurModes {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if len(m.PeerModes) > 0 {
+ for _, s := range m.PeerModes {
+ l = len(s)
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ }
+ if m.Rings != nil {
+ l = m.Rings.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *HardwareAddrSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ l = len(m.HardwareAddr)
+ if l > 0 {
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
+func (m *HostDNSConfigSpec) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Enabled {
+ n += 2
+ }
+ if len(m.ListenAddresses) > 0 {
+ for _, e := range m.ListenAddresses {
+ if size, ok := interface{}(e).(interface {
+ SizeVT() int
}); ok {
l = size.SizeVT()
} else {
@@ -6441,7 +6938,949 @@ func (m *BridgeSlave) UnmarshalVT(dAtA []byte) error {
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field MasterName", wireType)
}
- var stringLen uint64
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MasterName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BridgeVLANSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BridgeVLANSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BridgeVLANSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FilteringEnabled", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.FilteringEnabled = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DHCP4OperatorSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DHCP4OperatorSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DHCP4OperatorSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RouteMetric", wireType)
+ }
+ m.RouteMetric = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RouteMetric |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SkipHostnameRequest", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SkipHostnameRequest = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DHCP6OperatorSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DHCP6OperatorSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DHCP6OperatorSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Duid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Duid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RouteMetric", wireType)
+ }
+ m.RouteMetric = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RouteMetric |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SkipHostnameRequest", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SkipHostnameRequest = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DNSResolveCacheSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DNSResolveCacheSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DNSResolveCacheSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Status = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EthernetRingsSpec) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EthernetRingsSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EthernetRingsSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rx", wireType)
+ }
+ m.Rx = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Rx |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxMini", wireType)
+ }
+ m.RxMini = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RxMini |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxJumbo", wireType)
+ }
+ m.RxJumbo = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RxJumbo |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tx", wireType)
+ }
+ m.Tx = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Tx |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxBufLen", wireType)
+ }
+ m.RxBufLen = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RxBufLen |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CqeSize", wireType)
+ }
+ m.CqeSize = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CqeSize |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TxPush", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.TxPush = bool(v != 0)
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxPush", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.RxPush = bool(v != 0)
+ case 9:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TxPushBufLen", wireType)
+ }
+ m.TxPushBufLen = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TxPushBufLen |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 10:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TcpDataSplit", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.TcpDataSplit = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EthernetRingsStatus) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EthernetRingsStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EthernetRingsStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxMax", wireType)
+ }
+ m.RxMax = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RxMax |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxMiniMax", wireType)
+ }
+ m.RxMiniMax = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RxMiniMax |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxJumboMax", wireType)
+ }
+ m.RxJumboMax = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RxJumboMax |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TxMax", wireType)
+ }
+ m.TxMax = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TxMax |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TxPushBufLenMax", wireType)
+ }
+ m.TxPushBufLenMax = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TxPushBufLenMax |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rx", wireType)
+ }
+ m.Rx = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Rx |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxMini", wireType)
+ }
+ m.RxMini = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RxMini |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxJumbo", wireType)
+ }
+ m.RxJumbo = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RxJumbo |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 9:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tx", wireType)
+ }
+ m.Tx = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Tx |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 10:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxBufLen", wireType)
+ }
+ m.RxBufLen = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RxBufLen |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 11:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CqeSize", wireType)
+ }
+ m.CqeSize = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CqeSize |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 12:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TxPush", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.TxPush = bool(v != 0)
+ case 13:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RxPush", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.RxPush = bool(v != 0)
+ case 14:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TxPushBufLen", wireType)
+ }
+ m.TxPushBufLen = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protohelpers.ErrIntOverflow
@@ -6451,24 +7890,31 @@ func (m *BridgeSlave) UnmarshalVT(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ m.TxPushBufLen |= uint32(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return protohelpers.ErrInvalidLength
- }
- postIndex := iNdEx + intStringLen
- if postIndex < 0 {
- return protohelpers.ErrInvalidLength
+ case 15:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TcpDataSplit", wireType)
}
- if postIndex > l {
- return io.ErrUnexpectedEOF
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
}
- m.MasterName = string(dAtA[iNdEx:postIndex])
- iNdEx = postIndex
+ m.TcpDataSplit = bool(v != 0)
default:
iNdEx = preIndex
skippy, err := protohelpers.Skip(dAtA[iNdEx:])
@@ -6491,7 +7937,7 @@ func (m *BridgeSlave) UnmarshalVT(dAtA []byte) error {
}
return nil
}
-func (m *BridgeVLANSpec) UnmarshalVT(dAtA []byte) error {
+func (m *EthernetSpecSpec) UnmarshalVT(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -6514,17 +7960,17 @@ func (m *BridgeVLANSpec) UnmarshalVT(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: BridgeVLANSpec: wiretype end group for non-group")
+ return fmt.Errorf("proto: EthernetSpecSpec: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: BridgeVLANSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: EthernetSpecSpec: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
- if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field FilteringEnabled", wireType)
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rings", wireType)
}
- var v int
+ var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protohelpers.ErrIntOverflow
@@ -6534,12 +7980,28 @@ func (m *BridgeVLANSpec) UnmarshalVT(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- v |= int(b&0x7F) << shift
+ msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- m.FilteringEnabled = bool(v != 0)
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Rings == nil {
+ m.Rings = &EthernetRingsSpec{}
+ }
+ if err := m.Rings.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := protohelpers.Skip(dAtA[iNdEx:])
@@ -6562,7 +8024,7 @@ func (m *BridgeVLANSpec) UnmarshalVT(dAtA []byte) error {
}
return nil
}
-func (m *DHCP4OperatorSpec) UnmarshalVT(dAtA []byte) error {
+func (m *EthernetStatusSpec) UnmarshalVT(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -6585,17 +8047,17 @@ func (m *DHCP4OperatorSpec) UnmarshalVT(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: DHCP4OperatorSpec: wiretype end group for non-group")
+ return fmt.Errorf("proto: EthernetStatusSpec: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: DHCP4OperatorSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: EthernetStatusSpec: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field RouteMetric", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field LinkState", wireType)
}
- m.RouteMetric = 0
+ var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protohelpers.ErrIntOverflow
@@ -6605,16 +8067,17 @@ func (m *DHCP4OperatorSpec) UnmarshalVT(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- m.RouteMetric |= uint32(b&0x7F) << shift
+ v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
+ m.LinkState = bool(v != 0)
case 2:
if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field SkipHostnameRequest", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field SpeedMegabits", wireType)
}
- var v int
+ m.SpeedMegabits = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protohelpers.ErrIntOverflow
@@ -6624,68 +8087,16 @@ func (m *DHCP4OperatorSpec) UnmarshalVT(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- v |= int(b&0x7F) << shift
+ m.SpeedMegabits |= int64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- m.SkipHostnameRequest = bool(v != 0)
- default:
- iNdEx = preIndex
- skippy, err := protohelpers.Skip(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if (skippy < 0) || (iNdEx+skippy) < 0 {
- return protohelpers.ErrInvalidLength
- }
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
-func (m *DHCP6OperatorSpec) UnmarshalVT(dAtA []byte) error {
- l := len(dAtA)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return protohelpers.ErrIntOverflow
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: DHCP6OperatorSpec: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: DHCP6OperatorSpec: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Duid", wireType)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
}
- var stringLen uint64
+ m.Port = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protohelpers.ErrIntOverflow
@@ -6695,29 +8106,16 @@ func (m *DHCP6OperatorSpec) UnmarshalVT(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ m.Port |= enums.NethelpersPort(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return protohelpers.ErrInvalidLength
- }
- postIndex := iNdEx + intStringLen
- if postIndex < 0 {
- return protohelpers.ErrInvalidLength
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.Duid = string(dAtA[iNdEx:postIndex])
- iNdEx = postIndex
- case 2:
+ case 4:
if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field RouteMetric", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Duplex", wireType)
}
- m.RouteMetric = 0
+ m.Duplex = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protohelpers.ErrIntOverflow
@@ -6727,16 +8125,16 @@ func (m *DHCP6OperatorSpec) UnmarshalVT(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- m.RouteMetric |= uint32(b&0x7F) << shift
+ m.Duplex |= enums.NethelpersDuplex(b&0x7F) << shift
if b < 0x80 {
break
}
}
- case 3:
- if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field SkipHostnameRequest", wireType)
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field OurModes", wireType)
}
- var v int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protohelpers.ErrIntOverflow
@@ -6746,66 +8144,27 @@ func (m *DHCP6OperatorSpec) UnmarshalVT(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- v |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- m.SkipHostnameRequest = bool(v != 0)
- default:
- iNdEx = preIndex
- skippy, err := protohelpers.Skip(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if (skippy < 0) || (iNdEx+skippy) < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return protohelpers.ErrInvalidLength
}
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
-func (m *DNSResolveCacheSpec) UnmarshalVT(dAtA []byte) error {
- l := len(dAtA)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return protohelpers.ErrIntOverflow
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
}
- if iNdEx >= l {
+ if postIndex > l {
return io.ErrUnexpectedEOF
}
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: DNSResolveCacheSpec: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: DNSResolveCacheSpec: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
+ m.OurModes = append(m.OurModes, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 6:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field PeerModes", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
@@ -6833,7 +8192,43 @@ func (m *DNSResolveCacheSpec) UnmarshalVT(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Status = string(dAtA[iNdEx:postIndex])
+ m.PeerModes = append(m.PeerModes, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rings", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Rings == nil {
+ m.Rings = &EthernetRingsStatus{}
+ }
+ if err := m.Rings.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
iNdEx = postIndex
default:
iNdEx = preIndex
diff --git a/pkg/machinery/config/config/config.go b/pkg/machinery/config/config/config.go
index 4010bd1bb18..063ee97965d 100644
--- a/pkg/machinery/config/config/config.go
+++ b/pkg/machinery/config/config/config.go
@@ -18,4 +18,5 @@ type Config interface { //nolint:interfacebloat
Volumes() VolumesConfig
KubespanConfig() KubespanConfig
PCIDriverRebindConfig() PCIDriverRebindConfig
+ EthernetConfigs() []EthernetConfig
}
diff --git a/pkg/machinery/config/config/network.go b/pkg/machinery/config/config/network.go
index a67aa753523..bede3b26b86 100644
--- a/pkg/machinery/config/config/network.go
+++ b/pkg/machinery/config/config/network.go
@@ -64,3 +64,23 @@ func (w networkRuleConfigWrapper) Rules() []NetworkRule {
},
)
}
+
+// EthernetConfig defines a network interface configuration.
+type EthernetConfig interface {
+ NamedDocument
+ Rings() EthernetRingsConfig
+}
+
+// EthernetRingsConfig defines a configuration for Ethernet link rings.
+type EthernetRingsConfig struct {
+ RX *uint32
+ TX *uint32
+ RXMini *uint32
+ RXJumbo *uint32
+ RXBufLen *uint32
+ CQESize *uint32
+ TXPush *bool
+ RXPush *bool
+ TXPushBufLen *uint32
+ TCPDataSplit *bool
+}
diff --git a/pkg/machinery/config/container/container.go b/pkg/machinery/config/container/container.go
index b8ea60123c4..9ec3b2f1219 100644
--- a/pkg/machinery/config/container/container.go
+++ b/pkg/machinery/config/container/container.go
@@ -215,6 +215,11 @@ func (container *Container) PCIDriverRebindConfig() config.PCIDriverRebindConfig
return config.WrapPCIDriverRebindConfig(findMatchingDocs[config.PCIDriverRebindConfig](container.documents)...)
}
+// EthernetConfigs implements config.Config interface.
+func (container *Container) EthernetConfigs() []config.EthernetConfig {
+ return findMatchingDocs[config.EthernetConfig](container.documents)
+}
+
// Bytes returns source YAML representation (if available) or does default encoding.
func (container *Container) Bytes() ([]byte, error) {
if !container.readonly {
diff --git a/pkg/machinery/config/schemas/config.schema.json b/pkg/machinery/config/schemas/config.schema.json
index 7464717a2b1..546cea31923 100644
--- a/pkg/machinery/config/schemas/config.schema.json
+++ b/pkg/machinery/config/schemas/config.schema.json
@@ -249,6 +249,125 @@
"kind"
]
},
+ "network.EthernetConfigV1Alpha1": {
+ "properties": {
+ "apiVersion": {
+ "enum": [
+ "v1alpha1"
+ ],
+ "title": "apiVersion",
+ "description": "apiVersion is the API version of the resource.\n",
+ "markdownDescription": "apiVersion is the API version of the resource.",
+ "x-intellij-html-description": "\u003cp\u003eapiVersion is the API version of the resource.\u003c/p\u003e\n"
+ },
+ "kind": {
+ "enum": [
+ "EthernetConfig"
+ ],
+ "title": "kind",
+ "description": "kind is the kind of the resource.\n",
+ "markdownDescription": "kind is the kind of the resource.",
+ "x-intellij-html-description": "\u003cp\u003ekind is the kind of the resource.\u003c/p\u003e\n"
+ },
+ "name": {
+ "type": "string",
+ "title": "name",
+ "description": "Name of the link (interface).\n",
+ "markdownDescription": "Name of the link (interface).",
+ "x-intellij-html-description": "\u003cp\u003eName of the link (interface).\u003c/p\u003e\n"
+ },
+ "rings": {
+ "$ref": "#/$defs/network.EthernetRingsConfig",
+ "title": "rings",
+ "description": "Configuration for Ethernet link rings.\n\nThis is similar to ethtool -G command.\n",
+ "markdownDescription": "Configuration for Ethernet link rings.\n\nThis is similar to `ethtool -G` command.",
+ "x-intellij-html-description": "\u003cp\u003eConfiguration for Ethernet link rings.\u003c/p\u003e\n\n\u003cp\u003eThis is similar to \u003ccode\u003eethtool -G\u003c/code\u003e command.\u003c/p\u003e\n"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "apiVersion",
+ "kind",
+ "name"
+ ]
+ },
+ "network.EthernetRingsConfig": {
+ "properties": {
+ "rx": {
+ "type": "integer",
+ "title": "rx",
+ "description": "Number of RX rings.\n",
+ "markdownDescription": "Number of RX rings.",
+ "x-intellij-html-description": "\u003cp\u003eNumber of RX rings.\u003c/p\u003e\n"
+ },
+ "tx": {
+ "type": "integer",
+ "title": "tx",
+ "description": "Number of TX rings.\n",
+ "markdownDescription": "Number of TX rings.",
+ "x-intellij-html-description": "\u003cp\u003eNumber of TX rings.\u003c/p\u003e\n"
+ },
+ "rx-mini": {
+ "type": "integer",
+ "title": "rx-mini",
+ "description": "Number of RX mini rings.\n",
+ "markdownDescription": "Number of RX mini rings.",
+ "x-intellij-html-description": "\u003cp\u003eNumber of RX mini rings.\u003c/p\u003e\n"
+ },
+ "rx-jumbo": {
+ "type": "integer",
+ "title": "rx-jumbo",
+ "description": "Number of RX jumbo rings.\n",
+ "markdownDescription": "Number of RX jumbo rings.",
+ "x-intellij-html-description": "\u003cp\u003eNumber of RX jumbo rings.\u003c/p\u003e\n"
+ },
+ "rx-buf-len": {
+ "type": "integer",
+ "title": "rx-buf-len",
+ "description": "RX buffer length.\n",
+ "markdownDescription": "RX buffer length.",
+ "x-intellij-html-description": "\u003cp\u003eRX buffer length.\u003c/p\u003e\n"
+ },
+ "cqe-size": {
+ "type": "integer",
+ "title": "cqe-size",
+ "description": "CQE size.\n",
+ "markdownDescription": "CQE size.",
+ "x-intellij-html-description": "\u003cp\u003eCQE size.\u003c/p\u003e\n"
+ },
+ "tx-push": {
+ "type": "boolean",
+ "title": "tx-push",
+ "description": "TX push enabled.\n",
+ "markdownDescription": "TX push enabled.",
+ "x-intellij-html-description": "\u003cp\u003eTX push enabled.\u003c/p\u003e\n"
+ },
+ "rx-push": {
+ "type": "boolean",
+ "title": "rx-push",
+ "description": "RX push enabled.\n",
+ "markdownDescription": "RX push enabled.",
+ "x-intellij-html-description": "\u003cp\u003eRX push enabled.\u003c/p\u003e\n"
+ },
+ "tx-push-buf-len": {
+ "type": "integer",
+ "title": "tx-push-buf-len",
+ "description": "TX push buffer length.\n",
+ "markdownDescription": "TX push buffer length.",
+ "x-intellij-html-description": "\u003cp\u003eTX push buffer length.\u003c/p\u003e\n"
+ },
+ "tcp-data-split": {
+ "type": "boolean",
+ "title": "tcp-data-split",
+ "description": "TCP data split enabled.\n",
+ "markdownDescription": "TCP data split enabled.",
+ "x-intellij-html-description": "\u003cp\u003eTCP data split enabled.\u003c/p\u003e\n"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
"network.IngressRule": {
"properties": {
"subnet": {
@@ -3769,6 +3888,9 @@
{
"$ref": "#/$defs/network.DefaultActionConfigV1Alpha1"
},
+ {
+ "$ref": "#/$defs/network.EthernetConfigV1Alpha1"
+ },
{
"$ref": "#/$defs/network.KubespanEndpointsConfigV1Alpha1"
},
diff --git a/pkg/machinery/config/types/network/deep_copy.generated.go b/pkg/machinery/config/types/network/deep_copy.generated.go
index bccb98b5697..3dd4aa7023c 100644
--- a/pkg/machinery/config/types/network/deep_copy.generated.go
+++ b/pkg/machinery/config/types/network/deep_copy.generated.go
@@ -2,7 +2,7 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-// Code generated by "deep-copy -type DefaultActionConfigV1Alpha1 -type KubespanEndpointsConfigV1Alpha1 -type RuleConfigV1Alpha1 -pointer-receiver -header-file ../../../../../hack/boilerplate.txt -o deep_copy.generated.go ."; DO NOT EDIT.
+// Code generated by "deep-copy -type DefaultActionConfigV1Alpha1 -type KubespanEndpointsConfigV1Alpha1 -type EthernetConfigV1Alpha1 -type RuleConfigV1Alpha1 -pointer-receiver -header-file ../../../../../hack/boilerplate.txt -o deep_copy.generated.go ."; DO NOT EDIT.
package network
@@ -26,6 +26,56 @@ func (o *KubespanEndpointsConfigV1Alpha1) DeepCopy() *KubespanEndpointsConfigV1A
return &cp
}
+// DeepCopy generates a deep copy of *EthernetConfigV1Alpha1.
+func (o *EthernetConfigV1Alpha1) DeepCopy() *EthernetConfigV1Alpha1 {
+ var cp EthernetConfigV1Alpha1 = *o
+ if o.RingsConfig != nil {
+ cp.RingsConfig = new(EthernetRingsConfig)
+ *cp.RingsConfig = *o.RingsConfig
+ if o.RingsConfig.RX != nil {
+ cp.RingsConfig.RX = new(uint32)
+ *cp.RingsConfig.RX = *o.RingsConfig.RX
+ }
+ if o.RingsConfig.TX != nil {
+ cp.RingsConfig.TX = new(uint32)
+ *cp.RingsConfig.TX = *o.RingsConfig.TX
+ }
+ if o.RingsConfig.RXMini != nil {
+ cp.RingsConfig.RXMini = new(uint32)
+ *cp.RingsConfig.RXMini = *o.RingsConfig.RXMini
+ }
+ if o.RingsConfig.RXJumbo != nil {
+ cp.RingsConfig.RXJumbo = new(uint32)
+ *cp.RingsConfig.RXJumbo = *o.RingsConfig.RXJumbo
+ }
+ if o.RingsConfig.RXBufLen != nil {
+ cp.RingsConfig.RXBufLen = new(uint32)
+ *cp.RingsConfig.RXBufLen = *o.RingsConfig.RXBufLen
+ }
+ if o.RingsConfig.CQESize != nil {
+ cp.RingsConfig.CQESize = new(uint32)
+ *cp.RingsConfig.CQESize = *o.RingsConfig.CQESize
+ }
+ if o.RingsConfig.TXPush != nil {
+ cp.RingsConfig.TXPush = new(bool)
+ *cp.RingsConfig.TXPush = *o.RingsConfig.TXPush
+ }
+ if o.RingsConfig.RXPush != nil {
+ cp.RingsConfig.RXPush = new(bool)
+ *cp.RingsConfig.RXPush = *o.RingsConfig.RXPush
+ }
+ if o.RingsConfig.TXPushBufLen != nil {
+ cp.RingsConfig.TXPushBufLen = new(uint32)
+ *cp.RingsConfig.TXPushBufLen = *o.RingsConfig.TXPushBufLen
+ }
+ if o.RingsConfig.TCPDataSplit != nil {
+ cp.RingsConfig.TCPDataSplit = new(bool)
+ *cp.RingsConfig.TCPDataSplit = *o.RingsConfig.TCPDataSplit
+ }
+ }
+ return &cp
+}
+
// DeepCopy generates a deep copy of *RuleConfigV1Alpha1.
func (o *RuleConfigV1Alpha1) DeepCopy() *RuleConfigV1Alpha1 {
var cp RuleConfigV1Alpha1 = *o
diff --git a/pkg/machinery/config/types/network/ethernet.go b/pkg/machinery/config/types/network/ethernet.go
new file mode 100644
index 00000000000..c57a063c527
--- /dev/null
+++ b/pkg/machinery/config/types/network/ethernet.go
@@ -0,0 +1,124 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package network
+
+//docgen:jsonschema
+
+import (
+ "github.com/siderolabs/go-pointer"
+
+ "github.com/siderolabs/talos/pkg/machinery/config/config"
+ "github.com/siderolabs/talos/pkg/machinery/config/internal/registry"
+ "github.com/siderolabs/talos/pkg/machinery/config/types/meta"
+)
+
+// EthernetKind is a Ethernet config document kind.
+const EthernetKind = "EthernetConfig"
+
+func init() {
+ registry.Register(EthernetKind, func(version string) config.Document {
+ switch version {
+ case "v1alpha1":
+ return &EthernetConfigV1Alpha1{}
+ default:
+ return nil
+ }
+ })
+}
+
+// Check interfaces.
+var (
+ _ config.EthernetConfig = &EthernetConfigV1Alpha1{}
+ _ config.NamedDocument = &EthernetConfigV1Alpha1{}
+)
+
+// EthernetConfigV1Alpha1 is a config document to configure Ethernet interfaces.
+//
+// examples:
+// - value: exampleEthernetConfigV1Alpha1()
+// alias: EthernetConfig
+// schemaRoot: true
+// schemaMeta: v1alpha1/EthernetConfig
+type EthernetConfigV1Alpha1 struct {
+ meta.Meta `yaml:",inline"`
+ // description: |
+ // Name of the link (interface).
+ // schemaRequired: true
+ MetaName string `yaml:"name"`
+ // description: |
+ // Configuration for Ethernet link rings.
+ //
+ // This is similar to `ethtool -G` command.
+ RingsConfig *EthernetRingsConfig `yaml:"rings,omitempty"`
+}
+
+// EthernetRingsConfig is a configuration for Ethernet link rings.
+type EthernetRingsConfig struct {
+ // description: |
+ // Number of RX rings.
+ RX *uint32 `yaml:"rx,omitempty"`
+ // description: |
+ // Number of TX rings.
+ TX *uint32 `yaml:"tx,omitempty"`
+ // description: |
+ // Number of RX mini rings.
+ RXMini *uint32 `yaml:"rx-mini,omitempty"`
+ // description: |
+ // Number of RX jumbo rings.
+ RXJumbo *uint32 `yaml:"rx-jumbo,omitempty"`
+ // description: |
+ // RX buffer length.
+ RXBufLen *uint32 `yaml:"rx-buf-len,omitempty"`
+ // description: |
+ // CQE size.
+ CQESize *uint32 `yaml:"cqe-size,omitempty"`
+ // description: |
+ // TX push enabled.
+ TXPush *bool `yaml:"tx-push,omitempty"`
+ // description: |
+ // RX push enabled.
+ RXPush *bool `yaml:"rx-push,omitempty"`
+ // description: |
+ // TX push buffer length.
+ TXPushBufLen *uint32 `yaml:"tx-push-buf-len,omitempty"`
+ // description: |
+ // TCP data split enabled.
+ TCPDataSplit *bool `yaml:"tcp-data-split,omitempty"`
+}
+
+// NewEthernetConfigV1Alpha1 creates a new EthernetConfig config document.
+func NewEthernetConfigV1Alpha1(name string) *EthernetConfigV1Alpha1 {
+ return &EthernetConfigV1Alpha1{
+ Meta: meta.Meta{
+ MetaKind: EthernetKind,
+ MetaAPIVersion: "v1alpha1",
+ },
+ MetaName: name,
+ }
+}
+
+func exampleEthernetConfigV1Alpha1() *EthernetConfigV1Alpha1 {
+ cfg := NewEthernetConfigV1Alpha1("enp0s2")
+ cfg.RingsConfig = &EthernetRingsConfig{
+ RX: pointer.To[uint32](256),
+ }
+
+ return cfg
+}
+
+// Clone implements config.Document interface.
+func (s *EthernetConfigV1Alpha1) Clone() config.Document {
+ return s.DeepCopy()
+}
+
+// Name implements config.NamedDocument interface.
+func (s *EthernetConfigV1Alpha1) Name() string {
+ return s.MetaName
+}
+
+// Rings implements config.EthernetConfig interface.
+func (s *EthernetConfigV1Alpha1) Rings() config.EthernetRingsConfig {
+ return config.EthernetRingsConfig(pointer.SafeDeref(s.RingsConfig))
+}
diff --git a/pkg/machinery/config/types/network/ethernet_test.go b/pkg/machinery/config/types/network/ethernet_test.go
new file mode 100644
index 00000000000..804a64a9d06
--- /dev/null
+++ b/pkg/machinery/config/types/network/ethernet_test.go
@@ -0,0 +1,59 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package network_test
+
+import (
+ _ "embed"
+ "testing"
+
+ "github.com/siderolabs/go-pointer"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+
+ "github.com/siderolabs/talos/pkg/machinery/config/configloader"
+ "github.com/siderolabs/talos/pkg/machinery/config/encoder"
+ "github.com/siderolabs/talos/pkg/machinery/config/types/meta"
+ "github.com/siderolabs/talos/pkg/machinery/config/types/network"
+)
+
+//go:embed testdata/ethernetconfig.yaml
+var expectedEthernetConfigDocument []byte
+
+func TestEthernetConfigMarshalStability(t *testing.T) {
+ t.Parallel()
+
+ cfg := network.NewEthernetConfigV1Alpha1("enp0s1")
+ cfg.RingsConfig = &network.EthernetRingsConfig{
+ RX: pointer.To[uint32](16),
+ }
+
+ marshaled, err := encoder.NewEncoder(cfg, encoder.WithComments(encoder.CommentsDisabled)).Encode()
+ require.NoError(t, err)
+
+ t.Log(string(marshaled))
+
+ assert.Equal(t, expectedEthernetConfigDocument, marshaled)
+}
+
+func TestEthernetConfigUnmarshal(t *testing.T) {
+ t.Parallel()
+
+ provider, err := configloader.NewFromBytes(expectedEthernetConfigDocument)
+ require.NoError(t, err)
+
+ docs := provider.Documents()
+ require.Len(t, docs, 1)
+
+ assert.Equal(t, &network.EthernetConfigV1Alpha1{
+ Meta: meta.Meta{
+ MetaAPIVersion: "v1alpha1",
+ MetaKind: network.EthernetKind,
+ },
+ MetaName: "enp0s1",
+ RingsConfig: &network.EthernetRingsConfig{
+ RX: pointer.To[uint32](16),
+ },
+ }, docs[0])
+}
diff --git a/pkg/machinery/config/types/network/network.go b/pkg/machinery/config/types/network/network.go
index 558330ddee1..5e903f42eb4 100644
--- a/pkg/machinery/config/types/network/network.go
+++ b/pkg/machinery/config/types/network/network.go
@@ -5,6 +5,6 @@
// Package network provides network machine configuration documents.
package network
-//go:generate docgen -output network_doc.go network.go default_action_config.go kubespan_endpoints.go port_range.go rule_config.go
+//go:generate docgen -output network_doc.go network.go default_action_config.go ethernet.go kubespan_endpoints.go port_range.go rule_config.go
-//go:generate deep-copy -type DefaultActionConfigV1Alpha1 -type KubespanEndpointsConfigV1Alpha1 -type RuleConfigV1Alpha1 -pointer-receiver -header-file ../../../../../hack/boilerplate.txt -o deep_copy.generated.go .
+//go:generate deep-copy -type DefaultActionConfigV1Alpha1 -type KubespanEndpointsConfigV1Alpha1 -type EthernetConfigV1Alpha1 -type RuleConfigV1Alpha1 -pointer-receiver -header-file ../../../../../hack/boilerplate.txt -o deep_copy.generated.go .
diff --git a/pkg/machinery/config/types/network/network_doc.go b/pkg/machinery/config/types/network/network_doc.go
index 95df2655444..1d36ff93274 100644
--- a/pkg/machinery/config/types/network/network_doc.go
+++ b/pkg/machinery/config/types/network/network_doc.go
@@ -37,6 +37,123 @@ func (DefaultActionConfigV1Alpha1) Doc() *encoder.Doc {
return doc
}
+func (EthernetConfigV1Alpha1) Doc() *encoder.Doc {
+ doc := &encoder.Doc{
+ Type: "EthernetConfig",
+ Comments: [3]string{"" /* encoder.HeadComment */, "EthernetConfig is a config document to configure Ethernet interfaces." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ Description: "EthernetConfig is a config document to configure Ethernet interfaces.",
+ Fields: []encoder.Doc{
+ {},
+ {
+ Name: "name",
+ Type: "string",
+ Note: "",
+ Description: "Name of the link (interface).",
+ Comments: [3]string{"" /* encoder.HeadComment */, "Name of the link (interface)." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "rings",
+ Type: "EthernetRingsConfig",
+ Note: "",
+ Description: "Configuration for Ethernet link rings.\n\nThis is similar to `ethtool -G` command.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "Configuration for Ethernet link rings." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ },
+ }
+
+ doc.AddExample("", exampleEthernetConfigV1Alpha1())
+
+ return doc
+}
+
+func (EthernetRingsConfig) Doc() *encoder.Doc {
+ doc := &encoder.Doc{
+ Type: "EthernetRingsConfig",
+ Comments: [3]string{"" /* encoder.HeadComment */, "EthernetRingsConfig is a configuration for Ethernet link rings." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ Description: "EthernetRingsConfig is a configuration for Ethernet link rings.",
+ AppearsIn: []encoder.Appearance{
+ {
+ TypeName: "EthernetConfigV1Alpha1",
+ FieldName: "rings",
+ },
+ },
+ Fields: []encoder.Doc{
+ {
+ Name: "rx",
+ Type: "uint32",
+ Note: "",
+ Description: "Number of RX rings.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "Number of RX rings." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "tx",
+ Type: "uint32",
+ Note: "",
+ Description: "Number of TX rings.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "Number of TX rings." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "rx-mini",
+ Type: "uint32",
+ Note: "",
+ Description: "Number of RX mini rings.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "Number of RX mini rings." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "rx-jumbo",
+ Type: "uint32",
+ Note: "",
+ Description: "Number of RX jumbo rings.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "Number of RX jumbo rings." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "rx-buf-len",
+ Type: "uint32",
+ Note: "",
+ Description: "RX buffer length.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "RX buffer length." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "cqe-size",
+ Type: "uint32",
+ Note: "",
+ Description: "CQE size.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "CQE size." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "tx-push",
+ Type: "bool",
+ Note: "",
+ Description: "TX push enabled.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "TX push enabled." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "rx-push",
+ Type: "bool",
+ Note: "",
+ Description: "RX push enabled.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "RX push enabled." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "tx-push-buf-len",
+ Type: "uint32",
+ Note: "",
+ Description: "TX push buffer length.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "TX push buffer length." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ {
+ Name: "tcp-data-split",
+ Type: "bool",
+ Note: "",
+ Description: "TCP data split enabled.",
+ Comments: [3]string{"" /* encoder.HeadComment */, "TCP data split enabled." /* encoder.LineComment */, "" /* encoder.FootComment */},
+ },
+ },
+ }
+
+ return doc
+}
+
func (KubespanEndpointsConfigV1Alpha1) Doc() *encoder.Doc {
doc := &encoder.Doc{
Type: "KubeSpanEndpointsConfig",
@@ -178,6 +295,8 @@ func GetFileDoc() *encoder.FileDoc {
Description: "Package network provides network machine configuration documents.\n",
Structs: []*encoder.Doc{
DefaultActionConfigV1Alpha1{}.Doc(),
+ EthernetConfigV1Alpha1{}.Doc(),
+ EthernetRingsConfig{}.Doc(),
KubespanEndpointsConfigV1Alpha1{}.Doc(),
RuleConfigV1Alpha1{}.Doc(),
RulePortSelector{}.Doc(),
diff --git a/pkg/machinery/config/types/network/testdata/ethernetconfig.yaml b/pkg/machinery/config/types/network/testdata/ethernetconfig.yaml
new file mode 100644
index 00000000000..ffc553a2c87
--- /dev/null
+++ b/pkg/machinery/config/types/network/testdata/ethernetconfig.yaml
@@ -0,0 +1,5 @@
+apiVersion: v1alpha1
+kind: EthernetConfig
+name: enp0s1
+rings:
+ rx: 16
diff --git a/pkg/machinery/go.mod b/pkg/machinery/go.mod
index 78b0717aa85..f2003a94e55 100644
--- a/pkg/machinery/go.mod
+++ b/pkg/machinery/go.mod
@@ -1,21 +1,26 @@
module github.com/siderolabs/talos/pkg/machinery
-go 1.23.3
+go 1.23.5
-// forked go-yaml that introduces RawYAML interface, which can be used to populate YAML fields using bytes
-// which are then encoded as a valid YAML blocks with proper indentiation
-replace gopkg.in/yaml.v3 => github.com/unix4ever/yaml v0.0.0-20220527175918-f17b0f05cf2c
+replace (
+ // forked ethtool introduces missing APIs
+ github.com/mdlayher/ethtool => github.com/siderolabs/ethtool v0.0.0-20250204161245-ee04fc1b1856
+
+ // forked go-yaml that introduces RawYAML interface, which can be used to populate YAML fields using bytes
+ // which are then encoded as a valid YAML blocks with proper indentiation
+ gopkg.in/yaml.v3 => github.com/unix4ever/yaml v0.0.0-20220527175918-f17b0f05cf2c
+)
require (
github.com/blang/semver/v4 v4.0.0
- github.com/containerd/go-cni v1.1.11
- github.com/cosi-project/runtime v0.8.1
+ github.com/containerd/go-cni v1.1.12
+ github.com/cosi-project/runtime v0.9.2
github.com/dustin/go-humanize v1.0.1
github.com/emicklei/dot v1.6.4
- github.com/evanphx/json-patch v5.9.0+incompatible
+ github.com/evanphx/json-patch v5.9.11+incompatible
github.com/fatih/color v1.18.0
github.com/ghodss/yaml v1.0.0
- github.com/google/cel-go v0.22.1
+ github.com/google/cel-go v0.23.2
github.com/hashicorp/go-multierror v1.1.1
github.com/hexops/gotextdiff v1.0.3
github.com/jsimonetti/rtnetlink/v2 v2.0.3-0.20241216183107-2d6e9f8ad3f2
@@ -30,21 +35,21 @@ require (
github.com/siderolabs/go-blockdevice/v2 v2.0.13
github.com/siderolabs/go-pointer v1.0.0
github.com/siderolabs/net v0.4.0
- github.com/siderolabs/protoenc v0.2.1
+ github.com/siderolabs/protoenc v0.2.2
github.com/stretchr/testify v1.10.0
go.uber.org/zap v1.27.0
- google.golang.org/genproto/googleapis/api v0.0.0-20241223144023-3abc09e42ca8
- google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8
- google.golang.org/grpc v1.69.2
- google.golang.org/protobuf v1.36.1
+ google.golang.org/genproto/googleapis/api v0.0.0-20250127172529-29210b9bc287
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287
+ google.golang.org/grpc v1.70.0
+ google.golang.org/protobuf v1.36.4
gopkg.in/yaml.v3 v3.0.1
)
require (
- cel.dev/expr v0.18.0 // indirect
- github.com/ProtonMail/go-crypto v1.1.3 // indirect
+ cel.dev/expr v0.19.2 // indirect
+ github.com/ProtonMail/go-crypto v1.1.5 // indirect
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f // indirect
- github.com/ProtonMail/gopenpgp/v2 v2.8.1 // indirect
+ github.com/ProtonMail/gopenpgp/v2 v2.8.2 // indirect
github.com/adrg/xdg v0.5.3 // indirect
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
@@ -53,25 +58,27 @@ require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/gertd/go-pluralize v0.2.1 // indirect
github.com/google/go-cmp v0.6.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/josharian/native v1.1.0 // indirect
- github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mdlayher/genetlink v1.3.2 // indirect
github.com/mdlayher/netlink v1.7.2 // indirect
github.com/mdlayher/socket v0.5.1 // indirect
+ github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/sasha-s/go-deadlock v0.3.5 // indirect
github.com/stoewer/go-strcase v1.3.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.31.0 // indirect
- golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/sync v0.10.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/text v0.21.0 // indirect
- golang.org/x/time v0.8.0 // indirect
+ golang.org/x/crypto v0.32.0 // indirect
+ golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c // indirect
+ golang.org/x/net v0.34.0 // indirect
+ golang.org/x/sync v0.11.0 // indirect
+ golang.org/x/sys v0.30.0 // indirect
+ golang.org/x/text v0.22.0 // indirect
+ golang.org/x/time v0.10.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
diff --git a/pkg/machinery/go.sum b/pkg/machinery/go.sum
index 35c5b8c158b..6fbc015b436 100644
--- a/pkg/machinery/go.sum
+++ b/pkg/machinery/go.sum
@@ -1,31 +1,31 @@
-cel.dev/expr v0.18.0 h1:CJ6drgk+Hf96lkLikr4rFf19WrU0BOWEihyZnI2TAzo=
-cel.dev/expr v0.18.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
-github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
-github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
+cel.dev/expr v0.19.2 h1:V354PbqIXr9IQdwy4SYA4xa0HXaWq1BUPAGzugBY5V4=
+cel.dev/expr v0.19.2/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
+github.com/ProtonMail/go-crypto v1.1.5 h1:eoAQfK2dwL+tFSFpr7TbOaPNUbPiJj4fLYwwGE1FQO4=
+github.com/ProtonMail/go-crypto v1.1.5/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k=
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw=
-github.com/ProtonMail/gopenpgp/v2 v2.8.1 h1:WGE1THOhOnLurL0+N4BOlLkIhjEO7YVZgmpgyDHN56A=
-github.com/ProtonMail/gopenpgp/v2 v2.8.1/go.mod h1:4PUgqGSQjd7HldUbAgMmC69+Gv6DO8NomCNi0y8+BTc=
+github.com/ProtonMail/gopenpgp/v2 v2.8.2 h1:fe/XagfxkHRCr+cLFMcoF7XwaASRGSmK/fmcmK8yo6o=
+github.com/ProtonMail/gopenpgp/v2 v2.8.2/go.mod h1:pPWZyRQWpQ7g8NWsdZmUynNZ1R09k4MdbSHvm+KooqM=
github.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78=
github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ=
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/brianvoe/gofakeit/v6 v6.24.0 h1:74yq7RRz/noddscZHRS2T84oHZisW9muwbb8sRnU52A=
-github.com/brianvoe/gofakeit/v6 v6.24.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8=
+github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4=
+github.com/brianvoe/gofakeit/v6 v6.28.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cilium/ebpf v0.12.3 h1:8ht6F9MquybnY97at+VDZb3eQQr8ev79RueWeVaEcG4=
github.com/cilium/ebpf v0.12.3/go.mod h1:TctK1ivibvI3znr66ljgi4hqOT8EYQjz1KWBfb1UVgM=
github.com/cloudflare/circl v1.5.0 h1:hxIWksrX6XN5a1L2TI/h53AGPhNHoUBo+TD1ms9+pys=
github.com/cloudflare/circl v1.5.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
-github.com/containerd/go-cni v1.1.11 h1:fWt1K15AmSLsEfa57N+qYw4NeGPiQKYq1pjNGJwV9mc=
-github.com/containerd/go-cni v1.1.11/go.mod h1:/Y/sL8yqYQn1ZG1om1OncJB1W4zN3YmjfP/ShCzG/OY=
+github.com/containerd/go-cni v1.1.12 h1:wm/5VD/i255hjM4uIZjBRiEQ7y98W9ACy/mHeLi4+94=
+github.com/containerd/go-cni v1.1.12/go.mod h1:+jaqRBdtW5faJxj2Qwg1Of7GsV66xcvnCx4mSJtUlxU=
github.com/containernetworking/cni v1.2.3 h1:hhOcjNVUQTnzdRJ6alC5XF+wd9mfGIUaj8FuJbEslXM=
github.com/containernetworking/cni v1.2.3/go.mod h1:DuLgF+aPd3DzcTQTtp/Nvl1Kim23oFKdm2okJzBQA5M=
-github.com/cosi-project/runtime v0.8.1 h1:zM5g3cOhvN8HjZ6iBtWwwP4KWmpXSTfMXo3QUZiRjhI=
-github.com/cosi-project/runtime v0.8.1/go.mod h1:sNqLK/aBb8862xGS4HLAcwTloDuH0TeU3N1+qr3TmAs=
+github.com/cosi-project/runtime v0.9.2 h1:l0kugKjZUFrmBFwkza2lt2vA1u8PBuWbrbB2HvPmkTs=
+github.com/cosi-project/runtime v0.9.2/go.mod h1:dzAY2bdrPv0y39FyJOOURMkx3Ae7erMVoxX/N0OAZQU=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
@@ -34,8 +34,8 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/emicklei/dot v1.6.4 h1:cG9ycT67d9Yw22G+mAb4XiuUz6E6H1S0zePp/5Cwe/c=
github.com/emicklei/dot v1.6.4/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=
-github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls=
-github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
+github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/gertd/go-pluralize v0.2.1 h1:M3uASbVjMnTsPb0PNqg+E/24Vwigyo/tvyMTtAlLgiA=
@@ -50,16 +50,16 @@ github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1v
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/google/cel-go v0.22.1 h1:AfVXx3chM2qwoSbM7Da8g8hX8OVSkBFwX+rz2+PcK40=
-github.com/google/cel-go v0.22.1/go.mod h1:BuznPXXfQDpXKWQ9sPW3TzlAJN5zzFe+i9tIs0yC4s8=
+github.com/google/cel-go v0.23.2 h1:UdEe3CvQh3Nv+E/j9r1Y//WO0K0cSyD7/y0bzyLIMI4=
+github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx1J5Wwo=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg=
github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0 h1:VD1gqscl4nYs1YxVuSdemTrSgTKrwOWDK0FVFMqm+Cg=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.0/go.mod h1:4EgsQoS4TOhJizV+JTFg40qx1Ofh3XmXEQNBpgvNT40=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -75,13 +75,10 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
-github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
+github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mdlayher/ethtool v0.2.0 h1:akcA4WZVWozzirPASeMq8qgLkxpF3ykftVXwnrMKrhY=
-github.com/mdlayher/ethtool v0.2.0/go.mod h1:W0pIBrNPK1TslIN4Z9wt1EVbay66Kbvek2z2f29VBfw=
github.com/mdlayher/genetlink v1.3.2 h1:KdrNKe+CTu+IbZnm/GVUMXSqBBLqcGpRDa0xkQy56gw=
github.com/mdlayher/genetlink v1.3.2/go.mod h1:tcC3pkCrPUGIKKsCsp0B3AdaaKuHtaxoJRz3cc+528o=
github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g=
@@ -94,6 +91,8 @@ github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk=
github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0=
github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk=
github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
+github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=
+github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -108,8 +107,12 @@ github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkB
github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
+github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=
+github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U=
github.com/siderolabs/crypto v0.5.1 h1:aZEUTZBoP8rH+0TqQAlUgazriPh89MrXf4R+th+m6ps=
github.com/siderolabs/crypto v0.5.1/go.mod h1:7RHC7eUKBx6RLS2lDaNXrQ83zY9iPH/aQSTxk1I4/j4=
+github.com/siderolabs/ethtool v0.0.0-20250204161245-ee04fc1b1856 h1:LQe9knKlZXGdrm0J/bcojk42qqhfBoPpiqqgXQa/7pY=
+github.com/siderolabs/ethtool v0.0.0-20250204161245-ee04fc1b1856/go.mod h1:3u47fCDlOQGM7IhXhUB3uPEcjdQxGmK53/45kEg1HDM=
github.com/siderolabs/gen v0.8.0 h1:Pj93+hexkk5hQ7izjJ6YXnEWc8vlzOmDwFz13/VzS7o=
github.com/siderolabs/gen v0.8.0/go.mod h1:an3a2Y53O7kUjnnK8Bfu3gewtvnIOu5RTU6HalFtXQQ=
github.com/siderolabs/go-api-signature v0.3.6 h1:wDIsXbpl7Oa/FXvxB6uz4VL9INA9fmr3EbmjEZYFJrU=
@@ -122,8 +125,8 @@ github.com/siderolabs/go-retry v0.3.3 h1:zKV+S1vumtO72E6sYsLlmIdV/G/GcYSBLiEx/c9
github.com/siderolabs/go-retry v0.3.3/go.mod h1:Ff/VGc7v7un4uQg3DybgrmOWHEmJ8BzZds/XNn/BqMI=
github.com/siderolabs/net v0.4.0 h1:1bOgVay/ijPkJz4qct98nHsiB/ysLQU0KLoBC4qLm7I=
github.com/siderolabs/net v0.4.0/go.mod h1:/ibG+Hm9HU27agp5r9Q3eZicEfjquzNzQNux5uEk0kM=
-github.com/siderolabs/protoenc v0.2.1 h1:BqxEmeWQeMpNP3R6WrPqDatX8sM/r4t97OP8mFmg6GA=
-github.com/siderolabs/protoenc v0.2.1/go.mod h1:StTHxjet1g11GpNAWiATgc8K0HMKiFSEVVFOa/H0otc=
+github.com/siderolabs/protoenc v0.2.2 h1:vVQDrTjV+QSOiroWTca6h2Sn5XWYk7VSUPav5J0Qp54=
+github.com/siderolabs/protoenc v0.2.2/go.mod h1:gtkHkjSCFEceXUHUzKDpnuvXu1mab9D3pVxTnQN+z+o=
github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -141,16 +144,16 @@ github.com/unix4ever/yaml v0.0.0-20220527175918-f17b0f05cf2c/go.mod h1:K4uyk7z7B
github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
-go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
-go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
-go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
-go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
-go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
-go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
-go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
-go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
-go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
+go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
+go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
+go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
+go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
+go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
+go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
+go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU=
+go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ=
+go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
+go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
@@ -159,34 +162,33 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
-golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
-golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
-golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
+golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
+golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
+golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c h1:KL/ZBHXgKGVmuZBZ01Lt57yE5ws8ZPSkkihmEyq7FXc=
+golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
-golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
+golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
-golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
+golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
-golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
+golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
@@ -195,25 +197,25 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg=
-golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
+golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
+golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4=
+golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o=
-golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q=
+golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE=
+golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/genproto/googleapis/api v0.0.0-20241223144023-3abc09e42ca8 h1:st3LcW/BPi75W4q1jJTEor/QWwbNlPlDG0JTn6XhZu0=
-google.golang.org/genproto/googleapis/api v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:klhJGKFyG8Tn50enBn7gizg4nXGXJ+jqEREdCWaPcV4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA=
-google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
-google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
-google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
-google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/genproto/googleapis/api v0.0.0-20250127172529-29210b9bc287 h1:A2ni10G3UlplFrWdCDJTl7D7mJ7GSRm37S+PDimaKRw=
+google.golang.org/genproto/googleapis/api v0.0.0-20250127172529-29210b9bc287/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287 h1:J1H9f+LEdWAfHcez/4cvaVBox7cOYT+IU6rgqj5x++8=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250127172529-29210b9bc287/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk=
+google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
+google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
+google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
+google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
diff --git a/pkg/machinery/resources/network/address_spec.go b/pkg/machinery/resources/network/address_spec.go
index 642bc53cdeb..44d1d7864ee 100644
--- a/pkg/machinery/resources/network/address_spec.go
+++ b/pkg/machinery/resources/network/address_spec.go
@@ -16,7 +16,7 @@ import (
"github.com/siderolabs/talos/pkg/machinery/proto"
)
-//go:generate deep-copy -type AddressSpecSpec -type AddressStatusSpec -type DNSResolveCacheSpec -type HardwareAddrSpec -type HostDNSConfigSpec -type HostnameSpecSpec -type HostnameStatusSpec -type LinkRefreshSpec -type LinkSpecSpec -type LinkStatusSpec -type NfTablesChainSpec -type NodeAddressSpec -type NodeAddressSortAlgorithmSpec -type NodeAddressFilterSpec -type OperatorSpecSpec -type ProbeSpecSpec -type ProbeStatusSpec -type ResolverSpecSpec -type ResolverStatusSpec -type RouteSpecSpec -type RouteStatusSpec -type StatusSpec -type TimeServerSpecSpec -type TimeServerStatusSpec -header-file ../../../../hack/boilerplate.txt -o deep_copy.generated.go .
+//go:generate deep-copy -type AddressSpecSpec -type AddressStatusSpec -type DNSResolveCacheSpec -type EthernetSpecSpec -type EthernetStatusSpec -type HardwareAddrSpec -type HostDNSConfigSpec -type HostnameSpecSpec -type HostnameStatusSpec -type LinkRefreshSpec -type LinkSpecSpec -type LinkStatusSpec -type NfTablesChainSpec -type NodeAddressSpec -type NodeAddressSortAlgorithmSpec -type NodeAddressFilterSpec -type OperatorSpecSpec -type ProbeSpecSpec -type ProbeStatusSpec -type ResolverSpecSpec -type ResolverStatusSpec -type RouteSpecSpec -type RouteStatusSpec -type StatusSpec -type TimeServerSpecSpec -type TimeServerStatusSpec -header-file ../../../../hack/boilerplate.txt -o deep_copy.generated.go .
// AddressSpecType is type of AddressSpec resource.
const AddressSpecType = resource.Type("AddressSpecs.net.talos.dev")
diff --git a/pkg/machinery/resources/network/deep_copy.generated.go b/pkg/machinery/resources/network/deep_copy.generated.go
index 74c66fd4dd5..b644e1a5289 100644
--- a/pkg/machinery/resources/network/deep_copy.generated.go
+++ b/pkg/machinery/resources/network/deep_copy.generated.go
@@ -2,7 +2,7 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-// Code generated by "deep-copy -type AddressSpecSpec -type AddressStatusSpec -type DNSResolveCacheSpec -type HardwareAddrSpec -type HostDNSConfigSpec -type HostnameSpecSpec -type HostnameStatusSpec -type LinkRefreshSpec -type LinkSpecSpec -type LinkStatusSpec -type NfTablesChainSpec -type NodeAddressSpec -type NodeAddressSortAlgorithmSpec -type NodeAddressFilterSpec -type OperatorSpecSpec -type ProbeSpecSpec -type ProbeStatusSpec -type ResolverSpecSpec -type ResolverStatusSpec -type RouteSpecSpec -type RouteStatusSpec -type StatusSpec -type TimeServerSpecSpec -type TimeServerStatusSpec -header-file ../../../../hack/boilerplate.txt -o deep_copy.generated.go ."; DO NOT EDIT.
+// Code generated by "deep-copy -type AddressSpecSpec -type AddressStatusSpec -type DNSResolveCacheSpec -type EthernetSpecSpec -type EthernetStatusSpec -type HardwareAddrSpec -type HostDNSConfigSpec -type HostnameSpecSpec -type HostnameStatusSpec -type LinkRefreshSpec -type LinkSpecSpec -type LinkStatusSpec -type NfTablesChainSpec -type NodeAddressSpec -type NodeAddressSortAlgorithmSpec -type NodeAddressFilterSpec -type OperatorSpecSpec -type ProbeSpecSpec -type ProbeStatusSpec -type ResolverSpecSpec -type ResolverStatusSpec -type RouteSpecSpec -type RouteStatusSpec -type StatusSpec -type TimeServerSpecSpec -type TimeServerStatusSpec -header-file ../../../../hack/boilerplate.txt -o deep_copy.generated.go ."; DO NOT EDIT.
package network
@@ -30,6 +30,134 @@ func (o DNSResolveCacheSpec) DeepCopy() DNSResolveCacheSpec {
return cp
}
+// DeepCopy generates a deep copy of EthernetSpecSpec.
+func (o EthernetSpecSpec) DeepCopy() EthernetSpecSpec {
+ var cp EthernetSpecSpec = o
+ if o.Rings.RX != nil {
+ cp.Rings.RX = new(uint32)
+ *cp.Rings.RX = *o.Rings.RX
+ }
+ if o.Rings.TX != nil {
+ cp.Rings.TX = new(uint32)
+ *cp.Rings.TX = *o.Rings.TX
+ }
+ if o.Rings.RXMini != nil {
+ cp.Rings.RXMini = new(uint32)
+ *cp.Rings.RXMini = *o.Rings.RXMini
+ }
+ if o.Rings.RXJumbo != nil {
+ cp.Rings.RXJumbo = new(uint32)
+ *cp.Rings.RXJumbo = *o.Rings.RXJumbo
+ }
+ if o.Rings.RXBufLen != nil {
+ cp.Rings.RXBufLen = new(uint32)
+ *cp.Rings.RXBufLen = *o.Rings.RXBufLen
+ }
+ if o.Rings.CQESize != nil {
+ cp.Rings.CQESize = new(uint32)
+ *cp.Rings.CQESize = *o.Rings.CQESize
+ }
+ if o.Rings.TXPush != nil {
+ cp.Rings.TXPush = new(bool)
+ *cp.Rings.TXPush = *o.Rings.TXPush
+ }
+ if o.Rings.RXPush != nil {
+ cp.Rings.RXPush = new(bool)
+ *cp.Rings.RXPush = *o.Rings.RXPush
+ }
+ if o.Rings.TXPushBufLen != nil {
+ cp.Rings.TXPushBufLen = new(uint32)
+ *cp.Rings.TXPushBufLen = *o.Rings.TXPushBufLen
+ }
+ if o.Rings.TCPDataSplit != nil {
+ cp.Rings.TCPDataSplit = new(bool)
+ *cp.Rings.TCPDataSplit = *o.Rings.TCPDataSplit
+ }
+ return cp
+}
+
+// DeepCopy generates a deep copy of EthernetStatusSpec.
+func (o EthernetStatusSpec) DeepCopy() EthernetStatusSpec {
+ var cp EthernetStatusSpec = o
+ if o.LinkState != nil {
+ cp.LinkState = new(bool)
+ *cp.LinkState = *o.LinkState
+ }
+ if o.OurModes != nil {
+ cp.OurModes = make([]string, len(o.OurModes))
+ copy(cp.OurModes, o.OurModes)
+ }
+ if o.PeerModes != nil {
+ cp.PeerModes = make([]string, len(o.PeerModes))
+ copy(cp.PeerModes, o.PeerModes)
+ }
+ if o.Rings != nil {
+ cp.Rings = new(EthernetRingsStatus)
+ *cp.Rings = *o.Rings
+ if o.Rings.RXMax != nil {
+ cp.Rings.RXMax = new(uint32)
+ *cp.Rings.RXMax = *o.Rings.RXMax
+ }
+ if o.Rings.RXMiniMax != nil {
+ cp.Rings.RXMiniMax = new(uint32)
+ *cp.Rings.RXMiniMax = *o.Rings.RXMiniMax
+ }
+ if o.Rings.RXJumboMax != nil {
+ cp.Rings.RXJumboMax = new(uint32)
+ *cp.Rings.RXJumboMax = *o.Rings.RXJumboMax
+ }
+ if o.Rings.TXMax != nil {
+ cp.Rings.TXMax = new(uint32)
+ *cp.Rings.TXMax = *o.Rings.TXMax
+ }
+ if o.Rings.TXPushBufLenMax != nil {
+ cp.Rings.TXPushBufLenMax = new(uint32)
+ *cp.Rings.TXPushBufLenMax = *o.Rings.TXPushBufLenMax
+ }
+ if o.Rings.RX != nil {
+ cp.Rings.RX = new(uint32)
+ *cp.Rings.RX = *o.Rings.RX
+ }
+ if o.Rings.RXMini != nil {
+ cp.Rings.RXMini = new(uint32)
+ *cp.Rings.RXMini = *o.Rings.RXMini
+ }
+ if o.Rings.RXJumbo != nil {
+ cp.Rings.RXJumbo = new(uint32)
+ *cp.Rings.RXJumbo = *o.Rings.RXJumbo
+ }
+ if o.Rings.TX != nil {
+ cp.Rings.TX = new(uint32)
+ *cp.Rings.TX = *o.Rings.TX
+ }
+ if o.Rings.RXBufLen != nil {
+ cp.Rings.RXBufLen = new(uint32)
+ *cp.Rings.RXBufLen = *o.Rings.RXBufLen
+ }
+ if o.Rings.CQESize != nil {
+ cp.Rings.CQESize = new(uint32)
+ *cp.Rings.CQESize = *o.Rings.CQESize
+ }
+ if o.Rings.TXPush != nil {
+ cp.Rings.TXPush = new(bool)
+ *cp.Rings.TXPush = *o.Rings.TXPush
+ }
+ if o.Rings.RXPush != nil {
+ cp.Rings.RXPush = new(bool)
+ *cp.Rings.RXPush = *o.Rings.RXPush
+ }
+ if o.Rings.TXPushBufLen != nil {
+ cp.Rings.TXPushBufLen = new(uint32)
+ *cp.Rings.TXPushBufLen = *o.Rings.TXPushBufLen
+ }
+ if o.Rings.TCPDataSplit != nil {
+ cp.Rings.TCPDataSplit = new(bool)
+ *cp.Rings.TCPDataSplit = *o.Rings.TCPDataSplit
+ }
+ }
+ return cp
+}
+
// DeepCopy generates a deep copy of HardwareAddrSpec.
func (o HardwareAddrSpec) DeepCopy() HardwareAddrSpec {
var cp HardwareAddrSpec = o
diff --git a/pkg/machinery/resources/network/ethernet_spec.go b/pkg/machinery/resources/network/ethernet_spec.go
new file mode 100644
index 00000000000..43324a6ce23
--- /dev/null
+++ b/pkg/machinery/resources/network/ethernet_spec.go
@@ -0,0 +1,72 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package network
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/talos/pkg/machinery/proto"
+)
+
+// EthernetSpecType is type of EthernetSpec resource.
+const EthernetSpecType = resource.Type("EthernetSpecs.net.talos.dev")
+
+// EthernetSpec resource holds Ethernet network link status.
+type EthernetSpec = typed.Resource[EthernetSpecSpec, EthernetSpecExtension]
+
+// EthernetSpecSpec describes config of Ethernet link.
+//
+//gotagsrewrite:gen
+type EthernetSpecSpec struct {
+ Rings EthernetRingsSpec `yaml:"rings,omitempty" protobuf:"1"`
+}
+
+// EthernetRingsSpec describes config of Ethernet rings.
+//
+//gotagsrewrite:gen
+type EthernetRingsSpec struct {
+ RX *uint32 `yaml:"rx,omitempty" protobuf:"1"`
+ TX *uint32 `yaml:"tx,omitempty" protobuf:"4"`
+ RXMini *uint32 `yaml:"rx-mini,omitempty" protobuf:"2"`
+ RXJumbo *uint32 `yaml:"rx-jumbo,omitempty" protobuf:"3"`
+ RXBufLen *uint32 `yaml:"rx-buf-len,omitempty" protobuf:"5"`
+ CQESize *uint32 `yaml:"cqe-size,omitempty" protobuf:"6"`
+ TXPush *bool `yaml:"tx-push,omitempty" protobuf:"7"`
+ RXPush *bool `yaml:"rx-push,omitempty" protobuf:"8"`
+ TXPushBufLen *uint32 `yaml:"tx-push-buf-len,omitempty" protobuf:"9"`
+ TCPDataSplit *bool `yaml:"tcp-data-split,omitempty" protobuf:"10"`
+}
+
+// NewEthernetSpec initializes a EthernetSpec resource.
+func NewEthernetSpec(namespace resource.Namespace, id resource.ID) *EthernetSpec {
+ return typed.NewResource[EthernetSpecSpec, EthernetSpecExtension](
+ resource.NewMetadata(namespace, EthernetSpecType, id, resource.VersionUndefined),
+ EthernetSpecSpec{},
+ )
+}
+
+// EthernetSpecExtension provides auxiliary methods for EthernetSpec.
+type EthernetSpecExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EthernetSpecExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EthernetSpecType,
+ DefaultNamespace: NamespaceName,
+ Sensitivity: meta.NonSensitive,
+ }
+}
+
+func init() {
+ proto.RegisterDefaultTypes()
+
+ err := protobuf.RegisterDynamic[EthernetSpecSpec](EthernetSpecType, &EthernetSpec{})
+ if err != nil {
+ panic(err)
+ }
+}
diff --git a/pkg/machinery/resources/network/ethernet_status.go b/pkg/machinery/resources/network/ethernet_status.go
new file mode 100644
index 00000000000..6fe7a9ce6aa
--- /dev/null
+++ b/pkg/machinery/resources/network/ethernet_status.go
@@ -0,0 +1,98 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package network
+
+import (
+ "github.com/cosi-project/runtime/pkg/resource"
+ "github.com/cosi-project/runtime/pkg/resource/meta"
+ "github.com/cosi-project/runtime/pkg/resource/protobuf"
+ "github.com/cosi-project/runtime/pkg/resource/typed"
+
+ "github.com/siderolabs/talos/pkg/machinery/nethelpers"
+ "github.com/siderolabs/talos/pkg/machinery/proto"
+)
+
+// EthernetStatusType is type of EthernetStatus resource.
+const EthernetStatusType = resource.Type("EthernetStatuses.net.talos.dev")
+
+// EthernetStatus resource holds Ethernet network link status.
+type EthernetStatus = typed.Resource[EthernetStatusSpec, EthernetStatusExtension]
+
+// EthernetStatusSpec describes status of rendered secrets.
+//
+//gotagsrewrite:gen
+type EthernetStatusSpec struct {
+ LinkState *bool `yaml:"linkState,omitempty" protobuf:"1"`
+ SpeedMegabits int `yaml:"speedMbit,omitempty" protobuf:"2"`
+ Port nethelpers.Port `yaml:"port" protobuf:"3"`
+ Duplex nethelpers.Duplex `yaml:"duplex" protobuf:"4"`
+ OurModes []string `yaml:"ourModes,omitempty" protobuf:"5"`
+ PeerModes []string `yaml:"peerModes,omitempty" protobuf:"6"`
+ Rings *EthernetRingsStatus `yaml:"rings,omitempty" protobuf:"7"`
+}
+
+// EthernetRingsStatus describes status of Ethernet rings.
+//
+//gotagsrewrite:gen
+type EthernetRingsStatus struct {
+ // Read-only settings.
+ RXMax *uint32 `yaml:"rx-max,omitempty" protobuf:"1"`
+ RXMiniMax *uint32 `yaml:"rx-mini-max,omitempty" protobuf:"2"`
+ RXJumboMax *uint32 `yaml:"rx-jumbo-max,omitempty" protobuf:"3"`
+ TXMax *uint32 `yaml:"tx-max,omitempty" protobuf:"4"`
+ TXPushBufLenMax *uint32 `yaml:"tx-push-buf-len-max,omitempty" protobuf:"5"`
+
+ // Current settings (read-write).
+ RX *uint32 `yaml:"rx,omitempty" protobuf:"6"`
+ RXMini *uint32 `yaml:"rx-mini,omitempty" protobuf:"7"`
+ RXJumbo *uint32 `yaml:"rx-jumbo,omitempty" protobuf:"8"`
+ TX *uint32 `yaml:"tx,omitempty" protobuf:"9"`
+ RXBufLen *uint32 `yaml:"rx-buf-len,omitempty" protobuf:"10"`
+ CQESize *uint32 `yaml:"cqe-size,omitempty" protobuf:"11"`
+ TXPush *bool `yaml:"tx-push,omitempty" protobuf:"12"`
+ RXPush *bool `yaml:"rx-push,omitempty" protobuf:"13"`
+ TXPushBufLen *uint32 `yaml:"tx-push-buf-len,omitempty" protobuf:"14"`
+ TCPDataSplit *bool `yaml:"tcp-data-split,omitempty" protobuf:"15"`
+}
+
+// NewEthernetStatus initializes a EthernetStatus resource.
+func NewEthernetStatus(namespace resource.Namespace, id resource.ID) *EthernetStatus {
+ return typed.NewResource[EthernetStatusSpec, EthernetStatusExtension](
+ resource.NewMetadata(namespace, EthernetStatusType, id, resource.VersionUndefined),
+ EthernetStatusSpec{},
+ )
+}
+
+// EthernetStatusExtension provides auxiliary methods for EthernetStatus.
+type EthernetStatusExtension struct{}
+
+// ResourceDefinition implements [typed.Extension] interface.
+func (EthernetStatusExtension) ResourceDefinition() meta.ResourceDefinitionSpec {
+ return meta.ResourceDefinitionSpec{
+ Type: EthernetStatusType,
+ Aliases: []resource.Type{"ethtool"},
+ DefaultNamespace: NamespaceName,
+ PrintColumns: []meta.PrintColumn{
+ {
+ Name: "Link",
+ JSONPath: `{.linkState}`,
+ },
+ {
+ Name: "Speed",
+ JSONPath: `{.speedMbit}`,
+ },
+ },
+ Sensitivity: meta.NonSensitive,
+ }
+}
+
+func init() {
+ proto.RegisterDefaultTypes()
+
+ err := protobuf.RegisterDynamic[EthernetStatusSpec](EthernetStatusType, &EthernetStatus{})
+ if err != nil {
+ panic(err)
+ }
+}
diff --git a/pkg/machinery/resources/network/network_test.go b/pkg/machinery/resources/network/network_test.go
index d57aef37c71..b708b8eb615 100644
--- a/pkg/machinery/resources/network/network_test.go
+++ b/pkg/machinery/resources/network/network_test.go
@@ -29,6 +29,8 @@ func TestRegisterResource(t *testing.T) {
&network.AddressSpec{},
&network.HardwareAddr{},
&network.DNSUpstream{},
+ &network.EthernetSpec{},
+ &network.EthernetStatus{},
&network.HostDNSConfig{},
&network.HostnameStatus{},
&network.HostnameSpec{},
diff --git a/website/content/v1.10/reference/api.md b/website/content/v1.10/reference/api.md
index eb1349f3d81..bc3db3e3abe 100644
--- a/website/content/v1.10/reference/api.md
+++ b/website/content/v1.10/reference/api.md
@@ -203,6 +203,10 @@ description: Talos gRPC API reference.
- [DHCP4OperatorSpec](#talos.resource.definitions.network.DHCP4OperatorSpec)
- [DHCP6OperatorSpec](#talos.resource.definitions.network.DHCP6OperatorSpec)
- [DNSResolveCacheSpec](#talos.resource.definitions.network.DNSResolveCacheSpec)
+ - [EthernetRingsSpec](#talos.resource.definitions.network.EthernetRingsSpec)
+ - [EthernetRingsStatus](#talos.resource.definitions.network.EthernetRingsStatus)
+ - [EthernetSpecSpec](#talos.resource.definitions.network.EthernetSpecSpec)
+ - [EthernetStatusSpec](#talos.resource.definitions.network.EthernetStatusSpec)
- [HardwareAddrSpec](#talos.resource.definitions.network.HardwareAddrSpec)
- [HostDNSConfigSpec](#talos.resource.definitions.network.HostDNSConfigSpec)
- [HostnameSpecSpec](#talos.resource.definitions.network.HostnameSpecSpec)
@@ -3729,6 +3733,95 @@ DNSResolveCacheSpec describes DNS servers status.
+
+
+### EthernetRingsSpec
+EthernetRingsSpec describes config of Ethernet rings.
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| rx | [uint32](#uint32) | | |
+| rx_mini | [uint32](#uint32) | | |
+| rx_jumbo | [uint32](#uint32) | | |
+| tx | [uint32](#uint32) | | |
+| rx_buf_len | [uint32](#uint32) | | |
+| cqe_size | [uint32](#uint32) | | |
+| tx_push | [bool](#bool) | | |
+| rx_push | [bool](#bool) | | |
+| tx_push_buf_len | [uint32](#uint32) | | |
+| tcp_data_split | [bool](#bool) | | |
+
+
+
+
+
+
+
+
+### EthernetRingsStatus
+EthernetRingsStatus describes status of Ethernet rings.
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| rx_max | [uint32](#uint32) | | |
+| rx_mini_max | [uint32](#uint32) | | |
+| rx_jumbo_max | [uint32](#uint32) | | |
+| tx_max | [uint32](#uint32) | | |
+| tx_push_buf_len_max | [uint32](#uint32) | | |
+| rx | [uint32](#uint32) | | |
+| rx_mini | [uint32](#uint32) | | |
+| rx_jumbo | [uint32](#uint32) | | |
+| tx | [uint32](#uint32) | | |
+| rx_buf_len | [uint32](#uint32) | | |
+| cqe_size | [uint32](#uint32) | | |
+| tx_push | [bool](#bool) | | |
+| rx_push | [bool](#bool) | | |
+| tx_push_buf_len | [uint32](#uint32) | | |
+| tcp_data_split | [bool](#bool) | | |
+
+
+
+
+
+
+
+
+### EthernetSpecSpec
+EthernetSpecSpec describes config of Ethernet link.
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| rings | [EthernetRingsSpec](#talos.resource.definitions.network.EthernetRingsSpec) | | |
+
+
+
+
+
+
+
+
+### EthernetStatusSpec
+EthernetStatusSpec describes status of rendered secrets.
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| link_state | [bool](#bool) | | |
+| speed_megabits | [int64](#int64) | | |
+| port | [talos.resource.definitions.enums.NethelpersPort](#talos.resource.definitions.enums.NethelpersPort) | | |
+| duplex | [talos.resource.definitions.enums.NethelpersDuplex](#talos.resource.definitions.enums.NethelpersDuplex) | | |
+| our_modes | [string](#string) | repeated | |
+| peer_modes | [string](#string) | repeated | |
+| rings | [EthernetRingsStatus](#talos.resource.definitions.network.EthernetRingsStatus) | | |
+
+
+
+
+
+
### HardwareAddrSpec
diff --git a/website/content/v1.10/reference/configuration/network/ethernetconfig.md b/website/content/v1.10/reference/configuration/network/ethernetconfig.md
new file mode 100644
index 00000000000..b7856b1e8fd
--- /dev/null
+++ b/website/content/v1.10/reference/configuration/network/ethernetconfig.md
@@ -0,0 +1,60 @@
+---
+description: EthernetConfig is a config document to configure Ethernet interfaces.
+title: EthernetConfig
+---
+
+
+
+
+
+
+
+
+
+
+
+{{< highlight yaml >}}
+apiVersion: v1alpha1
+kind: EthernetConfig
+name: enp0s2 # Name of the link (interface).
+# Configuration for Ethernet link rings.
+rings:
+ rx: 256 # Number of RX rings.
+{{< /highlight >}}
+
+
+| Field | Type | Description | Value(s) |
+|-------|------|-------------|----------|
+|`name` |string |Name of the link (interface). | |
+|`rings` |EthernetRingsConfig |Configuration for Ethernet link rings.
This is similar to `ethtool -G` command. | |
+
+
+
+
+## rings {#EthernetConfig.rings}
+
+EthernetRingsConfig is a configuration for Ethernet link rings.
+
+
+
+
+| Field | Type | Description | Value(s) |
+|-------|------|-------------|----------|
+|`rx` |uint32 |Number of RX rings. | |
+|`tx` |uint32 |Number of TX rings. | |
+|`rx-mini` |uint32 |Number of RX mini rings. | |
+|`rx-jumbo` |uint32 |Number of RX jumbo rings. | |
+|`rx-buf-len` |uint32 |RX buffer length. | |
+|`cqe-size` |uint32 |CQE size. | |
+|`tx-push` |bool |TX push enabled. | |
+|`rx-push` |bool |RX push enabled. | |
+|`tx-push-buf-len` |uint32 |TX push buffer length. | |
+|`tcp-data-split` |bool |TCP data split enabled. | |
+
+
+
+
+
+
+
+
diff --git a/website/content/v1.10/schemas/config.schema.json b/website/content/v1.10/schemas/config.schema.json
index 7464717a2b1..546cea31923 100644
--- a/website/content/v1.10/schemas/config.schema.json
+++ b/website/content/v1.10/schemas/config.schema.json
@@ -249,6 +249,125 @@
"kind"
]
},
+ "network.EthernetConfigV1Alpha1": {
+ "properties": {
+ "apiVersion": {
+ "enum": [
+ "v1alpha1"
+ ],
+ "title": "apiVersion",
+ "description": "apiVersion is the API version of the resource.\n",
+ "markdownDescription": "apiVersion is the API version of the resource.",
+ "x-intellij-html-description": "\u003cp\u003eapiVersion is the API version of the resource.\u003c/p\u003e\n"
+ },
+ "kind": {
+ "enum": [
+ "EthernetConfig"
+ ],
+ "title": "kind",
+ "description": "kind is the kind of the resource.\n",
+ "markdownDescription": "kind is the kind of the resource.",
+ "x-intellij-html-description": "\u003cp\u003ekind is the kind of the resource.\u003c/p\u003e\n"
+ },
+ "name": {
+ "type": "string",
+ "title": "name",
+ "description": "Name of the link (interface).\n",
+ "markdownDescription": "Name of the link (interface).",
+ "x-intellij-html-description": "\u003cp\u003eName of the link (interface).\u003c/p\u003e\n"
+ },
+ "rings": {
+ "$ref": "#/$defs/network.EthernetRingsConfig",
+ "title": "rings",
+ "description": "Configuration for Ethernet link rings.\n\nThis is similar to ethtool -G command.\n",
+ "markdownDescription": "Configuration for Ethernet link rings.\n\nThis is similar to `ethtool -G` command.",
+ "x-intellij-html-description": "\u003cp\u003eConfiguration for Ethernet link rings.\u003c/p\u003e\n\n\u003cp\u003eThis is similar to \u003ccode\u003eethtool -G\u003c/code\u003e command.\u003c/p\u003e\n"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "apiVersion",
+ "kind",
+ "name"
+ ]
+ },
+ "network.EthernetRingsConfig": {
+ "properties": {
+ "rx": {
+ "type": "integer",
+ "title": "rx",
+ "description": "Number of RX rings.\n",
+ "markdownDescription": "Number of RX rings.",
+ "x-intellij-html-description": "\u003cp\u003eNumber of RX rings.\u003c/p\u003e\n"
+ },
+ "tx": {
+ "type": "integer",
+ "title": "tx",
+ "description": "Number of TX rings.\n",
+ "markdownDescription": "Number of TX rings.",
+ "x-intellij-html-description": "\u003cp\u003eNumber of TX rings.\u003c/p\u003e\n"
+ },
+ "rx-mini": {
+ "type": "integer",
+ "title": "rx-mini",
+ "description": "Number of RX mini rings.\n",
+ "markdownDescription": "Number of RX mini rings.",
+ "x-intellij-html-description": "\u003cp\u003eNumber of RX mini rings.\u003c/p\u003e\n"
+ },
+ "rx-jumbo": {
+ "type": "integer",
+ "title": "rx-jumbo",
+ "description": "Number of RX jumbo rings.\n",
+ "markdownDescription": "Number of RX jumbo rings.",
+ "x-intellij-html-description": "\u003cp\u003eNumber of RX jumbo rings.\u003c/p\u003e\n"
+ },
+ "rx-buf-len": {
+ "type": "integer",
+ "title": "rx-buf-len",
+ "description": "RX buffer length.\n",
+ "markdownDescription": "RX buffer length.",
+ "x-intellij-html-description": "\u003cp\u003eRX buffer length.\u003c/p\u003e\n"
+ },
+ "cqe-size": {
+ "type": "integer",
+ "title": "cqe-size",
+ "description": "CQE size.\n",
+ "markdownDescription": "CQE size.",
+ "x-intellij-html-description": "\u003cp\u003eCQE size.\u003c/p\u003e\n"
+ },
+ "tx-push": {
+ "type": "boolean",
+ "title": "tx-push",
+ "description": "TX push enabled.\n",
+ "markdownDescription": "TX push enabled.",
+ "x-intellij-html-description": "\u003cp\u003eTX push enabled.\u003c/p\u003e\n"
+ },
+ "rx-push": {
+ "type": "boolean",
+ "title": "rx-push",
+ "description": "RX push enabled.\n",
+ "markdownDescription": "RX push enabled.",
+ "x-intellij-html-description": "\u003cp\u003eRX push enabled.\u003c/p\u003e\n"
+ },
+ "tx-push-buf-len": {
+ "type": "integer",
+ "title": "tx-push-buf-len",
+ "description": "TX push buffer length.\n",
+ "markdownDescription": "TX push buffer length.",
+ "x-intellij-html-description": "\u003cp\u003eTX push buffer length.\u003c/p\u003e\n"
+ },
+ "tcp-data-split": {
+ "type": "boolean",
+ "title": "tcp-data-split",
+ "description": "TCP data split enabled.\n",
+ "markdownDescription": "TCP data split enabled.",
+ "x-intellij-html-description": "\u003cp\u003eTCP data split enabled.\u003c/p\u003e\n"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
"network.IngressRule": {
"properties": {
"subnet": {
@@ -3769,6 +3888,9 @@
{
"$ref": "#/$defs/network.DefaultActionConfigV1Alpha1"
},
+ {
+ "$ref": "#/$defs/network.EthernetConfigV1Alpha1"
+ },
{
"$ref": "#/$defs/network.KubespanEndpointsConfigV1Alpha1"
},