summaryrefslogtreecommitdiffstats
path: root/src/gnutls-cli-options.h
blob: ff2242487227c4200691b60e5951c1e64d3f457a (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
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
#include <stdbool.h>
#include <stdio.h>

#ifndef GNUTLS_CLI_OPTIONS_H_
#define GNUTLS_CLI_OPTIONS_H_ 1

struct gnutls_cli_list
{
  const char **args;
  unsigned int count;
};

struct gnutls_cli_options
{
  /* Options present in the command line */
  struct
  {
    bool debug;
    bool verbose;
    bool tofu;
    bool strict_tofu;
    bool dane;
    bool local_dns;
    bool ca_verification;
    bool ocsp;
    bool resume;
    bool earlydata;
    bool rehandshake;
    bool sni_hostname;
    bool verify_hostname;
    bool starttls;
    bool starttls_proto;
    bool udp;
    bool mtu;
    bool crlf;
    bool fastopen;
    bool x509fmtder;
    bool print_cert;
    bool save_cert;
    bool save_ocsp;
    bool save_ocsp_multi;
    bool save_server_trace;
    bool save_client_trace;
    bool dh_bits;
    bool priority;
    bool x509cafile;
    bool x509crlfile;
    bool x509keyfile;
    bool x509certfile;
    bool rawpkkeyfile;
    bool rawpkfile;
    bool srpusername;
    bool srppasswd;
    bool pskusername;
    bool pskkey;
    bool port;
    bool insecure;
    bool verify_allow_broken;
    bool ranges;
    bool benchmark_ciphers;
    bool benchmark_tls_kx;
    bool benchmark_tls_ciphers;
    bool list;
    bool priority_list;
    bool noticket;
    bool srtp_profiles;
    bool alpn;
    bool compress_cert;
    bool heartbeat;
    bool recordsize;
    bool disable_sni;
    bool disable_extensions;
    bool single_key_share;
    bool post_handshake_auth;
    bool inline_commands;
    bool inline_commands_prefix;
    bool provider;
    bool fips140_mode;
    bool list_config;
    bool logfile;
    bool keymatexport;
    bool keymatexportsize;
    bool waitresumption;
    bool ca_auto_retrieve;
    bool version;
    bool help;
    bool more_help;
  } present;

  /* Option arguments in raw string form */
  struct
  {
    const char *debug;
    const char *earlydata;
    const char *sni_hostname;
    const char *verify_hostname;
    const char *starttls_proto;
    const char *mtu;
    const char *save_cert;
    const char *save_ocsp;
    const char *save_ocsp_multi;
    const char *save_server_trace;
    const char *save_client_trace;
    const char *dh_bits;
    const char *priority;
    const char *x509cafile;
    const char *x509crlfile;
    const char *x509keyfile;
    const char *x509certfile;
    const char *rawpkkeyfile;
    const char *rawpkfile;
    const char *srpusername;
    const char *srppasswd;
    const char *pskusername;
    const char *pskkey;
    const char *port;
    const char *srtp_profiles;
    const char *recordsize;
    const char *inline_commands_prefix;
    const char *provider;
    const char *logfile;
    const char *keymatexport;
    const char *keymatexportsize;
    const char *version;
  } arg;

  /* Option arguments parsed as integer */
  struct
  {
    int debug;
    int mtu;
    int dh_bits;
    int recordsize;
    int keymatexportsize;
  } value;

  /* Option arguments parsed as list */
  struct
  {
    struct gnutls_cli_list alpn;
    struct gnutls_cli_list compress_cert;
  } list;

  /* Option enablement status */
  struct
  {
    bool debug;
    bool verbose;
    bool tofu;
    bool strict_tofu;
    bool dane;
    bool local_dns;
    bool ca_verification;
    bool ocsp;
    bool resume;
    bool earlydata;
    bool rehandshake;
    bool sni_hostname;
    bool verify_hostname;
    bool starttls;
    bool starttls_proto;
    bool udp;
    bool mtu;
    bool crlf;
    bool fastopen;
    bool x509fmtder;
    bool print_cert;
    bool save_cert;
    bool save_ocsp;
    bool save_ocsp_multi;
    bool save_server_trace;
    bool save_client_trace;
    bool dh_bits;
    bool priority;
    bool x509cafile;
    bool x509crlfile;
    bool x509keyfile;
    bool x509certfile;
    bool rawpkkeyfile;
    bool rawpkfile;
    bool srpusername;
    bool srppasswd;
    bool pskusername;
    bool pskkey;
    bool port;
    bool insecure;
    bool verify_allow_broken;
    bool ranges;
    bool benchmark_ciphers;
    bool benchmark_tls_kx;
    bool benchmark_tls_ciphers;
    bool list;
    bool priority_list;
    bool noticket;
    bool srtp_profiles;
    bool alpn;
    bool compress_cert;
    bool heartbeat;
    bool recordsize;
    bool disable_sni;
    bool disable_extensions;
    bool single_key_share;
    bool post_handshake_auth;
    bool inline_commands;
    bool inline_commands_prefix;
    bool provider;
    bool fips140_mode;
    bool list_config;
    bool logfile;
    bool keymatexport;
    bool keymatexportsize;
    bool waitresumption;
    bool ca_auto_retrieve;
    bool version;
    bool help;
    bool more_help;
  } enabled;
};

#define HAVE_OPT(name) HAVE_OPT_ ## name
#define OPT_ARG(name) OPT_ARG_ ## name
#define ENABLED_OPT(name) ENABLED_OPT_ ## name
#define OPTS_COUNT(name) OPTS_COUNT_ ## name
#define OPTS_ARRAY(name) OPTS_ARRAY_ ## name
#define USAGE(status) usage (stdout, (status))

#define HAVE_OPT_DEBUG gnutls_cli_options.present.debug
#define HAVE_OPT_VERBOSE gnutls_cli_options.present.verbose
#define HAVE_OPT_TOFU gnutls_cli_options.present.tofu
#define HAVE_OPT_STRICT_TOFU gnutls_cli_options.present.strict_tofu
#define HAVE_OPT_DANE gnutls_cli_options.present.dane
#define HAVE_OPT_LOCAL_DNS gnutls_cli_options.present.local_dns
#define HAVE_OPT_CA_VERIFICATION gnutls_cli_options.present.ca_verification
#define HAVE_OPT_OCSP gnutls_cli_options.present.ocsp
#define HAVE_OPT_RESUME gnutls_cli_options.present.resume
#define HAVE_OPT_EARLYDATA gnutls_cli_options.present.earlydata
#define HAVE_OPT_REHANDSHAKE gnutls_cli_options.present.rehandshake
#define HAVE_OPT_SNI_HOSTNAME gnutls_cli_options.present.sni_hostname
#define HAVE_OPT_VERIFY_HOSTNAME gnutls_cli_options.present.verify_hostname
#define HAVE_OPT_STARTTLS gnutls_cli_options.present.starttls
#define HAVE_OPT_STARTTLS_PROTO gnutls_cli_options.present.starttls_proto
#define HAVE_OPT_UDP gnutls_cli_options.present.udp
#define HAVE_OPT_MTU gnutls_cli_options.present.mtu
#define HAVE_OPT_CRLF gnutls_cli_options.present.crlf
#define HAVE_OPT_FASTOPEN gnutls_cli_options.present.fastopen
#define HAVE_OPT_X509FMTDER gnutls_cli_options.present.x509fmtder
#define HAVE_OPT_PRINT_CERT gnutls_cli_options.present.print_cert
#define HAVE_OPT_SAVE_CERT gnutls_cli_options.present.save_cert
#define HAVE_OPT_SAVE_OCSP gnutls_cli_options.present.save_ocsp
#define HAVE_OPT_SAVE_OCSP_MULTI gnutls_cli_options.present.save_ocsp_multi
#define HAVE_OPT_SAVE_SERVER_TRACE gnutls_cli_options.present.save_server_trace
#define HAVE_OPT_SAVE_CLIENT_TRACE gnutls_cli_options.present.save_client_trace
#define HAVE_OPT_DH_BITS gnutls_cli_options.present.dh_bits
#define HAVE_OPT_PRIORITY gnutls_cli_options.present.priority
#define HAVE_OPT_X509CAFILE gnutls_cli_options.present.x509cafile
#define HAVE_OPT_X509CRLFILE gnutls_cli_options.present.x509crlfile
#define HAVE_OPT_X509KEYFILE gnutls_cli_options.present.x509keyfile
#define HAVE_OPT_X509CERTFILE gnutls_cli_options.present.x509certfile
#define HAVE_OPT_RAWPKKEYFILE gnutls_cli_options.present.rawpkkeyfile
#define HAVE_OPT_RAWPKFILE gnutls_cli_options.present.rawpkfile
#define HAVE_OPT_SRPUSERNAME gnutls_cli_options.present.srpusername
#define HAVE_OPT_SRPPASSWD gnutls_cli_options.present.srppasswd
#define HAVE_OPT_PSKUSERNAME gnutls_cli_options.present.pskusername
#define HAVE_OPT_PSKKEY gnutls_cli_options.present.pskkey
#define HAVE_OPT_PORT gnutls_cli_options.present.port
#define HAVE_OPT_INSECURE gnutls_cli_options.present.insecure
#define HAVE_OPT_VERIFY_ALLOW_BROKEN gnutls_cli_options.present.verify_allow_broken
#define HAVE_OPT_RANGES gnutls_cli_options.present.ranges
#define HAVE_OPT_BENCHMARK_CIPHERS gnutls_cli_options.present.benchmark_ciphers
#define HAVE_OPT_BENCHMARK_TLS_KX gnutls_cli_options.present.benchmark_tls_kx
#define HAVE_OPT_BENCHMARK_TLS_CIPHERS gnutls_cli_options.present.benchmark_tls_ciphers
#define HAVE_OPT_LIST gnutls_cli_options.present.list
#define HAVE_OPT_PRIORITY_LIST gnutls_cli_options.present.priority_list
#define HAVE_OPT_NOTICKET gnutls_cli_options.present.noticket
#define HAVE_OPT_SRTP_PROFILES gnutls_cli_options.present.srtp_profiles
#define HAVE_OPT_ALPN gnutls_cli_options.present.alpn
#define HAVE_OPT_COMPRESS_CERT gnutls_cli_options.present.compress_cert
#define HAVE_OPT_HEARTBEAT gnutls_cli_options.present.heartbeat
#define HAVE_OPT_RECORDSIZE gnutls_cli_options.present.recordsize
#define HAVE_OPT_DISABLE_SNI gnutls_cli_options.present.disable_sni
#define HAVE_OPT_DISABLE_EXTENSIONS gnutls_cli_options.present.disable_extensions
#define HAVE_OPT_SINGLE_KEY_SHARE gnutls_cli_options.present.single_key_share
#define HAVE_OPT_POST_HANDSHAKE_AUTH gnutls_cli_options.present.post_handshake_auth
#define HAVE_OPT_INLINE_COMMANDS gnutls_cli_options.present.inline_commands
#define HAVE_OPT_INLINE_COMMANDS_PREFIX gnutls_cli_options.present.inline_commands_prefix
#define HAVE_OPT_PROVIDER gnutls_cli_options.present.provider
#define HAVE_OPT_FIPS140_MODE gnutls_cli_options.present.fips140_mode
#define HAVE_OPT_LIST_CONFIG gnutls_cli_options.present.list_config
#define HAVE_OPT_LOGFILE gnutls_cli_options.present.logfile
#define HAVE_OPT_KEYMATEXPORT gnutls_cli_options.present.keymatexport
#define HAVE_OPT_KEYMATEXPORTSIZE gnutls_cli_options.present.keymatexportsize
#define HAVE_OPT_WAITRESUMPTION gnutls_cli_options.present.waitresumption
#define HAVE_OPT_CA_AUTO_RETRIEVE gnutls_cli_options.present.ca_auto_retrieve
#define HAVE_OPT_VERSION gnutls_cli_options.present.version
#define HAVE_OPT_HELP gnutls_cli_options.present.help
#define HAVE_OPT_MORE_HELP gnutls_cli_options.present.more_help

#define OPT_ARG_DEBUG gnutls_cli_options.arg.debug
#define OPT_ARG_VERBOSE gnutls_cli_options.arg.verbose
#define OPT_ARG_TOFU gnutls_cli_options.arg.tofu
#define OPT_ARG_STRICT_TOFU gnutls_cli_options.arg.strict_tofu
#define OPT_ARG_DANE gnutls_cli_options.arg.dane
#define OPT_ARG_LOCAL_DNS gnutls_cli_options.arg.local_dns
#define OPT_ARG_CA_VERIFICATION gnutls_cli_options.arg.ca_verification
#define OPT_ARG_OCSP gnutls_cli_options.arg.ocsp
#define OPT_ARG_RESUME gnutls_cli_options.arg.resume
#define OPT_ARG_EARLYDATA gnutls_cli_options.arg.earlydata
#define OPT_ARG_REHANDSHAKE gnutls_cli_options.arg.rehandshake
#define OPT_ARG_SNI_HOSTNAME gnutls_cli_options.arg.sni_hostname
#define OPT_ARG_VERIFY_HOSTNAME gnutls_cli_options.arg.verify_hostname
#define OPT_ARG_STARTTLS gnutls_cli_options.arg.starttls
#define OPT_ARG_STARTTLS_PROTO gnutls_cli_options.arg.starttls_proto
#define OPT_ARG_UDP gnutls_cli_options.arg.udp
#define OPT_ARG_MTU gnutls_cli_options.arg.mtu
#define OPT_ARG_CRLF gnutls_cli_options.arg.crlf
#define OPT_ARG_FASTOPEN gnutls_cli_options.arg.fastopen
#define OPT_ARG_X509FMTDER gnutls_cli_options.arg.x509fmtder
#define OPT_ARG_PRINT_CERT gnutls_cli_options.arg.print_cert
#define OPT_ARG_SAVE_CERT gnutls_cli_options.arg.save_cert
#define OPT_ARG_SAVE_OCSP gnutls_cli_options.arg.save_ocsp
#define OPT_ARG_SAVE_OCSP_MULTI gnutls_cli_options.arg.save_ocsp_multi
#define OPT_ARG_SAVE_SERVER_TRACE gnutls_cli_options.arg.save_server_trace
#define OPT_ARG_SAVE_CLIENT_TRACE gnutls_cli_options.arg.save_client_trace
#define OPT_ARG_DH_BITS gnutls_cli_options.arg.dh_bits
#define OPT_ARG_PRIORITY gnutls_cli_options.arg.priority
#define OPT_ARG_X509CAFILE gnutls_cli_options.arg.x509cafile
#define OPT_ARG_X509CRLFILE gnutls_cli_options.arg.x509crlfile
#define OPT_ARG_X509KEYFILE gnutls_cli_options.arg.x509keyfile
#define OPT_ARG_X509CERTFILE gnutls_cli_options.arg.x509certfile
#define OPT_ARG_RAWPKKEYFILE gnutls_cli_options.arg.rawpkkeyfile
#define OPT_ARG_RAWPKFILE gnutls_cli_options.arg.rawpkfile
#define OPT_ARG_SRPUSERNAME gnutls_cli_options.arg.srpusername
#define OPT_ARG_SRPPASSWD gnutls_cli_options.arg.srppasswd
#define OPT_ARG_PSKUSERNAME gnutls_cli_options.arg.pskusername
#define OPT_ARG_PSKKEY gnutls_cli_options.arg.pskkey
#define OPT_ARG_PORT gnutls_cli_options.arg.port
#define OPT_ARG_INSECURE gnutls_cli_options.arg.insecure
#define OPT_ARG_VERIFY_ALLOW_BROKEN gnutls_cli_options.arg.verify_allow_broken
#define OPT_ARG_RANGES gnutls_cli_options.arg.ranges
#define OPT_ARG_BENCHMARK_CIPHERS gnutls_cli_options.arg.benchmark_ciphers
#define OPT_ARG_BENCHMARK_TLS_KX gnutls_cli_options.arg.benchmark_tls_kx
#define OPT_ARG_BENCHMARK_TLS_CIPHERS gnutls_cli_options.arg.benchmark_tls_ciphers
#define OPT_ARG_LIST gnutls_cli_options.arg.list
#define OPT_ARG_PRIORITY_LIST gnutls_cli_options.arg.priority_list
#define OPT_ARG_NOTICKET gnutls_cli_options.arg.noticket
#define OPT_ARG_SRTP_PROFILES gnutls_cli_options.arg.srtp_profiles
#define OPT_ARG_ALPN gnutls_cli_options.arg.alpn
#define OPT_ARG_COMPRESS_CERT gnutls_cli_options.arg.compress_cert
#define OPT_ARG_HEARTBEAT gnutls_cli_options.arg.heartbeat
#define OPT_ARG_RECORDSIZE gnutls_cli_options.arg.recordsize
#define OPT_ARG_DISABLE_SNI gnutls_cli_options.arg.disable_sni
#define OPT_ARG_DISABLE_EXTENSIONS gnutls_cli_options.arg.disable_extensions
#define OPT_ARG_SINGLE_KEY_SHARE gnutls_cli_options.arg.single_key_share
#define OPT_ARG_POST_HANDSHAKE_AUTH gnutls_cli_options.arg.post_handshake_auth
#define OPT_ARG_INLINE_COMMANDS gnutls_cli_options.arg.inline_commands
#define OPT_ARG_INLINE_COMMANDS_PREFIX gnutls_cli_options.arg.inline_commands_prefix
#define OPT_ARG_PROVIDER gnutls_cli_options.arg.provider
#define OPT_ARG_FIPS140_MODE gnutls_cli_options.arg.fips140_mode
#define OPT_ARG_LIST_CONFIG gnutls_cli_options.arg.list_config
#define OPT_ARG_LOGFILE gnutls_cli_options.arg.logfile
#define OPT_ARG_KEYMATEXPORT gnutls_cli_options.arg.keymatexport
#define OPT_ARG_KEYMATEXPORTSIZE gnutls_cli_options.arg.keymatexportsize
#define OPT_ARG_WAITRESUMPTION gnutls_cli_options.arg.waitresumption
#define OPT_ARG_CA_AUTO_RETRIEVE gnutls_cli_options.arg.ca_auto_retrieve
#define OPT_ARG_VERSION gnutls_cli_options.arg.version
#define OPT_ARG_HELP gnutls_cli_options.arg.help
#define OPT_ARG_MORE_HELP gnutls_cli_options.arg.more_help

#define OPT_VALUE_DEBUG gnutls_cli_options.value.debug
#define OPT_VALUE_MTU gnutls_cli_options.value.mtu
#define OPT_VALUE_DH_BITS gnutls_cli_options.value.dh_bits
#define OPT_VALUE_RECORDSIZE gnutls_cli_options.value.recordsize
#define OPT_VALUE_KEYMATEXPORTSIZE gnutls_cli_options.value.keymatexportsize

#define ENABLED_OPT_DEBUG gnutls_cli_options.enabled.debug
#define ENABLED_OPT_VERBOSE gnutls_cli_options.enabled.verbose
#define ENABLED_OPT_TOFU gnutls_cli_options.enabled.tofu
#define ENABLED_OPT_STRICT_TOFU gnutls_cli_options.enabled.strict_tofu
#define ENABLED_OPT_DANE gnutls_cli_options.enabled.dane
#define ENABLED_OPT_LOCAL_DNS gnutls_cli_options.enabled.local_dns
#define ENABLED_OPT_CA_VERIFICATION gnutls_cli_options.enabled.ca_verification
#define ENABLED_OPT_OCSP gnutls_cli_options.enabled.ocsp
#define ENABLED_OPT_RESUME gnutls_cli_options.enabled.resume
#define ENABLED_OPT_EARLYDATA gnutls_cli_options.enabled.earlydata
#define ENABLED_OPT_REHANDSHAKE gnutls_cli_options.enabled.rehandshake
#define ENABLED_OPT_SNI_HOSTNAME gnutls_cli_options.enabled.sni_hostname
#define ENABLED_OPT_VERIFY_HOSTNAME gnutls_cli_options.enabled.verify_hostname
#define ENABLED_OPT_STARTTLS gnutls_cli_options.enabled.starttls
#define ENABLED_OPT_STARTTLS_PROTO gnutls_cli_options.enabled.starttls_proto
#define ENABLED_OPT_UDP gnutls_cli_options.enabled.udp
#define ENABLED_OPT_MTU gnutls_cli_options.enabled.mtu
#define ENABLED_OPT_CRLF gnutls_cli_options.enabled.crlf
#define ENABLED_OPT_FASTOPEN gnutls_cli_options.enabled.fastopen
#define ENABLED_OPT_X509FMTDER gnutls_cli_options.enabled.x509fmtder
#define ENABLED_OPT_PRINT_CERT gnutls_cli_options.enabled.print_cert
#define ENABLED_OPT_SAVE_CERT gnutls_cli_options.enabled.save_cert
#define ENABLED_OPT_SAVE_OCSP gnutls_cli_options.enabled.save_ocsp
#define ENABLED_OPT_SAVE_OCSP_MULTI gnutls_cli_options.enabled.save_ocsp_multi
#define ENABLED_OPT_SAVE_SERVER_TRACE gnutls_cli_options.enabled.save_server_trace
#define ENABLED_OPT_SAVE_CLIENT_TRACE gnutls_cli_options.enabled.save_client_trace
#define ENABLED_OPT_DH_BITS gnutls_cli_options.enabled.dh_bits
#define ENABLED_OPT_PRIORITY gnutls_cli_options.enabled.priority
#define ENABLED_OPT_X509CAFILE gnutls_cli_options.enabled.x509cafile
#define ENABLED_OPT_X509CRLFILE gnutls_cli_options.enabled.x509crlfile
#define ENABLED_OPT_X509KEYFILE gnutls_cli_options.enabled.x509keyfile
#define ENABLED_OPT_X509CERTFILE gnutls_cli_options.enabled.x509certfile
#define ENABLED_OPT_RAWPKKEYFILE gnutls_cli_options.enabled.rawpkkeyfile
#define ENABLED_OPT_RAWPKFILE gnutls_cli_options.enabled.rawpkfile
#define ENABLED_OPT_SRPUSERNAME gnutls_cli_options.enabled.srpusername
#define ENABLED_OPT_SRPPASSWD gnutls_cli_options.enabled.srppasswd
#define ENABLED_OPT_PSKUSERNAME gnutls_cli_options.enabled.pskusername
#define ENABLED_OPT_PSKKEY gnutls_cli_options.enabled.pskkey
#define ENABLED_OPT_PORT gnutls_cli_options.enabled.port
#define ENABLED_OPT_INSECURE gnutls_cli_options.enabled.insecure
#define ENABLED_OPT_VERIFY_ALLOW_BROKEN gnutls_cli_options.enabled.verify_allow_broken
#define ENABLED_OPT_RANGES gnutls_cli_options.enabled.ranges
#define ENABLED_OPT_BENCHMARK_CIPHERS gnutls_cli_options.enabled.benchmark_ciphers
#define ENABLED_OPT_BENCHMARK_TLS_KX gnutls_cli_options.enabled.benchmark_tls_kx
#define ENABLED_OPT_BENCHMARK_TLS_CIPHERS gnutls_cli_options.enabled.benchmark_tls_ciphers
#define ENABLED_OPT_LIST gnutls_cli_options.enabled.list
#define ENABLED_OPT_PRIORITY_LIST gnutls_cli_options.enabled.priority_list
#define ENABLED_OPT_NOTICKET gnutls_cli_options.enabled.noticket
#define ENABLED_OPT_SRTP_PROFILES gnutls_cli_options.enabled.srtp_profiles
#define ENABLED_OPT_ALPN gnutls_cli_options.enabled.alpn
#define ENABLED_OPT_COMPRESS_CERT gnutls_cli_options.enabled.compress_cert
#define ENABLED_OPT_HEARTBEAT gnutls_cli_options.enabled.heartbeat
#define ENABLED_OPT_RECORDSIZE gnutls_cli_options.enabled.recordsize
#define ENABLED_OPT_DISABLE_SNI gnutls_cli_options.enabled.disable_sni
#define ENABLED_OPT_DISABLE_EXTENSIONS gnutls_cli_options.enabled.disable_extensions
#define ENABLED_OPT_SINGLE_KEY_SHARE gnutls_cli_options.enabled.single_key_share
#define ENABLED_OPT_POST_HANDSHAKE_AUTH gnutls_cli_options.enabled.post_handshake_auth
#define ENABLED_OPT_INLINE_COMMANDS gnutls_cli_options.enabled.inline_commands
#define ENABLED_OPT_INLINE_COMMANDS_PREFIX gnutls_cli_options.enabled.inline_commands_prefix
#define ENABLED_OPT_PROVIDER gnutls_cli_options.enabled.provider
#define ENABLED_OPT_FIPS140_MODE gnutls_cli_options.enabled.fips140_mode
#define ENABLED_OPT_LIST_CONFIG gnutls_cli_options.enabled.list_config
#define ENABLED_OPT_LOGFILE gnutls_cli_options.enabled.logfile
#define ENABLED_OPT_KEYMATEXPORT gnutls_cli_options.enabled.keymatexport
#define ENABLED_OPT_KEYMATEXPORTSIZE gnutls_cli_options.enabled.keymatexportsize
#define ENABLED_OPT_WAITRESUMPTION gnutls_cli_options.enabled.waitresumption
#define ENABLED_OPT_CA_AUTO_RETRIEVE gnutls_cli_options.enabled.ca_auto_retrieve
#define ENABLED_OPT_VERSION gnutls_cli_options.enabled.version
#define ENABLED_OPT_HELP gnutls_cli_options.enabled.help
#define ENABLED_OPT_MORE_HELP gnutls_cli_options.enabled.more_help

#define OPTS_COUNT_ALPN gnutls_cli_options.list.alpn.count
#define OPTS_COUNT_COMPRESS_CERT gnutls_cli_options.list.compress_cert.count

#define OPTS_ARRAY_ALPN gnutls_cli_options.list.alpn.args
#define OPTS_ARRAY_COMPRESS_CERT gnutls_cli_options.list.compress_cert.args


extern struct gnutls_cli_options gnutls_cli_options;
int process_options (int argc, char **argv);
void usage (FILE *out, int status);

#endif /* GNUTLS_CLI_OPTIONS_H_ */
#define optionProcess(a,b,c) process_options(b,c)
#define STACKCT_OPT OPTS_COUNT
#define STACKLST_OPT OPTS_ARRAY