1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: signalling.proto
3
4package tdproto
5
6import (
7	fmt "fmt"
8	proto "github.com/ooni/psiphon/oopsi/github.com/golang/protobuf/proto"
9	math "math"
10)
11
12// Reference imports to suppress errors if they are not otherwise used.
13var _ = proto.Marshal
14var _ = fmt.Errorf
15var _ = math.Inf
16
17// This is a compile-time assertion to ensure that this generated file
18// is compatible with the proto package it is being compiled against.
19// A compilation error at this line likely means your copy of the
20// proto package needs to be updated.
21const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
22
23type KeyType int32
24
25const (
26	KeyType_AES_GCM_128 KeyType = 90
27	KeyType_AES_GCM_256 KeyType = 91
28)
29
30var KeyType_name = map[int32]string{
31	90: "AES_GCM_128",
32	91: "AES_GCM_256",
33}
34
35var KeyType_value = map[string]int32{
36	"AES_GCM_128": 90,
37	"AES_GCM_256": 91,
38}
39
40func (x KeyType) Enum() *KeyType {
41	p := new(KeyType)
42	*p = x
43	return p
44}
45
46func (x KeyType) String() string {
47	return proto.EnumName(KeyType_name, int32(x))
48}
49
50func (x *KeyType) UnmarshalJSON(data []byte) error {
51	value, err := proto.UnmarshalJSONEnum(KeyType_value, data, "KeyType")
52	if err != nil {
53		return err
54	}
55	*x = KeyType(value)
56	return nil
57}
58
59func (KeyType) EnumDescriptor() ([]byte, []int) {
60	return fileDescriptor_39f66308029891ad, []int{0}
61}
62
63// State transitions of the client
64type C2S_Transition int32
65
66const (
67	C2S_Transition_C2S_NO_CHANGE                C2S_Transition = 0
68	C2S_Transition_C2S_SESSION_INIT             C2S_Transition = 1
69	C2S_Transition_C2S_SESSION_COVERT_INIT      C2S_Transition = 11
70	C2S_Transition_C2S_EXPECT_RECONNECT         C2S_Transition = 2
71	C2S_Transition_C2S_SESSION_CLOSE            C2S_Transition = 3
72	C2S_Transition_C2S_YIELD_UPLOAD             C2S_Transition = 4
73	C2S_Transition_C2S_ACQUIRE_UPLOAD           C2S_Transition = 5
74	C2S_Transition_C2S_EXPECT_UPLOADONLY_RECONN C2S_Transition = 6
75	C2S_Transition_C2S_ERROR                    C2S_Transition = 255
76)
77
78var C2S_Transition_name = map[int32]string{
79	0:   "C2S_NO_CHANGE",
80	1:   "C2S_SESSION_INIT",
81	11:  "C2S_SESSION_COVERT_INIT",
82	2:   "C2S_EXPECT_RECONNECT",
83	3:   "C2S_SESSION_CLOSE",
84	4:   "C2S_YIELD_UPLOAD",
85	5:   "C2S_ACQUIRE_UPLOAD",
86	6:   "C2S_EXPECT_UPLOADONLY_RECONN",
87	255: "C2S_ERROR",
88}
89
90var C2S_Transition_value = map[string]int32{
91	"C2S_NO_CHANGE":                0,
92	"C2S_SESSION_INIT":             1,
93	"C2S_SESSION_COVERT_INIT":      11,
94	"C2S_EXPECT_RECONNECT":         2,
95	"C2S_SESSION_CLOSE":            3,
96	"C2S_YIELD_UPLOAD":             4,
97	"C2S_ACQUIRE_UPLOAD":           5,
98	"C2S_EXPECT_UPLOADONLY_RECONN": 6,
99	"C2S_ERROR":                    255,
100}
101
102func (x C2S_Transition) Enum() *C2S_Transition {
103	p := new(C2S_Transition)
104	*p = x
105	return p
106}
107
108func (x C2S_Transition) String() string {
109	return proto.EnumName(C2S_Transition_name, int32(x))
110}
111
112func (x *C2S_Transition) UnmarshalJSON(data []byte) error {
113	value, err := proto.UnmarshalJSONEnum(C2S_Transition_value, data, "C2S_Transition")
114	if err != nil {
115		return err
116	}
117	*x = C2S_Transition(value)
118	return nil
119}
120
121func (C2S_Transition) EnumDescriptor() ([]byte, []int) {
122	return fileDescriptor_39f66308029891ad, []int{1}
123}
124
125// State transitions of the server
126type S2C_Transition int32
127
128const (
129	S2C_Transition_S2C_NO_CHANGE           S2C_Transition = 0
130	S2C_Transition_S2C_SESSION_INIT        S2C_Transition = 1
131	S2C_Transition_S2C_SESSION_COVERT_INIT S2C_Transition = 11
132	S2C_Transition_S2C_CONFIRM_RECONNECT   S2C_Transition = 2
133	S2C_Transition_S2C_SESSION_CLOSE       S2C_Transition = 3
134	// TODO should probably also allow EXPECT_RECONNECT here, for DittoTap
135	S2C_Transition_S2C_ERROR S2C_Transition = 255
136)
137
138var S2C_Transition_name = map[int32]string{
139	0:   "S2C_NO_CHANGE",
140	1:   "S2C_SESSION_INIT",
141	11:  "S2C_SESSION_COVERT_INIT",
142	2:   "S2C_CONFIRM_RECONNECT",
143	3:   "S2C_SESSION_CLOSE",
144	255: "S2C_ERROR",
145}
146
147var S2C_Transition_value = map[string]int32{
148	"S2C_NO_CHANGE":           0,
149	"S2C_SESSION_INIT":        1,
150	"S2C_SESSION_COVERT_INIT": 11,
151	"S2C_CONFIRM_RECONNECT":   2,
152	"S2C_SESSION_CLOSE":       3,
153	"S2C_ERROR":               255,
154}
155
156func (x S2C_Transition) Enum() *S2C_Transition {
157	p := new(S2C_Transition)
158	*p = x
159	return p
160}
161
162func (x S2C_Transition) String() string {
163	return proto.EnumName(S2C_Transition_name, int32(x))
164}
165
166func (x *S2C_Transition) UnmarshalJSON(data []byte) error {
167	value, err := proto.UnmarshalJSONEnum(S2C_Transition_value, data, "S2C_Transition")
168	if err != nil {
169		return err
170	}
171	*x = S2C_Transition(value)
172	return nil
173}
174
175func (S2C_Transition) EnumDescriptor() ([]byte, []int) {
176	return fileDescriptor_39f66308029891ad, []int{2}
177}
178
179// Should accompany all S2C_ERROR messages.
180type ErrorReasonS2C int32
181
182const (
183	ErrorReasonS2C_NO_ERROR         ErrorReasonS2C = 0
184	ErrorReasonS2C_COVERT_STREAM    ErrorReasonS2C = 1
185	ErrorReasonS2C_CLIENT_REPORTED  ErrorReasonS2C = 2
186	ErrorReasonS2C_CLIENT_PROTOCOL  ErrorReasonS2C = 3
187	ErrorReasonS2C_STATION_INTERNAL ErrorReasonS2C = 4
188	ErrorReasonS2C_DECOY_OVERLOAD   ErrorReasonS2C = 5
189	ErrorReasonS2C_CLIENT_STREAM    ErrorReasonS2C = 100
190	ErrorReasonS2C_CLIENT_TIMEOUT   ErrorReasonS2C = 101
191)
192
193var ErrorReasonS2C_name = map[int32]string{
194	0:   "NO_ERROR",
195	1:   "COVERT_STREAM",
196	2:   "CLIENT_REPORTED",
197	3:   "CLIENT_PROTOCOL",
198	4:   "STATION_INTERNAL",
199	5:   "DECOY_OVERLOAD",
200	100: "CLIENT_STREAM",
201	101: "CLIENT_TIMEOUT",
202}
203
204var ErrorReasonS2C_value = map[string]int32{
205	"NO_ERROR":         0,
206	"COVERT_STREAM":    1,
207	"CLIENT_REPORTED":  2,
208	"CLIENT_PROTOCOL":  3,
209	"STATION_INTERNAL": 4,
210	"DECOY_OVERLOAD":   5,
211	"CLIENT_STREAM":    100,
212	"CLIENT_TIMEOUT":   101,
213}
214
215func (x ErrorReasonS2C) Enum() *ErrorReasonS2C {
216	p := new(ErrorReasonS2C)
217	*p = x
218	return p
219}
220
221func (x ErrorReasonS2C) String() string {
222	return proto.EnumName(ErrorReasonS2C_name, int32(x))
223}
224
225func (x *ErrorReasonS2C) UnmarshalJSON(data []byte) error {
226	value, err := proto.UnmarshalJSONEnum(ErrorReasonS2C_value, data, "ErrorReasonS2C")
227	if err != nil {
228		return err
229	}
230	*x = ErrorReasonS2C(value)
231	return nil
232}
233
234func (ErrorReasonS2C) EnumDescriptor() ([]byte, []int) {
235	return fileDescriptor_39f66308029891ad, []int{3}
236}
237
238type TransportType int32
239
240const (
241	TransportType_Null  TransportType = 0
242	TransportType_Min   TransportType = 1
243	TransportType_Obfs4 TransportType = 2
244)
245
246var TransportType_name = map[int32]string{
247	0: "Null",
248	1: "Min",
249	2: "Obfs4",
250}
251
252var TransportType_value = map[string]int32{
253	"Null":  0,
254	"Min":   1,
255	"Obfs4": 2,
256}
257
258func (x TransportType) Enum() *TransportType {
259	p := new(TransportType)
260	*p = x
261	return p
262}
263
264func (x TransportType) String() string {
265	return proto.EnumName(TransportType_name, int32(x))
266}
267
268func (x *TransportType) UnmarshalJSON(data []byte) error {
269	value, err := proto.UnmarshalJSONEnum(TransportType_value, data, "TransportType")
270	if err != nil {
271		return err
272	}
273	*x = TransportType(value)
274	return nil
275}
276
277func (TransportType) EnumDescriptor() ([]byte, []int) {
278	return fileDescriptor_39f66308029891ad, []int{4}
279}
280
281type RegistrationSource int32
282
283const (
284	RegistrationSource_Unspecified     RegistrationSource = 0
285	RegistrationSource_Detector        RegistrationSource = 1
286	RegistrationSource_API             RegistrationSource = 2
287	RegistrationSource_DetectorPrescan RegistrationSource = 3
288)
289
290var RegistrationSource_name = map[int32]string{
291	0: "Unspecified",
292	1: "Detector",
293	2: "API",
294	3: "DetectorPrescan",
295}
296
297var RegistrationSource_value = map[string]int32{
298	"Unspecified":     0,
299	"Detector":        1,
300	"API":             2,
301	"DetectorPrescan": 3,
302}
303
304func (x RegistrationSource) Enum() *RegistrationSource {
305	p := new(RegistrationSource)
306	*p = x
307	return p
308}
309
310func (x RegistrationSource) String() string {
311	return proto.EnumName(RegistrationSource_name, int32(x))
312}
313
314func (x *RegistrationSource) UnmarshalJSON(data []byte) error {
315	value, err := proto.UnmarshalJSONEnum(RegistrationSource_value, data, "RegistrationSource")
316	if err != nil {
317		return err
318	}
319	*x = RegistrationSource(value)
320	return nil
321}
322
323func (RegistrationSource) EnumDescriptor() ([]byte, []int) {
324	return fileDescriptor_39f66308029891ad, []int{5}
325}
326
327type PubKey struct {
328	// A public key, as used by the station.
329	Key                  []byte   `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
330	Type                 *KeyType `protobuf:"varint,2,opt,name=type,enum=tapdance.KeyType" json:"type,omitempty"`
331	XXX_NoUnkeyedLiteral struct{} `json:"-"`
332	XXX_unrecognized     []byte   `json:"-"`
333	XXX_sizecache        int32    `json:"-"`
334}
335
336func (m *PubKey) Reset()         { *m = PubKey{} }
337func (m *PubKey) String() string { return proto.CompactTextString(m) }
338func (*PubKey) ProtoMessage()    {}
339func (*PubKey) Descriptor() ([]byte, []int) {
340	return fileDescriptor_39f66308029891ad, []int{0}
341}
342
343func (m *PubKey) XXX_Unmarshal(b []byte) error {
344	return xxx_messageInfo_PubKey.Unmarshal(m, b)
345}
346func (m *PubKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
347	return xxx_messageInfo_PubKey.Marshal(b, m, deterministic)
348}
349func (m *PubKey) XXX_Merge(src proto.Message) {
350	xxx_messageInfo_PubKey.Merge(m, src)
351}
352func (m *PubKey) XXX_Size() int {
353	return xxx_messageInfo_PubKey.Size(m)
354}
355func (m *PubKey) XXX_DiscardUnknown() {
356	xxx_messageInfo_PubKey.DiscardUnknown(m)
357}
358
359var xxx_messageInfo_PubKey proto.InternalMessageInfo
360
361func (m *PubKey) GetKey() []byte {
362	if m != nil {
363		return m.Key
364	}
365	return nil
366}
367
368func (m *PubKey) GetType() KeyType {
369	if m != nil && m.Type != nil {
370		return *m.Type
371	}
372	return KeyType_AES_GCM_128
373}
374
375type TLSDecoySpec struct {
376	// The hostname/SNI to use for this host
377	//
378	// The hostname is the only required field, although other
379	// fields are expected to be present in most cases.
380	Hostname *string `protobuf:"bytes,1,opt,name=hostname" json:"hostname,omitempty"`
381	// The 32-bit ipv4 address, in network byte order
382	//
383	// If the IPv4 address is absent, then it may be resolved via
384	// DNS by the client, or the client may discard this decoy spec
385	// if local DNS is untrusted, or the service may be multihomed.
386	Ipv4Addr *uint32 `protobuf:"fixed32,2,opt,name=ipv4addr" json:"ipv4addr,omitempty"`
387	// The 128-bit ipv6 address, in network byte order
388	Ipv6Addr []byte `protobuf:"bytes,6,opt,name=ipv6addr" json:"ipv6addr,omitempty"`
389	// The Tapdance station public key to use when contacting this
390	// decoy
391	//
392	// If omitted, the default station public key (if any) is used.
393	Pubkey *PubKey `protobuf:"bytes,3,opt,name=pubkey" json:"pubkey,omitempty"`
394	// The maximum duration, in milliseconds, to maintain an open
395	// connection to this decoy (because the decoy may close the
396	// connection itself after this length of time)
397	//
398	// If omitted, a default of 30,000 milliseconds is assumed.
399	Timeout *uint32 `protobuf:"varint,4,opt,name=timeout" json:"timeout,omitempty"`
400	// The maximum TCP window size to attempt to use for this decoy.
401	//
402	// If omitted, a default of 15360 is assumed.
403	//
404	// TODO: the default is based on the current heuristic of only
405	// using decoys that permit windows of 15KB or larger.  If this
406	// heuristic changes, then this default doesn't make sense.
407	Tcpwin               *uint32  `protobuf:"varint,5,opt,name=tcpwin" json:"tcpwin,omitempty"`
408	XXX_NoUnkeyedLiteral struct{} `json:"-"`
409	XXX_unrecognized     []byte   `json:"-"`
410	XXX_sizecache        int32    `json:"-"`
411}
412
413func (m *TLSDecoySpec) Reset()         { *m = TLSDecoySpec{} }
414func (m *TLSDecoySpec) String() string { return proto.CompactTextString(m) }
415func (*TLSDecoySpec) ProtoMessage()    {}
416func (*TLSDecoySpec) Descriptor() ([]byte, []int) {
417	return fileDescriptor_39f66308029891ad, []int{1}
418}
419
420func (m *TLSDecoySpec) XXX_Unmarshal(b []byte) error {
421	return xxx_messageInfo_TLSDecoySpec.Unmarshal(m, b)
422}
423func (m *TLSDecoySpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
424	return xxx_messageInfo_TLSDecoySpec.Marshal(b, m, deterministic)
425}
426func (m *TLSDecoySpec) XXX_Merge(src proto.Message) {
427	xxx_messageInfo_TLSDecoySpec.Merge(m, src)
428}
429func (m *TLSDecoySpec) XXX_Size() int {
430	return xxx_messageInfo_TLSDecoySpec.Size(m)
431}
432func (m *TLSDecoySpec) XXX_DiscardUnknown() {
433	xxx_messageInfo_TLSDecoySpec.DiscardUnknown(m)
434}
435
436var xxx_messageInfo_TLSDecoySpec proto.InternalMessageInfo
437
438func (m *TLSDecoySpec) GetHostname() string {
439	if m != nil && m.Hostname != nil {
440		return *m.Hostname
441	}
442	return ""
443}
444
445func (m *TLSDecoySpec) GetIpv4Addr() uint32 {
446	if m != nil && m.Ipv4Addr != nil {
447		return *m.Ipv4Addr
448	}
449	return 0
450}
451
452func (m *TLSDecoySpec) GetIpv6Addr() []byte {
453	if m != nil {
454		return m.Ipv6Addr
455	}
456	return nil
457}
458
459func (m *TLSDecoySpec) GetPubkey() *PubKey {
460	if m != nil {
461		return m.Pubkey
462	}
463	return nil
464}
465
466func (m *TLSDecoySpec) GetTimeout() uint32 {
467	if m != nil && m.Timeout != nil {
468		return *m.Timeout
469	}
470	return 0
471}
472
473func (m *TLSDecoySpec) GetTcpwin() uint32 {
474	if m != nil && m.Tcpwin != nil {
475		return *m.Tcpwin
476	}
477	return 0
478}
479
480type ClientConf struct {
481	DecoyList            *DecoyList          `protobuf:"bytes,1,opt,name=decoy_list,json=decoyList" json:"decoy_list,omitempty"`
482	Generation           *uint32             `protobuf:"varint,2,opt,name=generation" json:"generation,omitempty"`
483	DefaultPubkey        *PubKey             `protobuf:"bytes,3,opt,name=default_pubkey,json=defaultPubkey" json:"default_pubkey,omitempty"`
484	PhantomSubnetsList   *PhantomSubnetsList `protobuf:"bytes,4,opt,name=phantom_subnets_list,json=phantomSubnetsList" json:"phantom_subnets_list,omitempty"`
485	ConjurePubkey        *PubKey             `protobuf:"bytes,5,opt,name=conjure_pubkey,json=conjurePubkey" json:"conjure_pubkey,omitempty"`
486	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
487	XXX_unrecognized     []byte              `json:"-"`
488	XXX_sizecache        int32               `json:"-"`
489}
490
491func (m *ClientConf) Reset()         { *m = ClientConf{} }
492func (m *ClientConf) String() string { return proto.CompactTextString(m) }
493func (*ClientConf) ProtoMessage()    {}
494func (*ClientConf) Descriptor() ([]byte, []int) {
495	return fileDescriptor_39f66308029891ad, []int{2}
496}
497
498func (m *ClientConf) XXX_Unmarshal(b []byte) error {
499	return xxx_messageInfo_ClientConf.Unmarshal(m, b)
500}
501func (m *ClientConf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
502	return xxx_messageInfo_ClientConf.Marshal(b, m, deterministic)
503}
504func (m *ClientConf) XXX_Merge(src proto.Message) {
505	xxx_messageInfo_ClientConf.Merge(m, src)
506}
507func (m *ClientConf) XXX_Size() int {
508	return xxx_messageInfo_ClientConf.Size(m)
509}
510func (m *ClientConf) XXX_DiscardUnknown() {
511	xxx_messageInfo_ClientConf.DiscardUnknown(m)
512}
513
514var xxx_messageInfo_ClientConf proto.InternalMessageInfo
515
516func (m *ClientConf) GetDecoyList() *DecoyList {
517	if m != nil {
518		return m.DecoyList
519	}
520	return nil
521}
522
523func (m *ClientConf) GetGeneration() uint32 {
524	if m != nil && m.Generation != nil {
525		return *m.Generation
526	}
527	return 0
528}
529
530func (m *ClientConf) GetDefaultPubkey() *PubKey {
531	if m != nil {
532		return m.DefaultPubkey
533	}
534	return nil
535}
536
537func (m *ClientConf) GetPhantomSubnetsList() *PhantomSubnetsList {
538	if m != nil {
539		return m.PhantomSubnetsList
540	}
541	return nil
542}
543
544func (m *ClientConf) GetConjurePubkey() *PubKey {
545	if m != nil {
546		return m.ConjurePubkey
547	}
548	return nil
549}
550
551type DecoyList struct {
552	TlsDecoys            []*TLSDecoySpec `protobuf:"bytes,1,rep,name=tls_decoys,json=tlsDecoys" json:"tls_decoys,omitempty"`
553	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
554	XXX_unrecognized     []byte          `json:"-"`
555	XXX_sizecache        int32           `json:"-"`
556}
557
558func (m *DecoyList) Reset()         { *m = DecoyList{} }
559func (m *DecoyList) String() string { return proto.CompactTextString(m) }
560func (*DecoyList) ProtoMessage()    {}
561func (*DecoyList) Descriptor() ([]byte, []int) {
562	return fileDescriptor_39f66308029891ad, []int{3}
563}
564
565func (m *DecoyList) XXX_Unmarshal(b []byte) error {
566	return xxx_messageInfo_DecoyList.Unmarshal(m, b)
567}
568func (m *DecoyList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
569	return xxx_messageInfo_DecoyList.Marshal(b, m, deterministic)
570}
571func (m *DecoyList) XXX_Merge(src proto.Message) {
572	xxx_messageInfo_DecoyList.Merge(m, src)
573}
574func (m *DecoyList) XXX_Size() int {
575	return xxx_messageInfo_DecoyList.Size(m)
576}
577func (m *DecoyList) XXX_DiscardUnknown() {
578	xxx_messageInfo_DecoyList.DiscardUnknown(m)
579}
580
581var xxx_messageInfo_DecoyList proto.InternalMessageInfo
582
583func (m *DecoyList) GetTlsDecoys() []*TLSDecoySpec {
584	if m != nil {
585		return m.TlsDecoys
586	}
587	return nil
588}
589
590type PhantomSubnetsList struct {
591	WeightedSubnets      []*PhantomSubnets `protobuf:"bytes,1,rep,name=weighted_subnets,json=weightedSubnets" json:"weighted_subnets,omitempty"`
592	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
593	XXX_unrecognized     []byte            `json:"-"`
594	XXX_sizecache        int32             `json:"-"`
595}
596
597func (m *PhantomSubnetsList) Reset()         { *m = PhantomSubnetsList{} }
598func (m *PhantomSubnetsList) String() string { return proto.CompactTextString(m) }
599func (*PhantomSubnetsList) ProtoMessage()    {}
600func (*PhantomSubnetsList) Descriptor() ([]byte, []int) {
601	return fileDescriptor_39f66308029891ad, []int{4}
602}
603
604func (m *PhantomSubnetsList) XXX_Unmarshal(b []byte) error {
605	return xxx_messageInfo_PhantomSubnetsList.Unmarshal(m, b)
606}
607func (m *PhantomSubnetsList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
608	return xxx_messageInfo_PhantomSubnetsList.Marshal(b, m, deterministic)
609}
610func (m *PhantomSubnetsList) XXX_Merge(src proto.Message) {
611	xxx_messageInfo_PhantomSubnetsList.Merge(m, src)
612}
613func (m *PhantomSubnetsList) XXX_Size() int {
614	return xxx_messageInfo_PhantomSubnetsList.Size(m)
615}
616func (m *PhantomSubnetsList) XXX_DiscardUnknown() {
617	xxx_messageInfo_PhantomSubnetsList.DiscardUnknown(m)
618}
619
620var xxx_messageInfo_PhantomSubnetsList proto.InternalMessageInfo
621
622func (m *PhantomSubnetsList) GetWeightedSubnets() []*PhantomSubnets {
623	if m != nil {
624		return m.WeightedSubnets
625	}
626	return nil
627}
628
629type PhantomSubnets struct {
630	Weight               *uint32  `protobuf:"varint,1,opt,name=weight" json:"weight,omitempty"`
631	Subnets              []string `protobuf:"bytes,2,rep,name=subnets" json:"subnets,omitempty"`
632	XXX_NoUnkeyedLiteral struct{} `json:"-"`
633	XXX_unrecognized     []byte   `json:"-"`
634	XXX_sizecache        int32    `json:"-"`
635}
636
637func (m *PhantomSubnets) Reset()         { *m = PhantomSubnets{} }
638func (m *PhantomSubnets) String() string { return proto.CompactTextString(m) }
639func (*PhantomSubnets) ProtoMessage()    {}
640func (*PhantomSubnets) Descriptor() ([]byte, []int) {
641	return fileDescriptor_39f66308029891ad, []int{5}
642}
643
644func (m *PhantomSubnets) XXX_Unmarshal(b []byte) error {
645	return xxx_messageInfo_PhantomSubnets.Unmarshal(m, b)
646}
647func (m *PhantomSubnets) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
648	return xxx_messageInfo_PhantomSubnets.Marshal(b, m, deterministic)
649}
650func (m *PhantomSubnets) XXX_Merge(src proto.Message) {
651	xxx_messageInfo_PhantomSubnets.Merge(m, src)
652}
653func (m *PhantomSubnets) XXX_Size() int {
654	return xxx_messageInfo_PhantomSubnets.Size(m)
655}
656func (m *PhantomSubnets) XXX_DiscardUnknown() {
657	xxx_messageInfo_PhantomSubnets.DiscardUnknown(m)
658}
659
660var xxx_messageInfo_PhantomSubnets proto.InternalMessageInfo
661
662func (m *PhantomSubnets) GetWeight() uint32 {
663	if m != nil && m.Weight != nil {
664		return *m.Weight
665	}
666	return 0
667}
668
669func (m *PhantomSubnets) GetSubnets() []string {
670	if m != nil {
671		return m.Subnets
672	}
673	return nil
674}
675
676type StationToClient struct {
677	// Should accompany (at least) SESSION_INIT and CONFIRM_RECONNECT.
678	ProtocolVersion *uint32 `protobuf:"varint,1,opt,name=protocol_version,json=protocolVersion" json:"protocol_version,omitempty"`
679	// There might be a state transition. May be absent; absence should be
680	// treated identically to NO_CHANGE.
681	StateTransition *S2C_Transition `protobuf:"varint,2,opt,name=state_transition,json=stateTransition,enum=tapdance.S2C_Transition" json:"state_transition,omitempty"`
682	// The station can send client config info piggybacked
683	// on any message, as it sees fit
684	ConfigInfo *ClientConf `protobuf:"bytes,3,opt,name=config_info,json=configInfo" json:"config_info,omitempty"`
685	// If state_transition == S2C_ERROR, this field is the explanation.
686	ErrReason *ErrorReasonS2C `protobuf:"varint,4,opt,name=err_reason,json=errReason,enum=tapdance.ErrorReasonS2C" json:"err_reason,omitempty"`
687	// Signals client to stop connecting for following amount of seconds
688	TmpBackoff *uint32 `protobuf:"varint,5,opt,name=tmp_backoff,json=tmpBackoff" json:"tmp_backoff,omitempty"`
689	// Sent in SESSION_INIT, identifies the station that picked up
690	StationId *string `protobuf:"bytes,6,opt,name=station_id,json=stationId" json:"station_id,omitempty"`
691	// Random-sized junk to defeat packet size fingerprinting.
692	Padding              []byte   `protobuf:"bytes,100,opt,name=padding" json:"padding,omitempty"`
693	XXX_NoUnkeyedLiteral struct{} `json:"-"`
694	XXX_unrecognized     []byte   `json:"-"`
695	XXX_sizecache        int32    `json:"-"`
696}
697
698func (m *StationToClient) Reset()         { *m = StationToClient{} }
699func (m *StationToClient) String() string { return proto.CompactTextString(m) }
700func (*StationToClient) ProtoMessage()    {}
701func (*StationToClient) Descriptor() ([]byte, []int) {
702	return fileDescriptor_39f66308029891ad, []int{6}
703}
704
705func (m *StationToClient) XXX_Unmarshal(b []byte) error {
706	return xxx_messageInfo_StationToClient.Unmarshal(m, b)
707}
708func (m *StationToClient) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
709	return xxx_messageInfo_StationToClient.Marshal(b, m, deterministic)
710}
711func (m *StationToClient) XXX_Merge(src proto.Message) {
712	xxx_messageInfo_StationToClient.Merge(m, src)
713}
714func (m *StationToClient) XXX_Size() int {
715	return xxx_messageInfo_StationToClient.Size(m)
716}
717func (m *StationToClient) XXX_DiscardUnknown() {
718	xxx_messageInfo_StationToClient.DiscardUnknown(m)
719}
720
721var xxx_messageInfo_StationToClient proto.InternalMessageInfo
722
723func (m *StationToClient) GetProtocolVersion() uint32 {
724	if m != nil && m.ProtocolVersion != nil {
725		return *m.ProtocolVersion
726	}
727	return 0
728}
729
730func (m *StationToClient) GetStateTransition() S2C_Transition {
731	if m != nil && m.StateTransition != nil {
732		return *m.StateTransition
733	}
734	return S2C_Transition_S2C_NO_CHANGE
735}
736
737func (m *StationToClient) GetConfigInfo() *ClientConf {
738	if m != nil {
739		return m.ConfigInfo
740	}
741	return nil
742}
743
744func (m *StationToClient) GetErrReason() ErrorReasonS2C {
745	if m != nil && m.ErrReason != nil {
746		return *m.ErrReason
747	}
748	return ErrorReasonS2C_NO_ERROR
749}
750
751func (m *StationToClient) GetTmpBackoff() uint32 {
752	if m != nil && m.TmpBackoff != nil {
753		return *m.TmpBackoff
754	}
755	return 0
756}
757
758func (m *StationToClient) GetStationId() string {
759	if m != nil && m.StationId != nil {
760		return *m.StationId
761	}
762	return ""
763}
764
765func (m *StationToClient) GetPadding() []byte {
766	if m != nil {
767		return m.Padding
768	}
769	return nil
770}
771
772type RegistrationFlags struct {
773	UploadOnly           *bool    `protobuf:"varint,1,opt,name=upload_only,json=uploadOnly" json:"upload_only,omitempty"`
774	DarkDecoy            *bool    `protobuf:"varint,2,opt,name=dark_decoy,json=darkDecoy" json:"dark_decoy,omitempty"`
775	ProxyHeader          *bool    `protobuf:"varint,3,opt,name=proxy_header,json=proxyHeader" json:"proxy_header,omitempty"`
776	Use_TIL              *bool    `protobuf:"varint,4,opt,name=use_TIL,json=useTIL" json:"use_TIL,omitempty"`
777	Prescanned           *bool    `protobuf:"varint,5,opt,name=prescanned" json:"prescanned,omitempty"`
778	XXX_NoUnkeyedLiteral struct{} `json:"-"`
779	XXX_unrecognized     []byte   `json:"-"`
780	XXX_sizecache        int32    `json:"-"`
781}
782
783func (m *RegistrationFlags) Reset()         { *m = RegistrationFlags{} }
784func (m *RegistrationFlags) String() string { return proto.CompactTextString(m) }
785func (*RegistrationFlags) ProtoMessage()    {}
786func (*RegistrationFlags) Descriptor() ([]byte, []int) {
787	return fileDescriptor_39f66308029891ad, []int{7}
788}
789
790func (m *RegistrationFlags) XXX_Unmarshal(b []byte) error {
791	return xxx_messageInfo_RegistrationFlags.Unmarshal(m, b)
792}
793func (m *RegistrationFlags) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
794	return xxx_messageInfo_RegistrationFlags.Marshal(b, m, deterministic)
795}
796func (m *RegistrationFlags) XXX_Merge(src proto.Message) {
797	xxx_messageInfo_RegistrationFlags.Merge(m, src)
798}
799func (m *RegistrationFlags) XXX_Size() int {
800	return xxx_messageInfo_RegistrationFlags.Size(m)
801}
802func (m *RegistrationFlags) XXX_DiscardUnknown() {
803	xxx_messageInfo_RegistrationFlags.DiscardUnknown(m)
804}
805
806var xxx_messageInfo_RegistrationFlags proto.InternalMessageInfo
807
808func (m *RegistrationFlags) GetUploadOnly() bool {
809	if m != nil && m.UploadOnly != nil {
810		return *m.UploadOnly
811	}
812	return false
813}
814
815func (m *RegistrationFlags) GetDarkDecoy() bool {
816	if m != nil && m.DarkDecoy != nil {
817		return *m.DarkDecoy
818	}
819	return false
820}
821
822func (m *RegistrationFlags) GetProxyHeader() bool {
823	if m != nil && m.ProxyHeader != nil {
824		return *m.ProxyHeader
825	}
826	return false
827}
828
829func (m *RegistrationFlags) GetUse_TIL() bool {
830	if m != nil && m.Use_TIL != nil {
831		return *m.Use_TIL
832	}
833	return false
834}
835
836func (m *RegistrationFlags) GetPrescanned() bool {
837	if m != nil && m.Prescanned != nil {
838		return *m.Prescanned
839	}
840	return false
841}
842
843type ClientToStation struct {
844	ProtocolVersion *uint32 `protobuf:"varint,1,opt,name=protocol_version,json=protocolVersion" json:"protocol_version,omitempty"`
845	// The client reports its decoy list's version number here, which the
846	// station can use to decide whether to send an updated one. The station
847	// should always send a list if this field is set to 0.
848	DecoyListGeneration *uint32         `protobuf:"varint,2,opt,name=decoy_list_generation,json=decoyListGeneration" json:"decoy_list_generation,omitempty"`
849	StateTransition     *C2S_Transition `protobuf:"varint,3,opt,name=state_transition,json=stateTransition,enum=tapdance.C2S_Transition" json:"state_transition,omitempty"`
850	// The position in the overall session's upload sequence where the current
851	// YIELD=>ACQUIRE switchover is happening.
852	UploadSync *uint64 `protobuf:"varint,4,opt,name=upload_sync,json=uploadSync" json:"upload_sync,omitempty"`
853	// List of decoys that client have unsuccessfully tried in current session.
854	// Could be sent in chunks
855	FailedDecoys []string      `protobuf:"bytes,10,rep,name=failed_decoys,json=failedDecoys" json:"failed_decoys,omitempty"`
856	Stats        *SessionStats `protobuf:"bytes,11,opt,name=stats" json:"stats,omitempty"`
857	// NullTransport, MinTransport, Obfs4Transport, etc. Transport type we want from phantom proxy
858	Transport *TransportType `protobuf:"varint,12,opt,name=transport,enum=tapdance.TransportType" json:"transport,omitempty"`
859	// Station is only required to check this variable during session initialization.
860	// If set, station must facilitate connection to said target by itself, i.e. write into squid
861	// socket an HTTP/SOCKS/any other connection request.
862	// covert_address must have exactly one ':' colon, that separates host (literal IP address or
863	// resolvable hostname) and port
864	// TODO: make it required for initialization, and stop connecting any client straight to squid?
865	CovertAddress *string `protobuf:"bytes,20,opt,name=covert_address,json=covertAddress" json:"covert_address,omitempty"`
866	// Used in dark decoys to signal which dark decoy it will connect to.
867	MaskedDecoyServerName *string `protobuf:"bytes,21,opt,name=masked_decoy_server_name,json=maskedDecoyServerName" json:"masked_decoy_server_name,omitempty"`
868	// Used to indicate to server if client is registering v4, v6 or both
869	V6Support *bool `protobuf:"varint,22,opt,name=v6_support,json=v6Support" json:"v6_support,omitempty"`
870	V4Support *bool `protobuf:"varint,23,opt,name=v4_support,json=v4Support" json:"v4_support,omitempty"`
871	// A collection of optional flags for the registration.
872	Flags *RegistrationFlags `protobuf:"bytes,24,opt,name=flags" json:"flags,omitempty"`
873	// Random-sized junk to defeat packet size fingerprinting.
874	Padding              []byte   `protobuf:"bytes,100,opt,name=padding" json:"padding,omitempty"`
875	XXX_NoUnkeyedLiteral struct{} `json:"-"`
876	XXX_unrecognized     []byte   `json:"-"`
877	XXX_sizecache        int32    `json:"-"`
878}
879
880func (m *ClientToStation) Reset()         { *m = ClientToStation{} }
881func (m *ClientToStation) String() string { return proto.CompactTextString(m) }
882func (*ClientToStation) ProtoMessage()    {}
883func (*ClientToStation) Descriptor() ([]byte, []int) {
884	return fileDescriptor_39f66308029891ad, []int{8}
885}
886
887func (m *ClientToStation) XXX_Unmarshal(b []byte) error {
888	return xxx_messageInfo_ClientToStation.Unmarshal(m, b)
889}
890func (m *ClientToStation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
891	return xxx_messageInfo_ClientToStation.Marshal(b, m, deterministic)
892}
893func (m *ClientToStation) XXX_Merge(src proto.Message) {
894	xxx_messageInfo_ClientToStation.Merge(m, src)
895}
896func (m *ClientToStation) XXX_Size() int {
897	return xxx_messageInfo_ClientToStation.Size(m)
898}
899func (m *ClientToStation) XXX_DiscardUnknown() {
900	xxx_messageInfo_ClientToStation.DiscardUnknown(m)
901}
902
903var xxx_messageInfo_ClientToStation proto.InternalMessageInfo
904
905func (m *ClientToStation) GetProtocolVersion() uint32 {
906	if m != nil && m.ProtocolVersion != nil {
907		return *m.ProtocolVersion
908	}
909	return 0
910}
911
912func (m *ClientToStation) GetDecoyListGeneration() uint32 {
913	if m != nil && m.DecoyListGeneration != nil {
914		return *m.DecoyListGeneration
915	}
916	return 0
917}
918
919func (m *ClientToStation) GetStateTransition() C2S_Transition {
920	if m != nil && m.StateTransition != nil {
921		return *m.StateTransition
922	}
923	return C2S_Transition_C2S_NO_CHANGE
924}
925
926func (m *ClientToStation) GetUploadSync() uint64 {
927	if m != nil && m.UploadSync != nil {
928		return *m.UploadSync
929	}
930	return 0
931}
932
933func (m *ClientToStation) GetFailedDecoys() []string {
934	if m != nil {
935		return m.FailedDecoys
936	}
937	return nil
938}
939
940func (m *ClientToStation) GetStats() *SessionStats {
941	if m != nil {
942		return m.Stats
943	}
944	return nil
945}
946
947func (m *ClientToStation) GetTransport() TransportType {
948	if m != nil && m.Transport != nil {
949		return *m.Transport
950	}
951	return TransportType_Null
952}
953
954func (m *ClientToStation) GetCovertAddress() string {
955	if m != nil && m.CovertAddress != nil {
956		return *m.CovertAddress
957	}
958	return ""
959}
960
961func (m *ClientToStation) GetMaskedDecoyServerName() string {
962	if m != nil && m.MaskedDecoyServerName != nil {
963		return *m.MaskedDecoyServerName
964	}
965	return ""
966}
967
968func (m *ClientToStation) GetV6Support() bool {
969	if m != nil && m.V6Support != nil {
970		return *m.V6Support
971	}
972	return false
973}
974
975func (m *ClientToStation) GetV4Support() bool {
976	if m != nil && m.V4Support != nil {
977		return *m.V4Support
978	}
979	return false
980}
981
982func (m *ClientToStation) GetFlags() *RegistrationFlags {
983	if m != nil {
984		return m.Flags
985	}
986	return nil
987}
988
989func (m *ClientToStation) GetPadding() []byte {
990	if m != nil {
991		return m.Padding
992	}
993	return nil
994}
995
996type C2SWrapper struct {
997	SharedSecret        []byte              `protobuf:"bytes,1,opt,name=shared_secret,json=sharedSecret" json:"shared_secret,omitempty"`
998	RegistrationPayload *ClientToStation    `protobuf:"bytes,3,opt,name=registration_payload,json=registrationPayload" json:"registration_payload,omitempty"`
999	RegistrationSource  *RegistrationSource `protobuf:"varint,4,opt,name=registration_source,json=registrationSource,enum=tapdance.RegistrationSource" json:"registration_source,omitempty"`
1000	// client source address when receiving a registration
1001	RegistrationAddress []byte `protobuf:"bytes,6,opt,name=registration_address,json=registrationAddress" json:"registration_address,omitempty"`
1002	// Decoy address used when registering over Decoy registrar
1003	DecoyAddress         []byte   `protobuf:"bytes,7,opt,name=decoy_address,json=decoyAddress" json:"decoy_address,omitempty"`
1004	XXX_NoUnkeyedLiteral struct{} `json:"-"`
1005	XXX_unrecognized     []byte   `json:"-"`
1006	XXX_sizecache        int32    `json:"-"`
1007}
1008
1009func (m *C2SWrapper) Reset()         { *m = C2SWrapper{} }
1010func (m *C2SWrapper) String() string { return proto.CompactTextString(m) }
1011func (*C2SWrapper) ProtoMessage()    {}
1012func (*C2SWrapper) Descriptor() ([]byte, []int) {
1013	return fileDescriptor_39f66308029891ad, []int{9}
1014}
1015
1016func (m *C2SWrapper) XXX_Unmarshal(b []byte) error {
1017	return xxx_messageInfo_C2SWrapper.Unmarshal(m, b)
1018}
1019func (m *C2SWrapper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1020	return xxx_messageInfo_C2SWrapper.Marshal(b, m, deterministic)
1021}
1022func (m *C2SWrapper) XXX_Merge(src proto.Message) {
1023	xxx_messageInfo_C2SWrapper.Merge(m, src)
1024}
1025func (m *C2SWrapper) XXX_Size() int {
1026	return xxx_messageInfo_C2SWrapper.Size(m)
1027}
1028func (m *C2SWrapper) XXX_DiscardUnknown() {
1029	xxx_messageInfo_C2SWrapper.DiscardUnknown(m)
1030}
1031
1032var xxx_messageInfo_C2SWrapper proto.InternalMessageInfo
1033
1034func (m *C2SWrapper) GetSharedSecret() []byte {
1035	if m != nil {
1036		return m.SharedSecret
1037	}
1038	return nil
1039}
1040
1041func (m *C2SWrapper) GetRegistrationPayload() *ClientToStation {
1042	if m != nil {
1043		return m.RegistrationPayload
1044	}
1045	return nil
1046}
1047
1048func (m *C2SWrapper) GetRegistrationSource() RegistrationSource {
1049	if m != nil && m.RegistrationSource != nil {
1050		return *m.RegistrationSource
1051	}
1052	return RegistrationSource_Unspecified
1053}
1054
1055func (m *C2SWrapper) GetRegistrationAddress() []byte {
1056	if m != nil {
1057		return m.RegistrationAddress
1058	}
1059	return nil
1060}
1061
1062func (m *C2SWrapper) GetDecoyAddress() []byte {
1063	if m != nil {
1064		return m.DecoyAddress
1065	}
1066	return nil
1067}
1068
1069type SessionStats struct {
1070	FailedDecoysAmount *uint32 `protobuf:"varint,20,opt,name=failed_decoys_amount,json=failedDecoysAmount" json:"failed_decoys_amount,omitempty"`
1071	// Applicable to whole session:
1072	TotalTimeToConnect *uint32 `protobuf:"varint,31,opt,name=total_time_to_connect,json=totalTimeToConnect" json:"total_time_to_connect,omitempty"`
1073	// Last (i.e. successful) decoy:
1074	RttToStation         *uint32  `protobuf:"varint,33,opt,name=rtt_to_station,json=rttToStation" json:"rtt_to_station,omitempty"`
1075	TlsToDecoy           *uint32  `protobuf:"varint,38,opt,name=tls_to_decoy,json=tlsToDecoy" json:"tls_to_decoy,omitempty"`
1076	TcpToDecoy           *uint32  `protobuf:"varint,39,opt,name=tcp_to_decoy,json=tcpToDecoy" json:"tcp_to_decoy,omitempty"`
1077	XXX_NoUnkeyedLiteral struct{} `json:"-"`
1078	XXX_unrecognized     []byte   `json:"-"`
1079	XXX_sizecache        int32    `json:"-"`
1080}
1081
1082func (m *SessionStats) Reset()         { *m = SessionStats{} }
1083func (m *SessionStats) String() string { return proto.CompactTextString(m) }
1084func (*SessionStats) ProtoMessage()    {}
1085func (*SessionStats) Descriptor() ([]byte, []int) {
1086	return fileDescriptor_39f66308029891ad, []int{10}
1087}
1088
1089func (m *SessionStats) XXX_Unmarshal(b []byte) error {
1090	return xxx_messageInfo_SessionStats.Unmarshal(m, b)
1091}
1092func (m *SessionStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1093	return xxx_messageInfo_SessionStats.Marshal(b, m, deterministic)
1094}
1095func (m *SessionStats) XXX_Merge(src proto.Message) {
1096	xxx_messageInfo_SessionStats.Merge(m, src)
1097}
1098func (m *SessionStats) XXX_Size() int {
1099	return xxx_messageInfo_SessionStats.Size(m)
1100}
1101func (m *SessionStats) XXX_DiscardUnknown() {
1102	xxx_messageInfo_SessionStats.DiscardUnknown(m)
1103}
1104
1105var xxx_messageInfo_SessionStats proto.InternalMessageInfo
1106
1107func (m *SessionStats) GetFailedDecoysAmount() uint32 {
1108	if m != nil && m.FailedDecoysAmount != nil {
1109		return *m.FailedDecoysAmount
1110	}
1111	return 0
1112}
1113
1114func (m *SessionStats) GetTotalTimeToConnect() uint32 {
1115	if m != nil && m.TotalTimeToConnect != nil {
1116		return *m.TotalTimeToConnect
1117	}
1118	return 0
1119}
1120
1121func (m *SessionStats) GetRttToStation() uint32 {
1122	if m != nil && m.RttToStation != nil {
1123		return *m.RttToStation
1124	}
1125	return 0
1126}
1127
1128func (m *SessionStats) GetTlsToDecoy() uint32 {
1129	if m != nil && m.TlsToDecoy != nil {
1130		return *m.TlsToDecoy
1131	}
1132	return 0
1133}
1134
1135func (m *SessionStats) GetTcpToDecoy() uint32 {
1136	if m != nil && m.TcpToDecoy != nil {
1137		return *m.TcpToDecoy
1138	}
1139	return 0
1140}
1141
1142type StationToDetector struct {
1143	PhantomIp            *string  `protobuf:"bytes,1,opt,name=phantom_ip,json=phantomIp" json:"phantom_ip,omitempty"`
1144	ClientIp             *string  `protobuf:"bytes,2,opt,name=client_ip,json=clientIp" json:"client_ip,omitempty"`
1145	TimeoutNs            *uint64  `protobuf:"varint,3,opt,name=timeout_ns,json=timeoutNs" json:"timeout_ns,omitempty"`
1146	XXX_NoUnkeyedLiteral struct{} `json:"-"`
1147	XXX_unrecognized     []byte   `json:"-"`
1148	XXX_sizecache        int32    `json:"-"`
1149}
1150
1151func (m *StationToDetector) Reset()         { *m = StationToDetector{} }
1152func (m *StationToDetector) String() string { return proto.CompactTextString(m) }
1153func (*StationToDetector) ProtoMessage()    {}
1154func (*StationToDetector) Descriptor() ([]byte, []int) {
1155	return fileDescriptor_39f66308029891ad, []int{11}
1156}
1157
1158func (m *StationToDetector) XXX_Unmarshal(b []byte) error {
1159	return xxx_messageInfo_StationToDetector.Unmarshal(m, b)
1160}
1161func (m *StationToDetector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1162	return xxx_messageInfo_StationToDetector.Marshal(b, m, deterministic)
1163}
1164func (m *StationToDetector) XXX_Merge(src proto.Message) {
1165	xxx_messageInfo_StationToDetector.Merge(m, src)
1166}
1167func (m *StationToDetector) XXX_Size() int {
1168	return xxx_messageInfo_StationToDetector.Size(m)
1169}
1170func (m *StationToDetector) XXX_DiscardUnknown() {
1171	xxx_messageInfo_StationToDetector.DiscardUnknown(m)
1172}
1173
1174var xxx_messageInfo_StationToDetector proto.InternalMessageInfo
1175
1176func (m *StationToDetector) GetPhantomIp() string {
1177	if m != nil && m.PhantomIp != nil {
1178		return *m.PhantomIp
1179	}
1180	return ""
1181}
1182
1183func (m *StationToDetector) GetClientIp() string {
1184	if m != nil && m.ClientIp != nil {
1185		return *m.ClientIp
1186	}
1187	return ""
1188}
1189
1190func (m *StationToDetector) GetTimeoutNs() uint64 {
1191	if m != nil && m.TimeoutNs != nil {
1192		return *m.TimeoutNs
1193	}
1194	return 0
1195}
1196
1197func init() {
1198	proto.RegisterEnum("tapdance.KeyType", KeyType_name, KeyType_value)
1199	proto.RegisterEnum("tapdance.C2S_Transition", C2S_Transition_name, C2S_Transition_value)
1200	proto.RegisterEnum("tapdance.S2C_Transition", S2C_Transition_name, S2C_Transition_value)
1201	proto.RegisterEnum("tapdance.ErrorReasonS2C", ErrorReasonS2C_name, ErrorReasonS2C_value)
1202	proto.RegisterEnum("tapdance.TransportType", TransportType_name, TransportType_value)
1203	proto.RegisterEnum("tapdance.RegistrationSource", RegistrationSource_name, RegistrationSource_value)
1204	proto.RegisterType((*PubKey)(nil), "tapdance.PubKey")
1205	proto.RegisterType((*TLSDecoySpec)(nil), "tapdance.TLSDecoySpec")
1206	proto.RegisterType((*ClientConf)(nil), "tapdance.ClientConf")
1207	proto.RegisterType((*DecoyList)(nil), "tapdance.DecoyList")
1208	proto.RegisterType((*PhantomSubnetsList)(nil), "tapdance.PhantomSubnetsList")
1209	proto.RegisterType((*PhantomSubnets)(nil), "tapdance.PhantomSubnets")
1210	proto.RegisterType((*StationToClient)(nil), "tapdance.StationToClient")
1211	proto.RegisterType((*RegistrationFlags)(nil), "tapdance.RegistrationFlags")
1212	proto.RegisterType((*ClientToStation)(nil), "tapdance.ClientToStation")
1213	proto.RegisterType((*C2SWrapper)(nil), "tapdance.C2SWrapper")
1214	proto.RegisterType((*SessionStats)(nil), "tapdance.SessionStats")
1215	proto.RegisterType((*StationToDetector)(nil), "tapdance.StationToDetector")
1216}
1217
1218func init() { proto.RegisterFile("signalling.proto", fileDescriptor_39f66308029891ad) }
1219
1220var fileDescriptor_39f66308029891ad = []byte{
1221	// 1542 bytes of a gzipped FileDescriptorProto
1222	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0xcd, 0x72, 0xe3, 0xc6,
1223	0x11, 0x5e, 0x88, 0x94, 0x44, 0x34, 0x7f, 0x04, 0xcd, 0x4a, 0xbb, 0x70, 0x76, 0x1d, 0xd3, 0x74,
1224	0x9c, 0x28, 0x4a, 0xb2, 0x95, 0x65, 0xed, 0x4f, 0xae, 0x5c, 0x08, 0x5e, 0xb3, 0x4c, 0x11, 0xf4,
1225	0x00, 0xeb, 0x64, 0x93, 0xc3, 0x14, 0x04, 0x0c, 0x29, 0x44, 0x20, 0x80, 0xc2, 0x0c, 0xe5, 0xf0,
1226	0x4d, 0x72, 0xce, 0x21, 0xa7, 0x54, 0xe5, 0x0d, 0xf2, 0x02, 0x7e, 0x86, 0x9c, 0xf3, 0x18, 0x49,
1227	0xcd, 0x0f, 0x48, 0x50, 0xb2, 0x37, 0xe5, 0x1b, 0xe6, 0xeb, 0xee, 0x99, 0xfe, 0xa6, 0xbf, 0xe9,
1228	0x06, 0x58, 0x2c, 0x59, 0x64, 0x61, 0x9a, 0x26, 0xd9, 0xe2, 0x59, 0x51, 0xe6, 0x3c, 0x47, 0x2d,
1229	0x1e, 0x16, 0x71, 0x98, 0x45, 0x74, 0x30, 0x82, 0x83, 0xd9, 0xea, 0xea, 0x2b, 0xba, 0x46, 0x16,
1230	0x34, 0x6e, 0xe8, 0xda, 0x36, 0xfa, 0xc6, 0x59, 0x07, 0x8b, 0x4f, 0xf4, 0x39, 0x34, 0xf9, 0xba,
1231	0xa0, 0xf6, 0x5e, 0xdf, 0x38, 0xeb, 0x0d, 0x8f, 0x9f, 0x55, 0x41, 0xcf, 0xbe, 0xa2, 0xeb, 0x60,
1232	0x5d, 0x50, 0x2c, 0xcd, 0x83, 0x7f, 0x19, 0xd0, 0x09, 0x26, 0xfe, 0x05, 0x8d, 0xf2, 0xb5, 0x5f,
1233	0xd0, 0x08, 0xfd, 0x04, 0x5a, 0xd7, 0x39, 0xe3, 0x59, 0xb8, 0xa4, 0x72, 0x3b, 0x13, 0x6f, 0xd6,
1234	0xc2, 0x96, 0x14, 0xb7, 0x2f, 0xc2, 0x38, 0x2e, 0xe5, 0xbe, 0x87, 0x78, 0xb3, 0xd6, 0xb6, 0x57,
1235	0xd2, 0x76, 0x20, 0xd3, 0xd8, 0xac, 0xd1, 0x19, 0x1c, 0x14, 0xab, 0x2b, 0x91, 0x60, 0xa3, 0x6f,
1236	0x9c, 0xb5, 0x87, 0xd6, 0x36, 0x1b, 0x95, 0x3f, 0xd6, 0x76, 0x64, 0xc3, 0x21, 0x4f, 0x96, 0x34,
1237	0x5f, 0x71, 0xbb, 0xd9, 0x37, 0xce, 0xba, 0xb8, 0x5a, 0xa2, 0x47, 0x70, 0xc0, 0xa3, 0xe2, 0xdb,
1238	0x24, 0xb3, 0xf7, 0xa5, 0x41, 0xaf, 0x06, 0x7f, 0xdb, 0x03, 0x70, 0xd2, 0x84, 0x66, 0xdc, 0xc9,
1239	0xb3, 0x39, 0x1a, 0x02, 0xc4, 0x82, 0x0b, 0x49, 0x13, 0xc6, 0x25, 0x81, 0xf6, 0xf0, 0xe1, 0xf6,
1240	0x38, 0xc9, 0x73, 0x92, 0x30, 0x8e, 0xcd, 0xb8, 0xfa, 0x44, 0x3f, 0x05, 0x58, 0xd0, 0x8c, 0x96,
1241	0x21, 0x4f, 0xf2, 0x4c, 0x12, 0xeb, 0xe2, 0x1a, 0x82, 0x5e, 0x43, 0x2f, 0xa6, 0xf3, 0x70, 0x95,
1242	0x72, 0xf2, 0x7f, 0x68, 0x74, 0xb5, 0xdf, 0x4c, 0xb1, 0x99, 0xc2, 0x49, 0x71, 0x1d, 0x66, 0x3c,
1243	0x5f, 0x12, 0xb6, 0xba, 0xca, 0x28, 0x67, 0x2a, 0xad, 0xa6, 0x0c, 0x7f, 0x5a, 0x0b, 0x57, 0x5e,
1244	0xbe, 0x72, 0x92, 0xf9, 0xa1, 0xe2, 0x1e, 0x26, 0x12, 0x89, 0xf2, 0xec, 0xcf, 0xab, 0x92, 0x56,
1245	0x89, 0xec, 0xff, 0x50, 0x22, 0xda, 0x4f, 0x25, 0x32, 0x78, 0x03, 0xe6, 0x86, 0x39, 0x7a, 0x09,
1246	0xc0, 0x53, 0x46, 0x24, 0x7f, 0x66, 0x1b, 0xfd, 0xc6, 0x59, 0x7b, 0xf8, 0x68, 0xbb, 0x43, 0x5d,
1247	0x0d, 0xd8, 0xe4, 0x29, 0x93, 0x2b, 0x36, 0x78, 0x0f, 0xe8, 0x7e, 0x9a, 0xc8, 0x01, 0xeb, 0x5b,
1248	0x9a, 0x2c, 0xae, 0x39, 0x8d, 0x2b, 0x8e, 0x7a, 0x4b, 0xfb, 0x87, 0xe8, 0xe1, 0xa3, 0x2a, 0x42,
1249	0x03, 0x83, 0x37, 0xd0, 0xdb, 0x75, 0x11, 0xd5, 0x56, 0x4e, 0xb2, 0x84, 0x5d, 0xac, 0x57, 0x42,
1250	0x1f, 0xd5, 0x29, 0x7b, 0xfd, 0xc6, 0x99, 0x89, 0xab, 0xe5, 0xe0, 0xbb, 0x3d, 0x38, 0xf2, 0xb9,
1251	0x2c, 0x58, 0x90, 0x2b, 0x41, 0xa0, 0x5f, 0x82, 0x25, 0x9f, 0x4c, 0x94, 0xa7, 0xe4, 0x96, 0x96,
1252	0x4c, 0x94, 0x57, 0xed, 0x77, 0x54, 0xe1, 0xdf, 0x28, 0x58, 0xf0, 0x60, 0x3c, 0xe4, 0x94, 0xf0,
1253	0x32, 0xcc, 0x58, 0xb2, 0x51, 0x42, 0xaf, 0xce, 0xc3, 0x1f, 0x3a, 0x24, 0xd8, 0xd8, 0xf1, 0x91,
1254	0x8c, 0xd8, 0x02, 0xe8, 0x25, 0xb4, 0xa3, 0x3c, 0x9b, 0x27, 0x0b, 0x92, 0x64, 0xf3, 0x5c, 0xab,
1255	0xe4, 0x64, 0x1b, 0xbf, 0xd5, 0x29, 0x06, 0xe5, 0x38, 0xce, 0xe6, 0x39, 0x7a, 0x0d, 0x40, 0xcb,
1256	0x92, 0x94, 0x34, 0x64, 0x79, 0x26, 0xc5, 0xb1, 0x73, 0xaa, 0x5b, 0x96, 0x79, 0x89, 0xa5, 0xd1,
1257	0x1f, 0x3a, 0xd8, 0xa4, 0xa5, 0x5e, 0xa1, 0x4f, 0xa0, 0xcd, 0x97, 0x05, 0xb9, 0x0a, 0xa3, 0x9b,
1258	0x7c, 0x3e, 0xd7, 0x0f, 0x03, 0xf8, 0xb2, 0x78, 0xa3, 0x10, 0xf4, 0x31, 0x00, 0x53, 0x77, 0x42,
1259	0x92, 0x58, 0x3e, 0x4b, 0x13, 0x9b, 0x1a, 0x19, 0xc7, 0xe2, 0x36, 0x8b, 0x30, 0x8e, 0x93, 0x6c,
1260	0x61, 0xc7, 0xf2, 0xc9, 0x56, 0xcb, 0xc1, 0x3f, 0x0d, 0x38, 0xc6, 0x74, 0x91, 0x30, 0xae, 0xde,
1261	0xc0, 0x17, 0x69, 0xb8, 0x60, 0xe2, 0xbc, 0x55, 0x91, 0xe6, 0x61, 0x4c, 0xf2, 0x2c, 0x55, 0xdd,
1262	0xa6, 0x85, 0x41, 0x41, 0x5e, 0x96, 0xae, 0xc5, 0x79, 0x71, 0x58, 0xde, 0x28, 0x6d, 0xc9, 0xfb,
1263	0x6b, 0x61, 0x53, 0x20, 0x52, 0x43, 0xe8, 0x53, 0xe8, 0x14, 0x65, 0xfe, 0x97, 0x35, 0xb9, 0xa6,
1264	0x61, 0x4c, 0x4b, 0x79, 0x41, 0x2d, 0xdc, 0x96, 0xd8, 0x97, 0x12, 0x42, 0x8f, 0xe1, 0x70, 0xc5,
1265	0x28, 0x09, 0xc6, 0x13, 0x79, 0x11, 0x2d, 0x7c, 0xb0, 0x62, 0x34, 0x18, 0x4f, 0xc4, 0x23, 0x2d,
1266	0x4a, 0xca, 0xa2, 0x30, 0xcb, 0x68, 0x2c, 0xa9, 0xb6, 0x70, 0x0d, 0x19, 0x7c, 0xd7, 0x84, 0x23,
1267	0x75, 0xbf, 0x41, 0xae, 0x75, 0xf0, 0x63, 0xea, 0x3f, 0x84, 0xd3, 0x6d, 0xdf, 0x20, 0xf7, 0xda,
1268	0xc1, 0xc3, 0x4d, 0xb7, 0x78, 0xbb, 0xed, 0x0b, 0xdf, 0xa7, 0x99, 0xc6, 0xdd, 0xea, 0x39, 0x43,
1269	0xff, 0x83, 0x9a, 0xd9, 0xde, 0x29, 0x5b, 0x67, 0x91, 0x24, 0xdd, 0xac, 0xee, 0xd4, 0x5f, 0x67,
1270	0x11, 0xfa, 0x0c, 0xba, 0xf3, 0x30, 0x49, 0x69, 0x5c, 0xbd, 0x58, 0x90, 0xc2, 0xef, 0x28, 0x50,
1271	0x3d, 0x4e, 0xf4, 0x6b, 0xd8, 0x17, 0x1b, 0x33, 0xbb, 0x2d, 0x35, 0x57, 0x7b, 0xce, 0x3e, 0x65,
1272	0x82, 0xa0, 0xb8, 0x12, 0x86, 0x95, 0x13, 0x7a, 0x09, 0xa6, 0x4c, 0xb9, 0xc8, 0x4b, 0x6e, 0x77,
1273	0x64, 0xc6, 0x8f, 0x6b, 0x0d, 0xa0, 0x32, 0xc9, 0x31, 0xb1, 0xf5, 0x44, 0x9f, 0x8b, 0xf6, 0x73,
1274	0x4b, 0x4b, 0x4e, 0x44, 0x57, 0xa7, 0x8c, 0xd9, 0x27, 0x52, 0x51, 0x5d, 0x85, 0x8e, 0x14, 0x88,
1275	0x5e, 0x83, 0xbd, 0x0c, 0xd9, 0x4d, 0x95, 0x30, 0x61, 0xb4, 0xbc, 0xa5, 0x25, 0x91, 0x13, 0xe5,
1276	0x54, 0x06, 0x9c, 0x2a, 0xbb, 0x6a, 0x33, 0xd2, 0x3a, 0x15, 0xe3, 0xe5, 0x63, 0x80, 0xdb, 0x57,
1277	0x84, 0xad, 0x0a, 0x99, 0xd7, 0x23, 0xa5, 0x9e, 0xdb, 0x57, 0xbe, 0x02, 0xa4, 0xf9, 0xc5, 0xc6,
1278	0xfc, 0x58, 0x9b, 0x5f, 0x54, 0xe6, 0xe7, 0xb0, 0x3f, 0x17, 0x2a, 0xb5, 0x6d, 0x79, 0x05, 0x4f,
1279	0xb6, 0x84, 0xee, 0x09, 0x19, 0x2b, 0xcf, 0x0f, 0xe8, 0xff, 0xef, 0x62, 0xaa, 0x0c, 0xfd, 0xdf,
1280	0x97, 0x61, 0x51, 0xd0, 0x52, 0xd4, 0x80, 0x5d, 0x87, 0xa5, 0xe8, 0x71, 0x34, 0x2a, 0x29, 0xd7,
1281	0x83, 0xb6, 0xa3, 0x40, 0x5f, 0x62, 0x68, 0x02, 0x27, 0x65, 0xed, 0x24, 0x52, 0x84, 0x6b, 0x51,
1282	0x44, 0xdd, 0x06, 0x3e, 0xba, 0xdb, 0x06, 0x36, 0x32, 0xc5, 0x0f, 0xeb, 0x61, 0x33, 0x15, 0x85,
1283	0x2e, 0x61, 0x07, 0x26, 0x2c, 0x5f, 0x95, 0x11, 0xd5, 0xdd, 0xe1, 0xe9, 0xf7, 0x93, 0xf3, 0xa5,
1284	0x0f, 0x46, 0xe5, 0x3d, 0x0c, 0x3d, 0xbf, 0x93, 0x5c, 0x55, 0x41, 0x35, 0xaa, 0x77, 0x8e, 0xaa,
1285	0xea, 0xf8, 0x19, 0x74, 0x55, 0x01, 0x2b, 0xdf, 0x43, 0x45, 0x5a, 0x82, 0xda, 0x69, 0xf0, 0x6f,
1286	0x03, 0x3a, 0x75, 0x89, 0xa1, 0xdf, 0xc2, 0xc9, 0x8e, 0x5c, 0x49, 0xb8, 0xcc, 0x57, 0x19, 0x97,
1287	0x52, 0xe9, 0x62, 0x54, 0x57, 0xed, 0x48, 0x5a, 0xd0, 0x73, 0x38, 0xe5, 0x39, 0x0f, 0x53, 0x22,
1288	0x46, 0x3d, 0xe1, 0x39, 0x89, 0xf2, 0x2c, 0xa3, 0x11, 0xb7, 0x3f, 0x51, 0x21, 0xd2, 0x18, 0x24,
1289	0x4b, 0x1a, 0xe4, 0x8e, 0xb2, 0xa0, 0x9f, 0x41, 0xaf, 0xe4, 0x5c, 0xf8, 0xea, 0x66, 0x66, 0x7f,
1290	0x2a, 0x7d, 0x3b, 0x25, 0xaf, 0x3d, 0xff, 0x3e, 0x74, 0xc4, 0xa0, 0xe3, 0xb9, 0xee, 0x47, 0x3f,
1291	0xd7, 0xfd, 0x31, 0x65, 0x41, 0xae, 0x1a, 0x92, 0xf0, 0x88, 0x8a, 0xad, 0xc7, 0x2f, 0xb4, 0x47,
1292	0x54, 0x68, 0x8f, 0x41, 0x06, 0xc7, 0x9b, 0xa9, 0x72, 0x41, 0x39, 0x8d, 0x78, 0x5e, 0x0a, 0x25,
1293	0x56, 0x73, 0x3d, 0x29, 0xf4, 0x5f, 0x92, 0xa9, 0x91, 0x71, 0x81, 0x9e, 0x80, 0x19, 0xc9, 0x12,
1294	0x0b, 0xeb, 0x9e, 0xfa, 0x87, 0x52, 0xc0, 0xb8, 0x10, 0xb1, 0xfa, 0x97, 0x86, 0x64, 0x4c, 0x6a,
1295	0xa3, 0x89, 0x4d, 0x8d, 0x4c, 0xd9, 0xf9, 0xaf, 0xe0, 0x50, 0xff, 0xa0, 0xa1, 0x23, 0x68, 0x8f,
1296	0x5c, 0x9f, 0xbc, 0x75, 0x2e, 0xc9, 0xf3, 0xe1, 0xef, 0xac, 0x3f, 0xd6, 0x81, 0xe1, 0xcb, 0x57,
1297	0xd6, 0x9f, 0xce, 0xff, 0x63, 0x40, 0x6f, 0xb7, 0xbf, 0xa0, 0x63, 0xe8, 0x0a, 0x64, 0xea, 0x11,
1298	0xe7, 0xcb, 0xd1, 0xf4, 0xad, 0x6b, 0x3d, 0x40, 0x27, 0x60, 0x09, 0xc8, 0x77, 0x7d, 0x7f, 0xec,
1299	0x4d, 0xc9, 0x78, 0x3a, 0x0e, 0x2c, 0x03, 0x3d, 0x81, 0xc7, 0x75, 0xd4, 0xf1, 0xbe, 0x71, 0x71,
1300	0xa0, 0x8c, 0x6d, 0x64, 0xc3, 0x89, 0x30, 0xba, 0x7f, 0x98, 0xb9, 0x4e, 0x40, 0xb0, 0xeb, 0x78,
1301	0xd3, 0xa9, 0xeb, 0x04, 0xd6, 0x1e, 0x3a, 0x85, 0xe3, 0x9d, 0xb0, 0x89, 0xe7, 0xbb, 0x56, 0xa3,
1302	0x3a, 0xe3, 0xfd, 0xd8, 0x9d, 0x5c, 0x90, 0x77, 0xb3, 0x89, 0x37, 0xba, 0xb0, 0x9a, 0xe8, 0x11,
1303	0x20, 0x81, 0x8e, 0x9c, 0xaf, 0xdf, 0x8d, 0xb1, 0x5b, 0xe1, 0xfb, 0xa8, 0x0f, 0x4f, 0x6b, 0xdb,
1304	0x2b, 0xd8, 0x9b, 0x4e, 0xde, 0xeb, 0x93, 0xac, 0x03, 0xd4, 0x03, 0x53, 0x7a, 0x60, 0xec, 0x61,
1305	0xeb, 0xbf, 0xc6, 0xf9, 0x5f, 0x0d, 0xe8, 0xed, 0x4e, 0x5f, 0xc1, 0x54, 0x20, 0x77, 0x98, 0x0a,
1306	0xe8, 0x3e, 0xd3, 0x3a, 0xba, 0xcb, 0xf4, 0x23, 0x38, 0x15, 0x46, 0xc7, 0x9b, 0x7e, 0x31, 0xc6,
1307	0x97, 0x77, 0xa9, 0xee, 0xc4, 0x69, 0xaa, 0x3d, 0x30, 0x05, 0xbc, 0x49, 0xed, 0x1f, 0x06, 0xf4,
1308	0x76, 0x47, 0x34, 0xea, 0x40, 0x6b, 0xea, 0x69, 0x8f, 0x07, 0xb2, 0x24, 0xea, 0x4c, 0x3f, 0xc0,
1309	0xee, 0xe8, 0xd2, 0x32, 0xd0, 0x43, 0x38, 0x72, 0x26, 0x63, 0x77, 0x2a, 0xee, 0x76, 0xe6, 0xe1,
1310	0xc0, 0xbd, 0xb0, 0xf6, 0x6a, 0xe0, 0x0c, 0x7b, 0x81, 0xe7, 0x78, 0x13, 0x75, 0xb1, 0x7e, 0x30,
1311	0x0a, 0x14, 0x9d, 0xc0, 0xc5, 0xd3, 0xd1, 0xc4, 0x6a, 0x22, 0x04, 0xbd, 0x0b, 0xd7, 0xf1, 0xde,
1312	0x13, 0xb1, 0xaf, 0xbe, 0x54, 0x71, 0x8c, 0x0a, 0xd7, 0xc7, 0xc4, 0xc2, 0x4d, 0x43, 0xc1, 0xf8,
1313	0xd2, 0xf5, 0xde, 0x05, 0x16, 0x3d, 0xff, 0x0d, 0x74, 0x77, 0x1a, 0x3c, 0x6a, 0x41, 0x73, 0xba,
1314	0x4a, 0x53, 0xeb, 0x01, 0x3a, 0x84, 0xc6, 0x65, 0x92, 0x59, 0x06, 0x32, 0x61, 0xdf, 0xbb, 0x9a,
1315	0xb3, 0x17, 0xd6, 0xde, 0xf9, 0xd7, 0x80, 0xee, 0x77, 0x18, 0xa1, 0xc4, 0x77, 0x19, 0x2b, 0x68,
1316	0x94, 0xcc, 0x13, 0x1a, 0x5b, 0x0f, 0x04, 0xe3, 0xea, 0x75, 0x58, 0x86, 0xd8, 0x68, 0x34, 0x1b,
1317	0x2b, 0x4a, 0x15, 0x3c, 0x53, 0xa3, 0xda, 0x6a, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x98, 0x6e,
1318	0x73, 0xc1, 0xd2, 0x0c, 0x00, 0x00,
1319}
1320