Skip to content

Commit 56a50af

Browse files
committed
agent and client proto split
1 parent 2a864f6 commit 56a50af

File tree

22 files changed

+448
-345
lines changed

22 files changed

+448
-345
lines changed

Makefile

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
ARCH ?= amd64
1616
ALL_ARCH = amd64 arm arm64 ppc64le s390x
1717

18+
GOPATH ?= $(GOPATH)
19+
1820
REGISTRY ?= gcr.io/$(shell gcloud config get-value project)
1921
STAGING_REGISTRY := gcr.io/k8s-staging-kas-network-proxy
2022

@@ -54,13 +56,13 @@ bin:
5456
.PHONY: build
5557
build: bin/proxy-agent bin/proxy-server bin/proxy-test-client
5658

57-
bin/proxy-agent: bin cmd/agent/main.go proto/agent/agent.pb.go
59+
bin/proxy-agent: proto/agent/agent.pb.go proto/client/client.pb.go bin cmd/agent/main.go
5860
GO111MODULE=on go build -o bin/proxy-agent cmd/agent/main.go
5961

60-
bin/proxy-test-client: bin cmd/client/main.go proto/agent/agent.pb.go
62+
bin/proxy-test-client: proto/client/client.pb.go bin cmd/client/main.go
6163
GO111MODULE=on go build -o bin/proxy-test-client cmd/client/main.go
6264

63-
bin/proxy-server: bin cmd/proxy/main.go proto/agent/agent.pb.go proto/agent/agent.pb.go
65+
bin/proxy-server: proto/agent/agent.pb.go proto/client/client.pb.go bin cmd/proxy/main.go
6466
GO111MODULE=on go build -o bin/proxy-server cmd/proxy/main.go
6567

6668
## --------------------------------------
@@ -73,12 +75,17 @@ bin/proxy-server: bin cmd/proxy/main.go proto/agent/agent.pb.go proto/agent/agen
7375
## --------------------------------------
7476

7577
.PHONY: gen
76-
gen: proto/agent/agent.pb.go mock_gen
78+
gen: proto/agent/agent.pb.go proto/client/client.pb.go mock_gen
79+
80+
proto/client/client.pb.go: konnectivity-client/proto/client/client.proto
81+
protoc -I . konnectivity-client/proto/client/client.proto --go_out=plugins=grpc:${GOPATH}/src
82+
cat hack/go-license-header.txt konnectivity-client/proto/client/client.pb.go > konnectivity-client/proto/client/client.licensed.go
83+
mv konnectivity-client/proto/client/client.licensed.go konnectivity-client/proto/client/client.pb.go
7784

78-
proto/agent/agent.pb.go: konnectivity-client/proto/agent/agent.proto
79-
protoc -I konnectivity-client/proto konnectivity-client/proto/agent/agent.proto --go_out=plugins=grpc:konnectivity-client/proto
80-
cat hack/go-license-header.txt konnectivity-client/proto/agent/agent.pb.go > konnectivity-client/proto/agent/agent.licensed.go
81-
mv konnectivity-client/proto/agent/agent.licensed.go konnectivity-client/proto/agent/agent.pb.go
85+
proto/agent/agent.pb.go: proto/agent/agent.proto
86+
protoc -I . proto/agent/agent.proto --go_out=plugins=grpc:${GOPATH}/src
87+
cat hack/go-license-header.txt proto/agent/agent.pb.go > proto/agent/agent.licensed.go
88+
mv proto/agent/agent.licensed.go proto/agent/agent.pb.go
8289

8390
## --------------------------------------
8491
## Certs
@@ -244,4 +251,4 @@ release-alias-tag: # Adds the tag to the last build tag. BASE_REF comes from the
244251

245252
.PHONY: clean
246253
clean:
247-
rm -rf proto/agent/agent.pb.go easy-rsa.tar.gz easy-rsa-master cfssl cfssljson certs bin proto/agent/mocks
254+
rm -rf proto/agent/agent.pb.go konnectivity-client/proto/client/client.pb.go easy-rsa.tar.gz easy-rsa-master cfssl cfssljson certs bin proto/agent/mocks

cmd/proxy/main.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ import (
4040
"k8s.io/client-go/tools/clientcmd"
4141
"sigs.k8s.io/apiserver-network-proxy/pkg/agent/agentserver"
4242
"sigs.k8s.io/apiserver-network-proxy/pkg/util"
43-
"sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/agent"
43+
"sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client"
44+
"sigs.k8s.io/apiserver-network-proxy/proto/agent"
4445
)
4546

