ProtoCore v1.0.16
Deterministic, zero-heap network stack for embedded targets
Loading...
Searching...
No Matches
protocore_config.h
Go to the documentation of this file.
1// ProtoCore v1.0.16 - Copyright (C) 2026 Douglas Quigg (dstroy0) <dquigg123@gmail.com>
2// SPDX-License-Identifier: AGPL-3.0-or-later
3
4#ifndef PROTOCORE_CONFIG_H
5#define PROTOCORE_CONFIG_H
6
7// The platform: the vendor axis, the board profile, the widths, the primitive types built from
8// them, and the capability questions the target had to answer. Reached first because every knob
9// below is stated in those types and gated on those capabilities.
11
12#ifndef PROTOCORE_ENABLE_DIFFSERV
13#define PROTOCORE_ENABLE_DIFFSERV 0
14#endif
15
16#ifndef PROTOCORE_ENABLE_PREEMPT_QUEUE
17#define PROTOCORE_ENABLE_PREEMPT_QUEUE 0
18#endif
19
20#ifndef PROTOCORE_ENABLE_DMA
21#define PROTOCORE_ENABLE_DMA 0
22#endif
23
24#ifndef PROTOCORE_ENABLE_TRACE_CAPTURE
25#define PROTOCORE_ENABLE_TRACE_CAPTURE 0
26#endif
27
28#ifndef PROTOCORE_ENABLE_AD9238
29#define PROTOCORE_ENABLE_AD9238 0
30#endif
31
32#ifndef PROTOCORE_ENABLE_FORWARD
33#define PROTOCORE_ENABLE_FORWARD 0
34#endif
35
36#ifndef PROTOCORE_ENABLE_GATEWAY
37#define PROTOCORE_ENABLE_GATEWAY 0
38#endif
39
40#ifndef PROTOCORE_ENABLE_LORA
41#define PROTOCORE_ENABLE_LORA 0
42#endif
43
44#ifndef PROTOCORE_ENABLE_NRF24
45#define PROTOCORE_ENABLE_NRF24 0
46#endif
47
48#ifndef PROTOCORE_ENABLE_ENOCEAN
49#define PROTOCORE_ENABLE_ENOCEAN 0
50#endif
51
52#ifndef PROTOCORE_ENABLE_PN532
53#define PROTOCORE_ENABLE_PN532 0
54#endif
55
56#ifndef PROTOCORE_ENABLE_SIGFOX
57#define PROTOCORE_ENABLE_SIGFOX 0
58#endif
59
60#ifndef PROTOCORE_ENABLE_ZWAVE
61#define PROTOCORE_ENABLE_ZWAVE 0
62#endif
63
64#ifndef PROTOCORE_ENABLE_ZIGBEE
65#define PROTOCORE_ENABLE_ZIGBEE 0
66#endif
67
68#ifndef PROTOCORE_ENABLE_THREAD
69#define PROTOCORE_ENABLE_THREAD 0
70#endif
71
72#ifndef PROTOCORE_ENABLE_ETHERNET
73#define PROTOCORE_ENABLE_ETHERNET 0
74#endif
75
76#ifndef PROTOCORE_ENABLE_IPV6
77#define PROTOCORE_ENABLE_IPV6 0
78#endif
79
80#ifndef PROTOCORE_ENABLE_PROMISC
81#define PROTOCORE_ENABLE_PROMISC 0
82#endif
83
84#ifndef PROTOCORE_ENABLE_BUS_CAPTURE
85#define PROTOCORE_ENABLE_BUS_CAPTURE 0
86#endif
87
88#ifndef PROTOCORE_ENABLE_WEBSOCKET
89#define PROTOCORE_ENABLE_WEBSOCKET 0
90#endif
91
92#ifndef PROTOCORE_ENABLE_WS_DEFLATE
93#define PROTOCORE_ENABLE_WS_DEFLATE 0
94#endif
95
96#ifndef PROTOCORE_ENABLE_SSE
97#define PROTOCORE_ENABLE_SSE 0
98#endif
99
100#ifndef PROTOCORE_ENABLE_MULTIPART
101#define PROTOCORE_ENABLE_MULTIPART 0
102#endif
103
104#ifndef PROTOCORE_ENABLE_CBOR
105#define PROTOCORE_ENABLE_CBOR 0
106#endif
107
108#ifndef PROTOCORE_ENABLE_MSGPACK
109#define PROTOCORE_ENABLE_MSGPACK 0
110#endif
111
112// The bounded JSON writer and top-level reader (codec/json).
113#ifndef PROTOCORE_ENABLE_JSON
114#define PROTOCORE_ENABLE_JSON 0
115#endif
116
117// The RFC 1951 sec 3.2.5 length and distance tables, read by the DEFLATE encoder and decoder and by
118// the SSH zlib@openssh.com stream codecs.
119#ifndef PROTOCORE_ENABLE_DEFLATE_RFC1951
120#define PROTOCORE_ENABLE_DEFLATE_RFC1951 0
121#endif
122
123// The HTTP route table: the match, the per-route interface gate and the handler a request reaches.
124#ifndef PROTOCORE_ENABLE_HTTP_ROUTE
125#define PROTOCORE_ENABLE_HTTP_ROUTE 0
126#endif
127
128// The built-in dashboard, provisioning form and captive-portal pages served from flash.
129#ifndef PROTOCORE_ENABLE_WEB_ASSETS
130#define PROTOCORE_ENABLE_WEB_ASSETS 0
131#endif
132
133// The DNS query/response codec the resolver and the server both encode through.
134#ifndef PROTOCORE_ENABLE_DNS
135#define PROTOCORE_ENABLE_DNS 0
136#endif
137
138// The TCP surface: the shared connection state every TCP role reaches through.
139#ifndef PROTOCORE_ENABLE_TCP
140#define PROTOCORE_ENABLE_TCP 0
141#endif
142
143// Dialing out: the TCP client that http_client, mqtt, ws_client, relay, smtp, smb, dnc, the FTP
144// session and the reverse-SSH client all connect through. Stated rather than derived. It was
145// PROTOCORE_NEED_CLIENT, an OR over those nine features maintained by hand in buffer_sizing.h, and
146// gen_modules.py reads a module's gate off its own source and matches PROTOCORE_ENABLE_\w+ only -
147// so client.c had no gate as far as CMake was concerned and was compiled into EVERY target. Its
148// symbols were reachable from any translation unit whether or not the build asked for a client.
149// With the flag stated, CMake compiles it where it is on and a TU that reaches into it without
150// asking fails to link instead of quietly resolving.
151#ifndef PROTOCORE_ENABLE_TCP_CLIENT
152#define PROTOCORE_ENABLE_TCP_CLIENT 0
153#endif
154
155// The UDP surface: the shared socket state the client and the listener reach through.
156#ifndef PROTOCORE_ENABLE_UDP
157#define PROTOCORE_ENABLE_UDP 0
158#endif
159
160#ifndef PROTOCORE_ENABLE_FILE_SERVING
161#define PROTOCORE_ENABLE_FILE_SERVING 0
162#endif
163
164#ifndef PROTOCORE_ENABLE_WEBDAV
165#define PROTOCORE_ENABLE_WEBDAV 0
166#endif
167
168#ifndef PROTOCORE_ENABLE_AUTH
169#define PROTOCORE_ENABLE_AUTH 0
170#endif
171
172#ifndef PROTOCORE_ENABLE_TELNET
173#define PROTOCORE_ENABLE_TELNET 0
174#endif
175
176#ifndef PROTOCORE_ENABLE_SSH
177#define PROTOCORE_ENABLE_SSH 0
178#endif
179
180#ifndef PROTOCORE_ENABLE_SSH_CLIENT
181#define PROTOCORE_ENABLE_SSH_CLIENT 0
182#endif
183
184#ifndef PROTOCORE_ENABLE_PQC_KEX
185#define PROTOCORE_ENABLE_PQC_KEX 0
186#endif
187
188#ifndef PROTOCORE_ENABLE_MODBUS
189#define PROTOCORE_ENABLE_MODBUS 0
190#endif
191
192#ifndef PROTOCORE_ENABLE_CLOUDEVENTS
193#define PROTOCORE_ENABLE_CLOUDEVENTS 0
194#endif
195
196#ifndef PROTOCORE_ENABLE_REDIS
197#define PROTOCORE_ENABLE_REDIS 0
198#endif
199
200#ifndef PROTOCORE_ENABLE_STOMP
201#define PROTOCORE_ENABLE_STOMP 0
202#endif
203
204#ifndef PROTOCORE_ENABLE_MQTT_SN
205#define PROTOCORE_ENABLE_MQTT_SN 0
206#endif
207
208#ifndef PROTOCORE_ENABLE_FLOW_EXPORT
209#define PROTOCORE_ENABLE_FLOW_EXPORT 0
210#endif
211
212#ifndef PROTOCORE_ENABLE_PROTOBUF
213#define PROTOCORE_ENABLE_PROTOBUF 0
214#endif
215
216#ifndef PROTOCORE_ENABLE_WAMP
217#define PROTOCORE_ENABLE_WAMP 0
218#endif
219
220#ifndef PROTOCORE_ENABLE_SUNSPEC
221#define PROTOCORE_ENABLE_SUNSPEC 0
222#endif
223
224#ifndef PROTOCORE_ENABLE_C37118
225#define PROTOCORE_ENABLE_C37118 0
226#endif
227
228#ifndef PROTOCORE_ENABLE_DNP3
229#define PROTOCORE_ENABLE_DNP3 0
230#endif
231
232#ifndef PROTOCORE_ENABLE_CANOPEN
233#define PROTOCORE_ENABLE_CANOPEN 0
234#endif
235
236#ifndef PROTOCORE_ENABLE_CIA402
237#define PROTOCORE_ENABLE_CIA402 0
238#endif
239
240#ifndef PROTOCORE_ENABLE_CONTROL
241#define PROTOCORE_ENABLE_CONTROL 0
242#endif
243
244#ifndef PROTOCORE_ENABLE_J1939
245#define PROTOCORE_ENABLE_J1939 0
246#endif
247
248#ifndef PROTOCORE_ENABLE_DEVICENET
249#define PROTOCORE_ENABLE_DEVICENET 0
250#endif
251
252#ifndef PROTOCORE_ENABLE_MBUS
253#define PROTOCORE_ENABLE_MBUS 0
254#endif
255
256#ifndef PROTOCORE_ENABLE_IEC60870
257#define PROTOCORE_ENABLE_IEC60870 0
258#endif
259
260#ifndef PROTOCORE_ENABLE_SDI12
261#define PROTOCORE_ENABLE_SDI12 0
262#endif
263
264#ifndef PROTOCORE_ENABLE_DMX
265#define PROTOCORE_ENABLE_DMX 0
266#endif
267
268#ifndef PROTOCORE_ENABLE_NMEA0183
269#define PROTOCORE_ENABLE_NMEA0183 0
270#endif
271
272#ifndef PROTOCORE_ENABLE_ROAMING
273#define PROTOCORE_ENABLE_ROAMING 0
274#endif
275
276#ifndef PROTOCORE_ENABLE_UBX
277#define PROTOCORE_ENABLE_UBX 0
278#endif
279
280#ifndef PROTOCORE_ENABLE_PTP
281#define PROTOCORE_ENABLE_PTP 0
282#endif
283
284#ifndef PROTOCORE_ENABLE_IOLINK
285#define PROTOCORE_ENABLE_IOLINK 0
286#endif
287
288#ifndef PROTOCORE_ENABLE_GRPC_WEB
289#define PROTOCORE_ENABLE_GRPC_WEB 0
290#endif
291
292#ifndef PROTOCORE_ENABLE_LWM2M
293#define PROTOCORE_ENABLE_LWM2M 0
294#endif
295
296#ifndef PROTOCORE_ENABLE_FINS
297#define PROTOCORE_ENABLE_FINS 0
298#endif
299
300#ifndef PROTOCORE_ENABLE_HOSTLINK
301#define PROTOCORE_ENABLE_HOSTLINK 0
302#endif
303
304#ifndef PROTOCORE_ENABLE_SCPI
305#define PROTOCORE_ENABLE_SCPI 0
306#endif
307
308#ifndef PROTOCORE_ENABLE_HISLIP
309#define PROTOCORE_ENABLE_HISLIP 0
310#endif
311
312#ifndef PROTOCORE_ENABLE_VXI11
313#define PROTOCORE_ENABLE_VXI11 0
314#endif
315
316#ifndef PROTOCORE_ENABLE_GPIB
317#define PROTOCORE_ENABLE_GPIB 0
318#endif
319
320#ifndef PROTOCORE_ENABLE_HAAS_MDC
321#define PROTOCORE_ENABLE_HAAS_MDC 0
322#endif
323
324#ifndef PROTOCORE_ENABLE_PACKML
325#define PROTOCORE_ENABLE_PACKML 0
326#endif
327
328#ifndef PROTOCORE_ENABLE_LSV2
329#define PROTOCORE_ENABLE_LSV2 0
330#endif
331
332#ifndef PROTOCORE_ENABLE_IKEV2
333#define PROTOCORE_ENABLE_IKEV2 0
334#endif
335
336#ifndef PROTOCORE_ENABLE_DF1
337#define PROTOCORE_ENABLE_DF1 0
338#endif
339
340#ifndef PROTOCORE_ENABLE_SIMATIC
341#define PROTOCORE_ENABLE_SIMATIC 0
342#endif
343
344#ifndef PROTOCORE_ENABLE_COTP
345#define PROTOCORE_ENABLE_COTP 0
346#endif
347
348#ifndef PROTOCORE_ENABLE_S7COMM
349#define PROTOCORE_ENABLE_S7COMM 0
350#endif
351
352#ifndef PROTOCORE_ENABLE_MELSEC
353#define PROTOCORE_ENABLE_MELSEC 0
354#endif
355
356#ifndef PROTOCORE_ENABLE_ADS
357#define PROTOCORE_ENABLE_ADS 0
358#endif
359
360#ifndef PROTOCORE_ENABLE_FOCAS
361#define PROTOCORE_ENABLE_FOCAS 0
362#endif
363
364#ifndef PROTOCORE_ENABLE_FANUC_J519
365#define PROTOCORE_ENABLE_FANUC_J519 0
366#endif
367
368#ifndef PROTOCORE_ENABLE_BACNET
369#define PROTOCORE_ENABLE_BACNET 0
370#endif
371
372#ifndef PROTOCORE_ENABLE_ENIP
373#define PROTOCORE_ENABLE_ENIP 0
374#endif
375
376#ifndef PROTOCORE_ENABLE_AMQP
377#define PROTOCORE_ENABLE_AMQP 0
378#endif
379
380#ifndef PROTOCORE_ENABLE_CIP
381#define PROTOCORE_ENABLE_CIP 0
382#endif
383
384#ifndef PROTOCORE_ENABLE_NATS
385#define PROTOCORE_ENABLE_NATS 0
386#endif
387
388#ifndef PROTOCORE_ENABLE_PROXY_PROTOCOL
389#define PROTOCORE_ENABLE_PROXY_PROTOCOL 0
390#endif
391
392#ifndef PROTOCORE_ENABLE_MODBUS_MASTER
393#define PROTOCORE_ENABLE_MODBUS_MASTER 0
394#endif
395
396#ifndef PROTOCORE_ENABLE_TLS
397#define PROTOCORE_ENABLE_TLS 0
398#endif
399
400#ifndef PROTOCORE_ENABLE_TLS_RESUMPTION
401#define PROTOCORE_ENABLE_TLS_RESUMPTION 0
402#endif
403
404#ifndef PROTOCORE_ENABLE_SNMP
405#define PROTOCORE_ENABLE_SNMP 0
406#endif
407
408#ifndef PROTOCORE_ENABLE_SNMP_V3
409#define PROTOCORE_ENABLE_SNMP_V3 0
410#endif
411
412#ifndef PROTOCORE_ENABLE_SNMP_TRAP
413#define PROTOCORE_ENABLE_SNMP_TRAP 0
414#endif
415
416#ifndef PROTOCORE_ENABLE_COAP
417#define PROTOCORE_ENABLE_COAP 0
418#endif
419
420#ifndef PROTOCORE_ENABLE_COAP_OBSERVE
421#define PROTOCORE_ENABLE_COAP_OBSERVE 0
422#endif
423
424#ifndef PROTOCORE_ENABLE_COAP_BLOCK
425#define PROTOCORE_ENABLE_COAP_BLOCK 0
426#endif
427
428#ifndef PROTOCORE_ENABLE_MDNS
429#define PROTOCORE_ENABLE_MDNS 0
430#endif
431
432#ifndef PROTOCORE_ENABLE_NTP
433#define PROTOCORE_ENABLE_NTP 0
434#endif
435
436#ifndef PROTOCORE_ENABLE_NTP_SERVER
437#define PROTOCORE_ENABLE_NTP_SERVER 0
438#endif
439
440#ifndef PROTOCORE_ENABLE_DNS_SERVER
441#define PROTOCORE_ENABLE_DNS_SERVER 0
442#endif
443
444#ifndef PROTOCORE_ENABLE_TIME_SOURCE
445#define PROTOCORE_ENABLE_TIME_SOURCE 0
446#endif
447
448#ifndef PROTOCORE_ENABLE_RTC
449#define PROTOCORE_ENABLE_RTC 0
450#endif
451
452#ifndef PROTOCORE_ENABLE_LD2410
453#define PROTOCORE_ENABLE_LD2410 0
454#endif
455
456#ifndef PROTOCORE_ENABLE_RCWL0516
457#define PROTOCORE_ENABLE_RCWL0516 0
458#endif
459
460#ifndef PROTOCORE_ENABLE_HMMD
461#define PROTOCORE_ENABLE_HMMD 0
462#endif
463
464#ifndef PROTOCORE_ENABLE_SAFETY_SCL
465#define PROTOCORE_ENABLE_SAFETY_SCL 0
466#endif
467
468#ifndef PROTOCORE_ENABLE_SEN0192
469#define PROTOCORE_ENABLE_SEN0192 0
470#endif
471
472#ifndef PROTOCORE_ENABLE_MPR121
473#define PROTOCORE_ENABLE_MPR121 0
474#endif
475
476#ifndef PROTOCORE_ENABLE_SHT3X
477#define PROTOCORE_ENABLE_SHT3X 0
478#endif
479
480#ifndef PROTOCORE_ENABLE_PCA9685
481#define PROTOCORE_ENABLE_PCA9685 0
482#endif
483
484#ifndef PROTOCORE_ENABLE_ADS1115
485#define PROTOCORE_ENABLE_ADS1115 0
486#endif
487
488#ifndef PROTOCORE_ENABLE_SMBUS
489#define PROTOCORE_ENABLE_SMBUS 0
490#endif
491
492#ifndef PROTOCORE_ENABLE_PMBUS
493#define PROTOCORE_ENABLE_PMBUS 0
494#endif
495
496#ifndef PROTOCORE_ENABLE_INA219
497#define PROTOCORE_ENABLE_INA219 0
498#endif
499
500#ifndef PROTOCORE_ENABLE_CONFIG_STORE
501#define PROTOCORE_ENABLE_CONFIG_STORE 0
502#endif
503
504#ifndef PROTOCORE_ENABLE_DEVICE_ID
505#define PROTOCORE_ENABLE_DEVICE_ID 0
506#endif
507
508#ifndef PROTOCORE_ENABLE_TELEMETRY
509#define PROTOCORE_ENABLE_TELEMETRY 0
510#endif
511
512#ifndef PROTOCORE_ENABLE_DASHBOARD
513#define PROTOCORE_ENABLE_DASHBOARD 0
514#endif
515
516#ifndef PROTOCORE_ENABLE_THEMES
517#define PROTOCORE_ENABLE_THEMES 0
518#endif
519
520#ifndef PROTOCORE_ENABLE_PARTITION_MONITOR
521#define PROTOCORE_ENABLE_PARTITION_MONITOR 0
522#endif
523
524#ifndef PROTOCORE_ENABLE_GPIO_MAP
525#define PROTOCORE_ENABLE_GPIO_MAP 0
526#endif
527
528#ifndef PROTOCORE_ENABLE_UDP_TELEMETRY
529#define PROTOCORE_ENABLE_UDP_TELEMETRY 0
530#endif
531
532#ifndef PROTOCORE_ENABLE_STATSD
533#define PROTOCORE_ENABLE_STATSD 0
534#endif
535
536#ifndef PROTOCORE_ENABLE_GUARDRAILS
537#define PROTOCORE_ENABLE_GUARDRAILS 0
538#endif
539
540#ifndef PROTOCORE_ENABLE_FAILSAFE
541#define PROTOCORE_ENABLE_FAILSAFE 0
542#endif
543
544#ifndef PROTOCORE_ENABLE_SLEEP_SCHED
545#define PROTOCORE_ENABLE_SLEEP_SCHED 0
546#endif
547
548#ifndef PROTOCORE_ENABLE_WEARLEVEL
549#define PROTOCORE_ENABLE_WEARLEVEL 0
550#endif
551
552#ifndef PROTOCORE_ENABLE_POWER_MGMT
553#define PROTOCORE_ENABLE_POWER_MGMT 0
554#endif
555
556#ifndef PROTOCORE_ENABLE_HOTSWAP
557#define PROTOCORE_ENABLE_HOTSWAP 0
558#endif
559
560#ifndef PROTOCORE_ENABLE_NETADAPT
561#define PROTOCORE_ENABLE_NETADAPT 0
562#endif
563
564#ifndef PROTOCORE_ENABLE_DSHOT
565#define PROTOCORE_ENABLE_DSHOT 0
566#endif
567
568#ifndef PROTOCORE_ENABLE_HART
569#define PROTOCORE_ENABLE_HART 0
570#endif
571
572#ifndef PROTOCORE_ENABLE_NTS
573#define PROTOCORE_ENABLE_NTS 0
574#endif
575
576#ifndef PROTOCORE_ENABLE_DDS
577#define PROTOCORE_ENABLE_DDS 0
578#endif
579
580#ifndef PROTOCORE_ENABLE_XMPP
581#define PROTOCORE_ENABLE_XMPP 0
582#endif
583
584#ifndef PROTOCORE_ENABLE_RAWL2
585#define PROTOCORE_ENABLE_RAWL2 0
586#endif
587
588#ifndef PROTOCORE_ENABLE_SPA_ROUTER
589#define PROTOCORE_ENABLE_SPA_ROUTER 0
590#endif
591
592#ifndef PROTOCORE_ENABLE_GOOSE
593#define PROTOCORE_ENABLE_GOOSE 0
594#endif
595
596#ifndef PROTOCORE_ENABLE_MTCONNECT
597#define PROTOCORE_ENABLE_MTCONNECT 0
598#endif
599
600#ifndef PROTOCORE_ENABLE_WAL
601#define PROTOCORE_ENABLE_WAL 0
602#endif
603
604#ifndef PROTOCORE_ENABLE_DBM
605#define PROTOCORE_ENABLE_DBM 0
606#endif
607
608#ifndef PROTOCORE_ENABLE_DOCSTORE
609#define PROTOCORE_ENABLE_DOCSTORE 0
610#endif
611
612#ifndef PROTOCORE_ENABLE_SQLITE
613#define PROTOCORE_ENABLE_SQLITE 0
614#endif
615
616#ifndef PROTOCORE_ENABLE_DNC
617#define PROTOCORE_ENABLE_DNC 0
618#endif
619
620#ifndef PROTOCORE_ENABLE_RELAY
621#define PROTOCORE_ENABLE_RELAY 0
622#endif
623
624#ifndef PROTOCORE_ENABLE_IFACE_BRIDGE
625#define PROTOCORE_ENABLE_IFACE_BRIDGE 0
626#endif
627
628#ifndef PROTOCORE_ENABLE_NTRIP_CASTER
629#define PROTOCORE_ENABLE_NTRIP_CASTER 0
630#endif
631
632#ifndef PROTOCORE_ENABLE_FTP
633#define PROTOCORE_ENABLE_FTP 0
634#endif
635
636#ifndef PROTOCORE_ENABLE_FTP_SESSION
637#define PROTOCORE_ENABLE_FTP_SESSION 0
638#endif
639
640#ifndef PROTOCORE_ENABLE_HTTP_CACHE
641#define PROTOCORE_ENABLE_HTTP_CACHE 0
642#endif
643
644#ifndef PROTOCORE_ENABLE_SMB
645#define PROTOCORE_ENABLE_SMB 0
646#endif
647
648#ifndef PROTOCORE_ENABLE_J2735
649#define PROTOCORE_ENABLE_J2735 0
650#endif
651
652#ifndef PROTOCORE_ENABLE_NEMA_TS2
653#define PROTOCORE_ENABLE_NEMA_TS2 0
654#endif
655
656#ifndef PROTOCORE_ENABLE_SNP
657#define PROTOCORE_ENABLE_SNP 0
658#endif
659
660#ifndef PROTOCORE_ENABLE_DIRECTNET
661#define PROTOCORE_ENABLE_DIRECTNET 0
662#endif
663
664#ifndef PROTOCORE_ENABLE_SEP2
665#define PROTOCORE_ENABLE_SEP2 0
666#endif
667
668#ifndef PROTOCORE_ENABLE_PROFINET
669#define PROTOCORE_ENABLE_PROFINET 0
670#endif
671
672#ifndef PROTOCORE_ENABLE_NTCIP
673#define PROTOCORE_ENABLE_NTCIP 0
674#endif
675
676#ifndef PROTOCORE_ENABLE_OPENADR
677#define PROTOCORE_ENABLE_OPENADR 0
678#endif
679
680#ifndef PROTOCORE_ENABLE_MMS
681#define PROTOCORE_ENABLE_MMS 0
682#endif
683
684#ifndef PROTOCORE_ENABLE_CCLINK
685#define PROTOCORE_ENABLE_CCLINK 0
686#endif
687
688#ifndef PROTOCORE_ENABLE_POWERLINK
689#define PROTOCORE_ENABLE_POWERLINK 0
690#endif
691
692#ifndef PROTOCORE_ENABLE_SERCOS
693#define PROTOCORE_ENABLE_SERCOS 0
694#endif
695
696#ifndef PROTOCORE_ENABLE_PROFIBUS
697#define PROTOCORE_ENABLE_PROFIBUS 0
698#endif
699
700#ifndef PROTOCORE_ENABLE_LONWORKS
701#define PROTOCORE_ENABLE_LONWORKS 0
702#endif
703
704#ifndef PROTOCORE_ENABLE_MBPLUS
705#define PROTOCORE_ENABLE_MBPLUS 0
706#endif
707
708#ifndef PROTOCORE_ENABLE_INTERBUS
709#define PROTOCORE_ENABLE_INTERBUS 0
710#endif
711
712#ifndef PROTOCORE_ENABLE_ICCP
713#define PROTOCORE_ENABLE_ICCP 0
714#endif
715
716#ifndef PROTOCORE_ENABLE_WAVE
717#define PROTOCORE_ENABLE_WAVE 0
718#endif
719
720#ifndef PROTOCORE_ENABLE_UTMC
721#define PROTOCORE_ENABLE_UTMC 0
722#endif
723
724#ifndef PROTOCORE_ENABLE_OCIT
725#define PROTOCORE_ENABLE_OCIT 0
726#endif
727
728#ifndef PROTOCORE_ENABLE_ATC
729#define PROTOCORE_ENABLE_ATC 0
730#endif
731
732#ifndef PROTOCORE_ENABLE_SOUTHBOUND
733#define PROTOCORE_ENABLE_SOUTHBOUND 0
734#endif
735
736#ifndef PROTOCORE_ENABLE_EXC_DECODER
737#define PROTOCORE_ENABLE_EXC_DECODER 0
738#endif
739
740#ifndef PROTOCORE_ENABLE_HTTP_DELIVERY
741#define PROTOCORE_ENABLE_HTTP_DELIVERY 0
742#endif
743
744#ifndef PROTOCORE_ENABLE_HW_HEALTH
745#define PROTOCORE_ENABLE_HW_HEALTH 0
746#endif
747
748#ifndef PROTOCORE_ENABLE_MDNS_ADAPTIVE
749#define PROTOCORE_ENABLE_MDNS_ADAPTIVE 0
750#endif
751
752#ifndef PROTOCORE_ENABLE_SOCKPOOL
753#define PROTOCORE_ENABLE_SOCKPOOL 0
754#endif
755
756#ifndef PROTOCORE_ENABLE_PSRAM_POOL
757#define PROTOCORE_ENABLE_PSRAM_POOL 0
758#endif
759
760#ifndef PROTOCORE_ENABLE_HAPPY_EYEBALLS
761#define PROTOCORE_ENABLE_HAPPY_EYEBALLS 0
762#endif
763
764#ifndef PROTOCORE_ENABLE_WIFI_SNIFFER
765#define PROTOCORE_ENABLE_WIFI_SNIFFER 0
766#endif
767
768#ifndef PROTOCORE_ENABLE_LINK_MANAGER
769#define PROTOCORE_ENABLE_LINK_MANAGER 0
770#endif
771
772#ifndef PROTOCORE_ENABLE_CC1101
773#define PROTOCORE_ENABLE_CC1101 0
774#endif
775
776#ifndef PROTOCORE_ENABLE_FDC2214
777#define PROTOCORE_ENABLE_FDC2214 0
778#endif
779
780#ifndef PROTOCORE_ENABLE_LDC1614
781#define PROTOCORE_ENABLE_LDC1614 0
782#endif
783
784#ifndef PROTOCORE_ENABLE_VL53L0X
785#define PROTOCORE_ENABLE_VL53L0X 0
786#endif
787
788#ifndef PROTOCORE_ENABLE_RADIO_SNIFF
789#define PROTOCORE_ENABLE_RADIO_SNIFF 0
790#endif
791
792#ifndef PROTOCORE_ENABLE_BLE_GATT
793#define PROTOCORE_ENABLE_BLE_GATT 0
794#endif
795
796#ifndef PROTOCORE_ENABLE_TLS_POLICY
797#define PROTOCORE_ENABLE_TLS_POLICY 0
798#endif
799
800#ifndef PROTOCORE_ENABLE_WISUN
801#define PROTOCORE_ENABLE_WISUN 0
802#endif
803
804#ifndef PROTOCORE_ENABLE_LOGBUF
805#define PROTOCORE_ENABLE_LOGBUF 0
806#endif
807
808#ifndef PROTOCORE_ENABLE_CONFIG_IO
809#define PROTOCORE_ENABLE_CONFIG_IO 0
810#endif
811
812#ifndef PROTOCORE_ENABLE_OTA
813#define PROTOCORE_ENABLE_OTA 0
814#endif
815
816#ifndef PROTOCORE_ENABLE_OTA_ROLLBACK
817#define PROTOCORE_ENABLE_OTA_ROLLBACK 0
818#endif
819
820#ifndef PROTOCORE_ENABLE_TOTP
821#define PROTOCORE_ENABLE_TOTP 0
822#endif
823
824#ifndef PROTOCORE_ENABLE_WEBHOOK
825#define PROTOCORE_ENABLE_WEBHOOK 0
826#endif
827
828#ifndef PROTOCORE_ENABLE_RADIO_POWER
829#define PROTOCORE_ENABLE_RADIO_POWER 0
830#endif
831
832#ifndef PROTOCORE_ENABLE_DNS_RESOLVER
833#define PROTOCORE_ENABLE_DNS_RESOLVER 0
834#endif
835
836#ifndef PROTOCORE_ENABLE_AUDIT_LOG
837#define PROTOCORE_ENABLE_AUDIT_LOG 0
838#endif
839
840#ifndef PROTOCORE_ENABLE_OIDC
841#define PROTOCORE_ENABLE_OIDC 0
842#endif
843
844#ifndef PROTOCORE_ENABLE_MNT
845#define PROTOCORE_ENABLE_MNT 0
846#endif
847
848#ifndef PROTOCORE_ENABLE_GRAPHQL
849#define PROTOCORE_ENABLE_GRAPHQL 0
850#endif
851
852#ifndef PROTOCORE_ENABLE_ESPNOW
853#define PROTOCORE_ENABLE_ESPNOW 0
854#endif
855
856#ifndef PROTOCORE_ENABLE_OAUTH2
857#define PROTOCORE_ENABLE_OAUTH2 0
858#endif
859
860#ifndef PROTOCORE_ENABLE_OPCUA
861#define PROTOCORE_ENABLE_OPCUA 0
862#endif
863
864#ifndef PROTOCORE_ENABLE_OPCUA_CLIENT
865#define PROTOCORE_ENABLE_OPCUA_CLIENT 0
866#endif
867
868#ifndef PROTOCORE_ENABLE_UMATI
869#define PROTOCORE_ENABLE_UMATI 0
870#endif
871
872#ifndef PROTOCORE_ENABLE_ROBOTICS
873#define PROTOCORE_ENABLE_ROBOTICS 0
874#endif
875
876#ifndef PROTOCORE_ENABLE_EUROMAP77
877#define PROTOCORE_ENABLE_EUROMAP77 0
878#endif
879
880#ifndef PROTOCORE_ENABLE_UPLOAD
881#define PROTOCORE_ENABLE_UPLOAD 0
882#endif
883
884#ifndef PROTOCORE_ENABLE_PROVISIONING
885#define PROTOCORE_ENABLE_PROVISIONING 0
886#endif
887
888#ifndef PROTOCORE_ENABLE_SYSLOG
889#define PROTOCORE_ENABLE_SYSLOG 0
890#endif
891
892#ifndef PROTOCORE_ENABLE_JWT
893#define PROTOCORE_ENABLE_JWT 0
894#endif
895
896#ifndef PROTOCORE_ENABLE_HTTP_CLIENT
897#define PROTOCORE_ENABLE_HTTP_CLIENT 0
898#endif
899
900#ifndef PROTOCORE_ENABLE_SMTP
901#define PROTOCORE_ENABLE_SMTP 0
902#endif
903
904#ifndef PROTOCORE_ENABLE_MQTT
905#define PROTOCORE_ENABLE_MQTT 0
906#endif
907
908#ifndef PROTOCORE_ENABLE_WS_CLIENT
909#define PROTOCORE_ENABLE_WS_CLIENT 0
910#endif
911
912#ifndef PROTOCORE_ENABLE_STATS
913#define PROTOCORE_ENABLE_STATS 0
914#endif
915
916#ifndef PROTOCORE_ENABLE_OBSERVABILITY
917#define PROTOCORE_ENABLE_OBSERVABILITY 0
918#endif
919
920#ifndef PROTOCORE_ENABLE_METRICS
921#define PROTOCORE_ENABLE_METRICS 0
922#endif
923
924#ifndef PROTOCORE_ENABLE_WEB_TERMINAL
925#define PROTOCORE_ENABLE_WEB_TERMINAL 0
926#endif
927
928#ifndef PROTOCORE_ENABLE_ETAG
929#define PROTOCORE_ENABLE_ETAG 0
930#endif
931
932#ifndef PROTOCORE_ENABLE_DIAG
933#define PROTOCORE_ENABLE_DIAG 0
934#endif
935
936#ifndef PROTOCORE_ENABLE_KEEPALIVE
937#define PROTOCORE_ENABLE_KEEPALIVE 0
938#endif
939
940#ifndef PROTOCORE_ENABLE_HTTP2
941#define PROTOCORE_ENABLE_HTTP2 0
942#endif
943
944#ifndef PROTOCORE_ENABLE_HTTP3
945#define PROTOCORE_ENABLE_HTTP3 0
946#endif
947
948#ifndef PROTOCORE_ENABLE_DTLS
949#define PROTOCORE_ENABLE_DTLS 0
950#endif
951
952#ifndef PROTOCORE_ENABLE_TLS_RPK
953#define PROTOCORE_ENABLE_TLS_RPK 0
954#endif
955
956#ifndef PROTOCORE_ENABLE_X509
957#define PROTOCORE_ENABLE_X509 0
958#endif
959
960#ifndef PROTOCORE_ENABLE_RANGE
961#define PROTOCORE_ENABLE_RANGE 0
962#endif
963
964#ifndef PROTOCORE_ENABLE_SSH_KEYBOARD_INTERACTIVE
965#define PROTOCORE_ENABLE_SSH_KEYBOARD_INTERACTIVE 0
966#endif
967
968#ifndef PROTOCORE_ENABLE_ACCEPT_THROTTLE
969#define PROTOCORE_ENABLE_ACCEPT_THROTTLE 0
970#endif
971
972#ifndef PROTOCORE_ENABLE_PER_IP_THROTTLE
973#define PROTOCORE_ENABLE_PER_IP_THROTTLE 0
974#endif
975
976#ifndef PROTOCORE_ENABLE_IP_ALLOWLIST
977#define PROTOCORE_ENABLE_IP_ALLOWLIST 0
978#endif
979
980#ifndef PROTOCORE_ENABLE_FORWARDED_TRUST
981#define PROTOCORE_ENABLE_FORWARDED_TRUST 0
982#endif
983
984#ifndef PROTOCORE_ENABLE_AUTH_LOCKOUT
985#define PROTOCORE_ENABLE_AUTH_LOCKOUT 0
986#endif
987
988#ifndef PROTOCORE_ENABLE_CSRF
989#define PROTOCORE_ENABLE_CSRF 0
990#endif
991
992#ifndef PROTOCORE_ENABLE_SSH_SFTP
993#define PROTOCORE_ENABLE_SSH_SFTP 0
994#endif
995
996#ifndef PROTOCORE_ENABLE_SSH_SCP
997#define PROTOCORE_ENABLE_SSH_SCP 0
998#endif
999
1000#ifndef PROTOCORE_ENABLE_SSH_ZLIB
1001#define PROTOCORE_ENABLE_SSH_ZLIB 0
1002#endif
1003
1004// Ungated before the wrap, so they stand where they stood.
1005#ifndef PROTOCORE_ENABLE_SHA1
1006#define PROTOCORE_ENABLE_SHA1 1
1007#endif
1008#ifndef PROTOCORE_ENABLE_SHA256
1009#define PROTOCORE_ENABLE_SHA256 1
1010#endif
1011#ifndef PROTOCORE_ENABLE_SHA512
1012#define PROTOCORE_ENABLE_SHA512 1
1013#endif
1014#ifndef PROTOCORE_ENABLE_MD
1015#define PROTOCORE_ENABLE_MD 1
1016#endif
1017#ifndef PROTOCORE_ENABLE_HMAC_SHA256
1018#define PROTOCORE_ENABLE_HMAC_SHA256 1
1019#endif
1020#ifndef PROTOCORE_ENABLE_HMAC_SHA512
1021#define PROTOCORE_ENABLE_HMAC_SHA512 1
1022#endif
1023#ifndef PROTOCORE_ENABLE_POLY1305
1024#define PROTOCORE_ENABLE_POLY1305 1
1025#endif
1026#ifndef PROTOCORE_ENABLE_AES_CMAC
1027#define PROTOCORE_ENABLE_AES_CMAC 1
1028#endif
1029#ifndef PROTOCORE_ENABLE_GHASH
1030#define PROTOCORE_ENABLE_GHASH 1
1031#endif
1032// The constant-time compare. Every tag check in the library ends at it and mmgr/protomem.h and
1033// mmgr/protostr.h both reach for it, so a build that turns this off has no AEAD open and no
1034// authenticated anything: it is stated for the shape every other primitive has, not as a knob.
1035#ifndef PROTOCORE_ENABLE_CT_EQ
1036#define PROTOCORE_ENABLE_CT_EQ 1
1037#endif
1038// The raw byte mover, under every span copy and every unaligned fill in the tree. Stated for the
1039// shape every other module has rather than as a knob: mmgr is the substrate a borrow is carved out
1040// of, so a build that turns this off has no memory manager and links nothing.
1041#ifndef PROTOCORE_ENABLE_RAWMEMCPY
1042#define PROTOCORE_ENABLE_RAWMEMCPY 1
1043#endif
1044// The request parser. Every HTTP path in the library feeds it, and 53 envs build it with no flag in
1045// common, so a build that turns this off serves nothing over HTTP: stated for the shape every other
1046// module has, not as a knob.
1047#ifndef PROTOCORE_ENABLE_HTTP_PARSER
1048#define PROTOCORE_ENABLE_HTTP_PARSER 1
1049#endif
1050// The RSA host key: DER parsing, the ssh-rsa blob encoding, and signing through Rsa. Named for SSH
1051// but reached by IKEv2 and OIDC too, and 17 envs build it with no flag in common, so it is stated
1052// for the shape every other module has rather than gated on any one caller.
1053#ifndef PROTOCORE_ENABLE_SSH_RSA
1054#define PROTOCORE_ENABLE_SSH_RSA 1
1055#endif
1056// The base64 codec. The WebSocket accept digest, Basic auth, JWS and every PEM path reach it, and 52
1057// envs build it with no flag in common: stated for the shape every other module has, not as a knob.
1058#ifndef PROTOCORE_ENABLE_BASE64
1059#define PROTOCORE_ENABLE_BASE64 1
1060#endif
1061#ifndef PROTOCORE_ENABLE_KDF
1062#define PROTOCORE_ENABLE_KDF 1
1063#endif
1064#ifndef PROTOCORE_ENABLE_AESGCM
1065#define PROTOCORE_ENABLE_AESGCM 1
1066#endif
1067#ifndef PROTOCORE_ENABLE_CHACHAPOLY
1068#define PROTOCORE_ENABLE_CHACHAPOLY 1
1069#endif
1070#ifndef PROTOCORE_ENABLE_CHACHA20
1071#define PROTOCORE_ENABLE_CHACHA20 1
1072#endif
1073#ifndef PROTOCORE_ENABLE_AES256CTR
1074#define PROTOCORE_ENABLE_AES256CTR 1
1075#endif
1076#ifndef PROTOCORE_ENABLE_AES_BLOCK
1077#define PROTOCORE_ENABLE_AES_BLOCK 1
1078#endif
1079#ifndef PROTOCORE_ENABLE_AES_SBOX
1080#define PROTOCORE_ENABLE_AES_SBOX 1
1081#endif
1082#ifndef PROTOCORE_ENABLE_BIGNUM
1083#define PROTOCORE_ENABLE_BIGNUM 1
1084#endif
1085#ifndef PROTOCORE_ENABLE_CURVE25519
1086#define PROTOCORE_ENABLE_CURVE25519 1
1087#endif
1088#ifndef PROTOCORE_ENABLE_FE25519
1089#define PROTOCORE_ENABLE_FE25519 1
1090#endif
1091#ifndef PROTOCORE_ENABLE_ECDSA
1092#define PROTOCORE_ENABLE_ECDSA 1
1093#endif
1094#ifndef PROTOCORE_ENABLE_ED25519
1095#define PROTOCORE_ENABLE_ED25519 1
1096#endif
1097#ifndef PROTOCORE_ENABLE_RSA
1098#define PROTOCORE_ENABLE_RSA 1
1099#endif
1100#ifndef PROTOCORE_ENABLE_RNG
1101#define PROTOCORE_ENABLE_RNG 1
1102#endif
1103
1104// The flags these decide: a value read off another flag, or one an enabled feature forces on.
1106
1107// Everything the flags above are spent on: capacities, buffer extents and pool borrows.
1109
1110// What those flags require of each other and of the sizing.
1112
1113// Final sizing pass: raise buffers to the floors the enabled features require (every PROTOCORE_ENABLE_*
1114// flag is resolved by this point).
1115#include "derived_sizing.h" // PROTOCORE_ALLOW_LATE_INCLUDE: ordered - reads the flags resolved above
1116
1117#endif
Every capacity, buffer extent and pool borrow the enabled features are sized on.
Feature-driven sizing resolution - the per-variant sizing layer's final pass.
The flags a build does not set: the ones another flag decides.
What the enabled features require of each other and of the sizing, as compile-time refusals.
The platform contract: what the library asks of a target, in the library's own words.