summaryrefslogtreecommitdiff
path: root/src/trunnel/conflux.h
blob: fa6f093b4fafbc8e30ca775eece387fcdede425b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
/* conflux.h -- generated by Trunnel v1.5.3.
 * https://gitweb.torproject.org/trunnel.git
 * You probably shouldn't edit this file.
 */
#ifndef TRUNNEL_CONFLUX_H
#define TRUNNEL_CONFLUX_H

#include <stdint.h>
#include "trunnel.h"

#define CONFLUX_UX_NO_OPINION 0
#define CONFLUX_UX_MIN_LATENCY 1
#define CONFLUX_UX_LOW_MEM_LATENCY 2
#define CONFLUX_UX_HIGH_THROUGHPUT 3
#define CONFLUX_UX_LOW_MEM_THROUGHPUT 4
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_CONFLUX_LINK)
struct trn_cell_conflux_link_st {
  uint8_t version;
  TRUNNEL_DYNARRAY_HEAD(, uint8_t) payload;
  uint8_t trunnel_error_code_;
};
#endif
typedef struct trn_cell_conflux_link_st trn_cell_conflux_link_t;
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_CONFLUX_LINK_PAYLOAD_V1)
struct trn_cell_conflux_link_payload_v1_st {
  uint8_t nonce[32];
  uint64_t last_seqno_sent;
  uint64_t last_seqno_recv;
  uint8_t desired_ux;
  uint8_t trunnel_error_code_;
};
#endif
typedef struct trn_cell_conflux_link_payload_v1_st trn_cell_conflux_link_payload_v1_t;
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_CONFLUX_LINKED)
struct trn_cell_conflux_linked_st {
  uint8_t version;
  TRUNNEL_DYNARRAY_HEAD(, uint8_t) payload;
  uint8_t trunnel_error_code_;
};
#endif
typedef struct trn_cell_conflux_linked_st trn_cell_conflux_linked_t;
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_CONFLUX_LINKED_ACK)
struct trn_cell_conflux_linked_ack_st {
  TRUNNEL_DYNARRAY_HEAD(, uint8_t) payload;
  uint8_t trunnel_error_code_;
};
#endif
typedef struct trn_cell_conflux_linked_ack_st trn_cell_conflux_linked_ack_t;
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_CELL_CONFLUX_SWITCH)
struct trn_cell_conflux_switch_st {
  uint32_t seqnum;
  uint8_t trunnel_error_code_;
};
#endif
typedef struct trn_cell_conflux_switch_st trn_cell_conflux_switch_t;
/** Return a newly allocated trn_cell_conflux_link with all elements
 * set to zero.
 */
trn_cell_conflux_link_t *trn_cell_conflux_link_new(void);
/** Release all storage held by the trn_cell_conflux_link in 'victim'.
 * (Do nothing if 'victim' is NULL.)
 */
void trn_cell_conflux_link_free(trn_cell_conflux_link_t *victim);
/** Try to parse a trn_cell_conflux_link from the buffer in 'input',
 * using up to 'len_in' bytes from the input buffer. On success,
 * return the number of bytes consumed and set *output to the newly
 * allocated trn_cell_conflux_link_t. On failure, return -2 if the
 * input appears truncated, and -1 if the input is otherwise invalid.
 */