4647
func main() {
@@ -368,7 +369,7 @@ func (p *Proxy) runUDSMasterServer(ctx context.Context, o *ProxyRunOptions, serv
368369
var stop StopFunc
369370
if o.mode == "grpc" {
370371
grpcServer := grpc.NewServer()
371-
agent.RegisterProxyServiceServer(grpcServer, server)
372+
client.RegisterProxyServiceServer(grpcServer, server)
372373
var lc net.ListenConfig
373374
lis, err := lc.Listen(ctx, "unix", o.udsName)
374375
if err != nil {
@@ -445,7 +446,7 @@ func (p *Proxy) runMTLSMasterServer(ctx context.Context, o *ProxyRunOptions, ser
445446
if o.mode == "grpc" {
446447
serverOption := grpc.Creds(credentials.NewTLS(tlsConfig))
447448
grpcServer := grpc.NewServer(serverOption)
448-
agent.RegisterProxyServiceServer(grpcServer, server)
449+
client.RegisterProxyServiceServer(grpcServer, server)
449450
lis, err := net.Listen("tcp", addr)
450451
if err != nil {
451452
return nil, fmt.Errorf("failed to listen on %s: %v", addr, err)

go.mod

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,13 @@ require (
1414
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 // indirect
1515
github.com/spf13/cobra v0.0.3
1616
github.com/spf13/pflag v1.0.5
17-
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3 // indirect
18-
golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect
19-
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 // indirect
17+
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9
2018
google.golang.org/grpc v1.27.0
21-
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc // indirect
22-
k8s.io/api v0.17.2
23-
k8s.io/apimachinery v0.17.2
24-
k8s.io/client-go v11.0.0+incompatible
19+
k8s.io/api v0.17.1
20+
k8s.io/apimachinery v0.17.1
21+
k8s.io/client-go v0.17.1
2522
k8s.io/klog v1.0.0
26-
k8s.io/utils v0.0.0-20200124190032-861946025e34 // indirect
27-
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.4
23+
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.0
2824
)
2925

3026
replace sigs.k8s.io/apiserver-network-proxy/konnectivity-client => ./konnectivity-client

go.sum

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,11 @@ github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs
5959
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
6060
github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
6161
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
62+
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
63+
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
64+
github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
6265
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
66+
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
6367
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
6468
github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
6569
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
@@ -114,6 +118,7 @@ github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa
114118
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
115119
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
116120
github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
121+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
117122
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
118123
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
119124
github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740=
@@ -142,6 +147,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
142147
github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
143148
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
144149
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
150+
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
145151
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
146152
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
147153
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=

konnectivity-client/go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y
1111
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
1212
github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
1313
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
14+
github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
1415
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
1516
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
1617
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=

konnectivity-client/pkg/client/client.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727

2828
"google.golang.org/grpc"
2929
"k8s.io/klog"
30-
"sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/agent"
30+
"sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client"
3131
)
3232

3333
// Tunnel provides ability to dial a connection through a tunnel.
@@ -44,7 +44,7 @@ type dialResult struct {
4444

4545
// grpcTunnel implements Tunnel
4646
type grpcTunnel struct {
47-
stream agent.ProxyService_ProxyClient
47+
stream client.ProxyService_ProxyClient
4848
pendingDial map[int64]chan<- dialResult
4949
conns map[int64]*conn
5050
pendingDialLock sync.RWMutex
@@ -59,9 +59,9 @@ func CreateGrpcTunnel(address string, opts ...grpc.DialOption) (Tunnel, error) {
5959
return nil, err
6060
}
6161

62-
client := agent.NewProxyServiceClient(c)
62+
grpcClient := client.NewProxyServiceClient(c)
6363

64-
stream, err := client.Proxy(context.Background())
64+
stream, err := grpcClient.Proxy(context.Background())
6565
if err != nil {
6666
return nil, err
6767
}
@@ -91,7 +91,7 @@ func (t *grpcTunnel) serve() {
9191
klog.Infof("[tracing] recv packet %+v", pkt)
9292

9393
switch pkt.Type {
94-
case agent.PacketType_DIAL_RSP:
94+
case client.PacketType_DIAL_RSP:
9595
resp := pkt.GetDialResponse()
9696
t.pendingDialLock.RLock()
9797
ch, ok := t.pendingDial[resp.Random]
@@ -105,7 +105,7 @@ func (t *grpcTunnel) serve() {
105105
connid: resp.ConnectID,
106106
}
107107
}
108-
case agent.PacketType_DATA:
108+
case client.PacketType_DATA:
109109
resp := pkt.GetData()
110110
// TODO: flow control
111111
t.connsLock.RLock()
@@ -117,7 +117,7 @@ func (t *grpcTunnel) serve() {
117117
} else {
118118
klog.Warningf("connection id %d not recognized", resp.ConnectID)
119119
}
120-
case agent.PacketType_CLOSE_RSP:
120+
case client.PacketType_CLOSE_RSP:
121121
resp := pkt.GetCloseResponse()
122122
t.connsLock.RLock()
123123
conn, ok := t.conns[resp.ConnectID]
@@ -155,10 +155,10 @@ func (t *grpcTunnel) Dial(protocol, address string) (net.Conn, error) {
155155
t.pendingDialLock.Unlock()
156156
}()
157157

158-
req := &agent.Packet{
159-
Type: agent.PacketType_DIAL_REQ,
160-
Payload: &agent.Packet_DialRequest{
161-
DialRequest: &agent.DialRequest{
158+
req := &client.Packet{
159+
Type: client.PacketType_DIAL_REQ,
160+
Payload: &client.Packet_DialRequest{
161+
DialRequest: &client.DialRequest{
162162
Protocol: protocol,
163163
Address: address,
164164
Random: random,

konnectivity-client/pkg/client/client_test.go

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424

2525
"google.golang.org/grpc"
2626
"k8s.io/klog"
27-
"sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/agent"
27+
"sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client"
2828
)
2929

3030
func TestDial(t *testing.T) {
@@ -48,8 +48,8 @@ func TestDial(t *testing.T) {
4848
t.Fatalf("expect nil; got %v", err)
4949
}
5050

51-
if ts.packets[0].Type != agent.PacketType_DIAL_REQ {
52-
t.Fatalf("expect packet.type %v; got %v", agent.PacketType_CLOSE_REQ, ts.packets[0].Type)
51+
if ts.packets[0].Type != client.PacketType_DIAL_REQ {
52+
t.Fatalf("expect packet.type %v; got %v", client.PacketType_CLOSE_REQ, ts.packets[0].Type)
5353
}
5454

5555
if ts.packets[0].GetDialRequest().Address != "127.0.0.1:80" {
@@ -139,8 +139,8 @@ func TestClose(t *testing.T) {
139139
t.Error(err)
140140
}
141141

142-
if ts.packets[1].Type != agent.PacketType_CLOSE_REQ {
143-
t.Fatalf("expect packet.type %v; got %v", agent.PacketType_CLOSE_REQ, ts.packets[1].Type)
142+
if ts.packets[1].Type != client.PacketType_CLOSE_REQ {
143+
t.Fatalf("expect packet.type %v; got %v", client.PacketType_CLOSE_REQ, ts.packets[1].Type)
144144
}
145145
if ts.packets[1].GetCloseRequest().ConnectID != 100 {
146146
t.Errorf("expect connectID=100; got %d", ts.packets[1].GetCloseRequest().ConnectID)
@@ -152,21 +152,21 @@ func TestClose(t *testing.T) {
152152
// fakeStream implements ProxyService_ProxyClient
153153
type fakeStream struct {
154154
grpc.ClientStream
155-
r <-chan *agent.Packet
156-
w chan<- *agent.Packet
155+
r <-chan *client.Packet
156+
w chan<- *client.Packet
157157
}
158158

159-
var _ agent.ProxyService_ProxyClient = &fakeStream{}
159+
var _ client.ProxyService_ProxyClient = &fakeStream{}
160160

161161
func pipe() (*fakeStream, *fakeStream) {
162-
r, w := make(chan *agent.Packet, 2), make(chan *agent.Packet, 2)
162+
r, w := make(chan *client.Packet, 2), make(chan *client.Packet, 2)
163163
s1, s2 := &fakeStream{}, &fakeStream{}
164164
s1.r, s1.w = r, w
165165
s2.r, s2.w = w, r
166166
return s1, s2
167167
}
168168

169-
func (s *fakeStream) Send(packet *agent.Packet) error {
169+
func (s *fakeStream) Send(packet *client.Packet) error {
170170
klog.Infof("[DEBUG] send packet %+v", packet)
171171
if packet == nil {
172172
return nil
@@ -175,7 +175,7 @@ func (s *fakeStream) Send(packet *agent.Packet) error {
175175
return nil
176176
}
177177

178-
func (s *fakeStream) Recv() (*agent.Packet, error) {
178+
func (s *fakeStream) Recv() (*client.Packet, error) {
179179
select {
180180
case pkt := <-s.r:
181181
klog.Infof("[DEBUG] recv packet %+v", pkt)
@@ -191,24 +191,24 @@ func (s *fakeStream) Close() {
191191

192192
type proxyServer struct {
193193
t testing.T
194-
s agent.ProxyService_ProxyClient
195-
handlers map[agent.PacketType]handler
194+
s client.ProxyService_ProxyClient
195+
handlers map[client.PacketType]handler
196196
connid int64
197197
data bytes.Buffer
198-
packets []*agent.Packet
198+
packets []*client.Packet
199199
}
200200

201-
func testServer(s agent.ProxyService_ProxyClient, connid int64) *proxyServer {
201+
func testServer(s client.ProxyService_ProxyClient, connid int64) *proxyServer {
202202
server := &proxyServer{
203203
s: s,
204204
connid: connid,
205-
handlers: make(map[agent.PacketType]handler),
206-
packets: []*agent.Packet{},
205+
handlers: make(map[client.PacketType]handler),
206+
packets: []*client.Packet{},
207207
}
208208

209-
server.handlers[agent.PacketType_CLOSE_REQ] = server.handleClose
210-
server.handlers[agent.PacketType_DIAL_REQ] = server.handleDial
211-
server.handlers[agent.PacketType_DATA] = server.handleData
209+
server.handlers[client.PacketType_CLOSE_REQ] = server.handleClose
210+
server.handlers[client.PacketType_DIAL_REQ] = server.handleDial
211+
server.handlers[client.PacketType_DATA] = server.handleData
212212

213213
return server
214214
}
@@ -234,46 +234,46 @@ func (s *proxyServer) serve() {
234234

235235
}
236236

237-
func (s *proxyServer) handle(t agent.PacketType, h handler) *proxyServer {
237+
func (s *proxyServer) handle(t client.PacketType, h handler) *proxyServer {
238238
s.handlers[t] = h
239239
return s
240240
}
241241

242-
type handler func(pkt *agent.Packet) *agent.Packet
242+
type handler func(pkt *client.Packet) *client.Packet
243243

244-
func (s *proxyServer) handleDial(pkt *agent.Packet) *agent.Packet {
244+
func (s *proxyServer) handleDial(pkt *client.Packet) *client.Packet {
245245
s.packets = append(s.packets, pkt)
246-
return &agent.Packet{
247-
Type: agent.PacketType_DIAL_RSP,
248-
Payload: &agent.Packet_DialResponse{
249-
DialResponse: &agent.DialResponse{
246+
return &client.Packet{
247+
Type: client.PacketType_DIAL_RSP,
248+
Payload: &client.Packet_DialResponse{
249+
DialResponse: &client.DialResponse{
250250
Random: pkt.GetDialRequest().Random,
251251
ConnectID: s.connid,
252252
},
253253
},
254254
}
255255
}
256256

257-
func (s *proxyServer) handleClose(pkt *agent.Packet) *agent.Packet {
257+
func (s *proxyServer) handleClose(pkt *client.Packet) *client.Packet {
258258
s.packets = append(s.packets, pkt)
259-
return &agent.Packet{
260-
Type: agent.PacketType_CLOSE_RSP,
261-
Payload: &agent.Packet_CloseResponse{
262-
CloseResponse: &agent.CloseResponse{
259+
return &client.Packet{
260+
Type: client.PacketType_CLOSE_RSP,
261+
Payload: &client.Packet_CloseResponse{
262+
CloseResponse: &client.CloseResponse{
263263
ConnectID: pkt.GetCloseRequest().ConnectID,
264264
},
265265
},
266266
}
267267
}
268268

269-
func (s *proxyServer) handleData(pkt *agent.Packet) *agent.Packet {
269+
func (s *proxyServer) handleData(pkt *client.Packet) *client.Packet {
270270
s.packets = append(s.packets, pkt)
271271
s.data.Write(pkt.GetData().Data)
272272

273-
return &agent.Packet{
274-
Type: agent.PacketType_DATA,
275-
Payload: &agent.Packet_Data{
276-
Data: &agent.Data{
273+
return &client.Packet{
274+
Type: client.PacketType_DATA,
275+
Payload: &client.Packet_Data{
276+
Data: &client.Data{
277277
ConnectID: pkt.GetData().ConnectID,
278278
Data: append([]byte("echo: "), pkt.GetData().Data...),
279279
},

0 commit comments

Comments
 (0)