ssize_t trn_cell_conflux_link_parse(trn_cell_conflux_link_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
 * trn_cell_conflux_link in 'obj'. On failure, return a negative
 * value. Note that this value may be an overestimate, and can even be
 * an underestimate for certain unencodeable objects.
 */
ssize_t trn_cell_conflux_link_encoded_len(const trn_cell_conflux_link_t *obj);
/** Try to encode the trn_cell_conflux_link from 'input' into the
 * buffer at 'output', using up to 'avail' bytes of the output buffer.
 * On success, return the number of bytes used. On failure, return -2
 * if the buffer was not long enough, and -1 if the input was invalid.
 */
ssize_t trn_cell_conflux_link_encode(uint8_t *output, size_t avail, const trn_cell_conflux_link_t *input);
/** Check whether the internal state of the trn_cell_conflux_link in
 * 'obj' is consistent. Return NULL if it is, and a short message if
 * it is not.
 */
const char *trn_cell_conflux_link_check(const trn_cell_conflux_link_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
 * functions. Return true iff errors were cleared.
 */
int trn_cell_conflux_link_clear_errors(trn_cell_conflux_link_t *obj);
/** Return the value of the version field of the
 * trn_cell_conflux_link_t in 'inp'
 */
uint8_t trn_cell_conflux_link_get_version(const trn_cell_conflux_link_t *inp);
/** Set the value of the version field of the trn_cell_conflux_link_t
 * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
 * code on 'inp' on failure.
 */
int trn_cell_conflux_link_set_version(trn_cell_conflux_link_t *inp, uint8_t val);
/** Return the length of the dynamic array holding the payload field
 * of the trn_cell_conflux_link_t in 'inp'.
 */
size_t trn_cell_conflux_link_getlen_payload(const trn_cell_conflux_link_t *inp);
/** Return the element at position 'idx' of the dynamic array field
 * payload of the trn_cell_conflux_link_t in 'inp'.
 */
uint8_t trn_cell_conflux_link_get_payload(trn_cell_conflux_link_t *inp, size_t idx);
/** As trn_cell_conflux_link_get_payload, but take and return a const
 * pointer
 */
uint8_t trn_cell_conflux_link_getconst_payload(const trn_cell_conflux_link_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
 * payload of the trn_cell_conflux_link_t in 'inp', so that it will
 * hold the value 'elt'.
 */
int trn_cell_conflux_link_set_payload(trn_cell_conflux_link_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field payload of
 * the trn_cell_conflux_link_t in 'inp'.
 */
int trn_cell_conflux_link_add_payload(trn_cell_conflux_link_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field payload of
 * 'inp'.
 */
uint8_t * trn_cell_conflux_link_getarray_payload(trn_cell_conflux_link_t *inp);
/** As trn_cell_conflux_link_get_payload, but take and return a const
 * pointer
 */
const uint8_t  * trn_cell_conflux_link_getconstarray_payload(const trn_cell_conflux_link_t *inp);
/** Change the length of the variable-length array field payload of
 * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success;
 * return -1 and set the error code on 'inp' on failure.
 */
int trn_cell_conflux_link_setlen_payload(trn_cell_conflux_link_t *inp, size_t newlen);
/** Return a newly allocated trn_cell_conflux_link_payload_v1 with all
 * elements set to zero.
 */
trn_cell_conflux_link_payload_v1_t *trn_cell_conflux_link_payload_v1_new(void);
/** Release all storage held by the trn_cell_conflux_link_payload_v1
 * in 'victim'. (Do nothing if 'victim' is NULL.)
 */
void trn_cell_conflux_link_payload_v1_free(trn_cell_conflux_link_payload_v1_t *victim);
/** Try to parse a trn_cell_conflux_link_payload_v1 from the buffer in
 * 'input', using up to 'len_in' bytes from the input buffer. On
 * success, return the number of bytes consumed and set *output to the
 * newly allocated trn_cell_conflux_link_payload_v1_t. On failure,
 * return -2 if the input appears truncated, and -1 if the input is
 * otherwise invalid.
 */
ssize_t trn_cell_conflux_link_payload_v1_parse(trn_cell_conflux_link_payload_v1_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
 * trn_cell_conflux_link_payload_v1 in 'obj'. On failure, return a
 * negative value. Note that this value may be an overestimate, and
 * can even be an underestimate for certain unencodeable objects.
 */
ssize_t trn_cell_conflux_link_payload_v1_encoded_len(const trn_cell_conflux_link_payload_v1_t *obj);
/** Try to encode the trn_cell_conflux_link_payload_v1 from 'input'
 * into the buffer at 'output', using up to 'avail' bytes of the
 * output buffer. On success, return the number of bytes used. On
 * failure, return -2 if the buffer was not long enough, and -1 if the
 * input was invalid.
 */
ssize_t trn_cell_conflux_link_payload_v1_encode(uint8_t *output, size_t avail, const trn_cell_conflux_link_payload_v1_t *input);
/** Check whether the internal state of the
 * trn_cell_conflux_link_payload_v1 in 'obj' is consistent. Return
 * NULL if it is, and a short message if it is not.
 */
const char *trn_cell_conflux_link_payload_v1_check(const trn_cell_conflux_link_payload_v1_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
 * functions. Return true iff errors were cleared.
 */
int trn_cell_conflux_link_payload_v1_clear_errors(trn_cell_conflux_link_payload_v1_t *obj);
/** Return the (constant) length of the array holding the nonce field
 * of the trn_cell_conflux_link_payload_v1_t in 'inp'.
 */
size_t trn_cell_conflux_link_payload_v1_getlen_nonce(const trn_cell_conflux_link_payload_v1_t *inp);
/** Return the element at position 'idx' of the fixed array field
 * nonce of the trn_cell_conflux_link_payload_v1_t in 'inp'.
 */
uint8_t trn_cell_conflux_link_payload_v1_get_nonce(trn_cell_conflux_link_payload_v1_t *inp, size_t idx);
/** As trn_cell_conflux_link_payload_v1_get_nonce, but take and return
 * a const pointer
 */
uint8_t trn_cell_conflux_link_payload_v1_getconst_nonce(const trn_cell_conflux_link_payload_v1_t *inp, size_t idx);
/** Change the element at position 'idx' of the fixed array field
 * nonce of the trn_cell_conflux_link_payload_v1_t in 'inp', so that
 * it will hold the value 'elt'.
 */
int trn_cell_conflux_link_payload_v1_set_nonce(trn_cell_conflux_link_payload_v1_t *inp, size_t idx, uint8_t elt);
/** Return a pointer to the 32-element array field nonce of 'inp'.
 */
uint8_t * trn_cell_conflux_link_payload_v1_getarray_nonce(trn_cell_conflux_link_payload_v1_t *inp);
/** As trn_cell_conflux_link_payload_v1_get_nonce, but take and return
 * a const pointer
 */
const uint8_t  * trn_cell_conflux_link_payload_v1_getconstarray_nonce(const trn_cell_conflux_link_payload_v1_t *inp);
/** Return the value of the last_seqno_sent field of the
 * trn_cell_conflux_link_payload_v1_t in 'inp'
 */
uint64_t trn_cell_conflux_link_payload_v1_get_last_seqno_sent(const trn_cell_conflux_link_payload_v1_t *inp);
/** Set the value of the last_seqno_sent field of the
 * trn_cell_conflux_link_payload_v1_t in 'inp' to 'val'. Return 0 on
 * success; return -1 and set the error code on 'inp' on failure.
 */
int trn_cell_conflux_link_payload_v1_set_last_seqno_sent(trn_cell_conflux_link_payload_v1_t *inp, uint64_t val);
/** Return the value of the last_seqno_recv field of the
 * trn_cell_conflux_link_payload_v1_t in 'inp'
 */
uint64_t trn_cell_conflux_link_payload_v1_get_last_seqno_recv(const trn_cell_conflux_link_payload_v1_t *inp);
/** Set the value of the last_seqno_recv field of the
 * trn_cell_conflux_link_payload_v1_t in 'inp' to 'val'. Return 0 on
 * success; return -1 and set the error code on 'inp' on failure.
 */
int trn_cell_conflux_link_payload_v1_set_last_seqno_recv(trn_cell_conflux_link_payload_v1_t *inp, uint64_t val);
/** Return the value of the desired_ux field of the
 * trn_cell_conflux_link_payload_v1_t in 'inp'
 */
uint8_t trn_cell_conflux_link_payload_v1_get_desired_ux(const trn_cell_conflux_link_payload_v1_t *inp);
/** Set the value of the desired_ux field of the
 * trn_cell_conflux_link_payload_v1_t in 'inp' to 'val'. Return 0 on
 * success; return -1 and set the error code on 'inp' on failure.
 */
int trn_cell_conflux_link_payload_v1_set_desired_ux(trn_cell_conflux_link_payload_v1_t *inp, uint8_t val);
/** Return a newly allocated trn_cell_conflux_linked with all elements
 * set to zero.
 */
trn_cell_conflux_linked_t *trn_cell_conflux_linked_new(void);
/** Release all storage held by the trn_cell_conflux_linked in
 * 'victim'. (Do nothing if 'victim' is NULL.)
 */
void trn_cell_conflux_linked_free(trn_cell_conflux_linked_t *victim);
/** Try to parse a trn_cell_conflux_linked from the buffer in 'input',
 * using up to 'len_in' bytes from the input buffer. On success,
 * return the number of bytes consumed and set *output to the newly
 * allocated trn_cell_conflux_linked_t. On failure, return -2 if the
 * input appears truncated, and -1 if the input is otherwise invalid.
 */
ssize_t trn_cell_conflux_linked_parse(trn_cell_conflux_linked_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
 * trn_cell_conflux_linked in 'obj'. On failure, return a negative
 * value. Note that this value may be an overestimate, and can even be
 * an underestimate for certain unencodeable objects.
 */
ssize_t trn_cell_conflux_linked_encoded_len(const trn_cell_conflux_linked_t *obj);
/** Try to encode the trn_cell_conflux_linked from 'input' into the
 * buffer at 'output', using up to 'avail' bytes of the output buffer.
 * On success, return the number of bytes used. On failure, return -2
 * if the buffer was not long enough, and -1 if the input was invalid.
 */
ssize_t trn_cell_conflux_linked_encode(uint8_t *output, size_t avail, const trn_cell_conflux_linked_t *input);
/** Check whether the internal state of the trn_cell_conflux_linked in
 * 'obj' is consistent. Return NULL if it is, and a short message if
 * it is not.
 */
const char *trn_cell_conflux_linked_check(const trn_cell_conflux_linked_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
 * functions. Return true iff errors were cleared.
 */
int trn_cell_conflux_linked_clear_errors(trn_cell_conflux_linked_t *obj);
/** Return the value of the version field of the
 * trn_cell_conflux_linked_t in 'inp'
 */
uint8_t trn_cell_conflux_linked_get_version(const trn_cell_conflux_linked_t *inp);
/** Set the value of the version field of the
 * trn_cell_conflux_linked_t in 'inp' to 'val'. Return 0 on success;
 * return -1 and set the error code on 'inp' on failure.
 */
int trn_cell_conflux_linked_set_version(trn_cell_conflux_linked_t *inp, uint8_t val);
/** Return the length of the dynamic array holding the payload field
 * of the trn_cell_conflux_linked_t in 'inp'.
 */
size_t trn_cell_conflux_linked_getlen_payload(const trn_cell_conflux_linked_t *inp);
/** Return the element at position 'idx' of the dynamic array field
 * payload of the trn_cell_conflux_linked_t in 'inp'.
 */
uint8_t trn_cell_conflux_linked_get_payload(trn_cell_conflux_linked_t *inp, size_t idx);
/** As trn_cell_conflux_linked_get_payload, but take and return a
 * const pointer
 */
uint8_t trn_cell_conflux_linked_getconst_payload(const trn_cell_conflux_linked_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
 * payload of the trn_cell_conflux_linked_t in 'inp', so that it will
 * hold the value 'elt'.
 */
int trn_cell_conflux_linked_set_payload(trn_cell_conflux_linked_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field payload of
 * the trn_cell_conflux_linked_t in 'inp'.
 */
int trn_cell_conflux_linked_add_payload(trn_cell_conflux_linked_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field payload of
 * 'inp'.
 */
uint8_t * trn_cell_conflux_linked_getarray_payload(trn_cell_conflux_linked_t *inp);
/** As trn_cell_conflux_linked_get_payload, but take and return a
 * const pointer
 */
const uint8_t  * trn_cell_conflux_linked_getconstarray_payload(const trn_cell_conflux_linked_t *inp);
/** Change the length of the variable-length array field payload of
 * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success;
 * return -1 and set the error code on 'inp' on failure.
 */
int trn_cell_conflux_linked_setlen_payload(trn_cell_conflux_linked_t *inp, size_t newlen);
/** Return a newly allocated trn_cell_conflux_linked_ack with all
 * elements set to zero.
 */
trn_cell_conflux_linked_ack_t *trn_cell_conflux_linked_ack_new(void);
/** Release all storage held by the trn_cell_conflux_linked_ack in
 * 'victim'. (Do nothing if 'victim' is NULL.)
 */
void trn_cell_conflux_linked_ack_free(trn_cell_conflux_linked_ack_t *victim);
/** Try to parse a trn_cell_conflux_linked_ack from the buffer in
 * 'input', using up to 'len_in' bytes from the input buffer. On
 * success, return the number of bytes consumed and set *output to the
 * newly allocated trn_cell_conflux_linked_ack_t. On failure, return
 * -2 if the input appears truncated, and -1 if the input is otherwise
 * invalid.
 */
ssize_t trn_cell_conflux_linked_ack_parse(trn_cell_conflux_linked_ack_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
 * trn_cell_conflux_linked_ack in 'obj'. On failure, return a negative
 * value. Note that this value may be an overestimate, and can even be
 * an underestimate for certain unencodeable objects.
 */
ssize_t trn_cell_conflux_linked_ack_encoded_len(const trn_cell_conflux_linked_ack_t *obj);
/** Try to encode the trn_cell_conflux_linked_ack from 'input' into
 * the buffer at 'output', using up to 'avail' bytes of the output
 * buffer. On success, return the number of bytes used. On failure,
 * return -2 if the buffer was not long enough, and -1 if the input
 * was invalid.
 */
ssize_t trn_cell_conflux_linked_ack_encode(uint8_t *output, size_t avail, const trn_cell_conflux_linked_ack_t *input);
/** Check whether the internal state of the
 * trn_cell_conflux_linked_ack in 'obj' is consistent. Return NULL if
 * it is, and a short message if it is not.
 */
const char *trn_cell_conflux_linked_ack_check(const trn_cell_conflux_linked_ack_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
 * functions. Return true iff errors were cleared.
 */
int trn_cell_conflux_linked_ack_clear_errors(trn_cell_conflux_linked_ack_t *obj);
/** Return the length of the dynamic array holding the payload field
 * of the trn_cell_conflux_linked_ack_t in 'inp'.
 */
size_t trn_cell_conflux_linked_ack_getlen_payload(const trn_cell_conflux_linked_ack_t *inp);
/** Return the element at position 'idx' of the dynamic array field
 * payload of the trn_cell_conflux_linked_ack_t in 'inp'.
 */
uint8_t trn_cell_conflux_linked_ack_get_payload(trn_cell_conflux_linked_ack_t *inp, size_t idx);
/** As trn_cell_conflux_linked_ack_get_payload, but take and return a
 * const pointer
 */
uint8_t trn_cell_conflux_linked_ack_getconst_payload(const trn_cell_conflux_linked_ack_t *inp, size_t idx);
/** Change the element at position 'idx' of the dynamic array field
 * payload of the trn_cell_conflux_linked_ack_t in 'inp', so that it
 * will hold the value 'elt'.
 */
int trn_cell_conflux_linked_ack_set_payload(trn_cell_conflux_linked_ack_t *inp, size_t idx, uint8_t elt);
/** Append a new element 'elt' to the dynamic array field payload of
 * the trn_cell_conflux_linked_ack_t in 'inp'.
 */
int trn_cell_conflux_linked_ack_add_payload(trn_cell_conflux_linked_ack_t *inp, uint8_t elt);
/** Return a pointer to the variable-length array field payload of
 * 'inp'.
 */
uint8_t * trn_cell_conflux_linked_ack_getarray_payload(trn_cell_conflux_linked_ack_t *inp);
/** As trn_cell_conflux_linked_ack_get_payload, but take and return a
 * const pointer
 */
const uint8_t  * trn_cell_conflux_linked_ack_getconstarray_payload(const trn_cell_conflux_linked_ack_t *inp);
/** Change the length of the variable-length array field payload of
 * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success;
 * return -1 and set the error code on 'inp' on failure.
 */
int trn_cell_conflux_linked_ack_setlen_payload(trn_cell_conflux_linked_ack_t *inp, size_t newlen);
/** Return a newly allocated trn_cell_conflux_switch with all elements
 * set to zero.
 */
trn_cell_conflux_switch_t *trn_cell_conflux_switch_new(void);
/** Release all storage held by the trn_cell_conflux_switch in
 * 'victim'. (Do nothing if 'victim' is NULL.)
 */
void trn_cell_conflux_switch_free(trn_cell_conflux_switch_t *victim);
/** Try to parse a trn_cell_conflux_switch from the buffer in 'input',
 * using up to 'len_in' bytes from the input buffer. On success,
 * return the number of bytes consumed and set *output to the newly
 * allocated trn_cell_conflux_switch_t. On failure, return -2 if the
 * input appears truncated, and -1 if the input is otherwise invalid.
 */
ssize_t trn_cell_conflux_switch_parse(trn_cell_conflux_switch_t **output, const uint8_t *input, const size_t len_in);
/** Return the number of bytes we expect to need to encode the
 * trn_cell_conflux_switch in 'obj'. On failure, return a negative
 * value. Note that this value may be an overestimate, and can even be
 * an underestimate for certain unencodeable objects.
 */
ssize_t trn_cell_conflux_switch_encoded_len(const trn_cell_conflux_switch_t *obj);
/** Try to encode the trn_cell_conflux_switch from 'input' into the
 * buffer at 'output', using up to 'avail' bytes of the output buffer.
 * On success, return the number of bytes used. On failure, return -2
 * if the buffer was not long enough, and -1 if the input was invalid.
 */
ssize_t trn_cell_conflux_switch_encode(uint8_t *output, size_t avail, const trn_cell_conflux_switch_t *input);
/** Check whether the internal state of the trn_cell_conflux_switch in
 * 'obj' is consistent. Return NULL if it is, and a short message if
 * it is not.
 */
const char *trn_cell_conflux_switch_check(const trn_cell_conflux_switch_t *obj);
/** Clear any errors that were set on the object 'obj' by its setter
 * functions. Return true iff errors were cleared.
 */
int trn_cell_conflux_switch_clear_errors(trn_cell_conflux_switch_t *obj);
/** Return the value of the seqnum field of the
 * trn_cell_conflux_switch_t in 'inp'
 */
uint32_t trn_cell_conflux_switch_get_seqnum(const trn_cell_conflux_switch_t *inp);
/** Set the value of the seqnum field of the trn_cell_conflux_switch_t
 * in 'inp' to 'val'. Return 0 on success; return -1 and set the error
 * code on 'inp' on failure.
 */
int trn_cell_conflux_switch_set_seqnum(trn_cell_conflux_switch_t *inp, uint32_t val);


#endif