ifstate 1.13.6__py3-none-any.whl → 2.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4259 +0,0 @@
1
- {
2
- "$id": "https://ifstate.net/schema/ifstate.conf.schema.json",
3
- "$schema": "http://json-schema.org/draft-07/schema#",
4
- "title": "ifstate.conf",
5
- "description": "IfState 1.13 Configuration Schema",
6
- "type": "object",
7
- "required": [
8
- "interfaces"
9
- ],
10
- "$defs": {
11
- "condition-vrrp": {
12
- "description": "configure depending on vrrp status",
13
- "type": "object",
14
- "required": [
15
- "name",
16
- "type",
17
- "states"
18
- ],
19
- "additionalProperties": false,
20
- "properties": {
21
- "name": {
22
- "description": "related vrrp INSTANCE or GROUP name",
23
- "type": "string"
24
- },
25
- "type": {
26
- "description": "failover type",
27
- "type": "string",
28
- "enum": [
29
- "instance",
30
- "group"
31
- ]
32
- },
33
- "states": {
34
- "description": "states at which the interface should be configured",
35
- "type": "array",
36
- "items": [
37
- {
38
- "type": "string",
39
- "enum": [
40
- "unknown",
41
- "fault",
42
- "backup",
43
- "master"
44
- ]
45
- }
46
- ]
47
- }
48
- }
49
- },
50
- "ignore-fdb": {
51
- "description": "fdb entries matching this list of regex will be ignored",
52
- "type": "array",
53
- "items": {
54
- "description": "regex to match link-local addresses",
55
- "examples": [
56
- "^33:33:",
57
- "^01:00:5e:"
58
- ],
59
- "type": "string"
60
- }
61
- },
62
- "ignore-ipaddr": {
63
- "description": "list of ip address prefixes to be ignored",
64
- "type": "array",
65
- "items": {
66
- "description": "ip address with prefix length",
67
- "type": "string",
68
- "examples": [
69
- "fe80::/10"
70
- ]
71
- }
72
- },
73
- "ignore-ifname": {
74
- "description": "interface names matching this list of regex will be ignored",
75
- "type": "array",
76
- "items": {
77
- "description": "regex to match interface name",
78
- "examples": [
79
- "^br-[\\da-f]{12}",
80
- "^docker\\d+",
81
- "^lo$",
82
- "^ppp\\d+$",
83
- "^veth",
84
- "^virbr\\d+",
85
- "^vrrp\\d*\\.\\d+$"
86
- ],
87
- "type": "string"
88
- }
89
- },
90
- "ignore-routes": {
91
- "description": "filter routes by options",
92
- "type": "array",
93
- "items": {
94
- "type": "object",
95
- "additionalProperties": false,
96
- "properties": {
97
- "dev": {
98
- "type": [
99
- "integer",
100
- "string"
101
- ]
102
- },
103
- "proto": {
104
- "type": [
105
- "integer",
106
- "string"
107
- ],
108
- "default": "boot"
109
- },
110
- "realm": {
111
- "type": [
112
- "integer",
113
- "string"
114
- ]
115
- },
116
- "scope": {
117
- "type": [
118
- "integer",
119
- "string"
120
- ]
121
- },
122
- "table": {
123
- "type": [
124
- "integer",
125
- "string"
126
- ],
127
- "default": "main"
128
- },
129
- "to": {
130
- "type": "string"
131
- },
132
- "via": {
133
- "type": "string"
134
- }
135
- }
136
- }
137
- },
138
- "ignore-rules": {
139
- "description": "filter rules by options",
140
- "type": "array",
141
- "items": {
142
- "type": "object",
143
- "additionalProperties": false,
144
- "properties": {
145
- "action": {
146
- "type": [
147
- "integer",
148
- "string"
149
- ],
150
- "description": "the type of this rule",
151
- "enum": [
152
- "to_tbl",
153
- "blackhole",
154
- "unreachable",
155
- "prohibit"
156
- ],
157
- "default": "to_tbl"
158
- },
159
- "table": {
160
- "type": [
161
- "integer",
162
- "string"
163
- ],
164
- "minimum": 0,
165
- "maximum": 255
166
- },
167
- "priority": {
168
- "type": "integer",
169
- "description": "the priority of this rule",
170
- "minimum": 0,
171
- "maximum": 4294967295
172
- },
173
- "from": {
174
- "type": "string",
175
- "description": "select the source prefix to match"
176
- },
177
- "to": {
178
- "type": "string",
179
- "description": "select the destination prefix to match"
180
- },
181
- "iif": {
182
- "type": "string",
183
- "description": "select the incoming device to match"
184
- },
185
- "oif": {
186
- "type": "string",
187
- "description": "select the outgoing device to match"
188
- },
189
- "proto": {
190
- "type": [
191
- "integer",
192
- "string"
193
- ],
194
- "default": "unspec",
195
- "description": "routing protocol number (`/etc/iproute2/rt_protos`)"
196
- },
197
- "fwmark": {
198
- "type": "integer",
199
- "description": "select the *fwmark* value to match"
200
- },
201
- "ipproto": {
202
- "type": [
203
- "integer",
204
- "string"
205
- ],
206
- "description": "select the ip protocol to match"
207
- }
208
- }
209
- }
210
- },
211
- "iface-name": {
212
- "type": "string",
213
- "pattern": "^[^/ ]{1,15}$"
214
- },
215
- "iface-ethtool": {
216
- "description": "network driver and hardware settings via [ethtool(8)](https://man7.org/linux/man-pages/man8/ethtool.8.html)",
217
- "type": "object",
218
- "additionalProperties": false,
219
- "properties": {
220
- "pause": {
221
- "type": "object",
222
- "additionalProperties": false,
223
- "description": "pause parameters",
224
- "properties": {
225
- "autoneg": {
226
- "description": "enable pause autonegotiation",
227
- "$ref": "#/$defs/iface-ethtool_onoff"
228
- },
229
- "rx": {
230
- "description": "enable Rx pause",
231
- "$ref": "#/$defs/iface-ethtool_onoff"
232
- },
233
- "tx": {
234
- "description": "enable Tx pause",
235
- "$ref": "#/$defs/iface-ethtool_onoff"
236
- }
237
- }
238
- },
239
- "coalesce": {
240
- "type": "object",
241
- "additionalProperties": false,
242
- "description": "interrupt coalescing",
243
- "properties": {
244
- "adaptive-rx": {
245
- "$ref": "#/$defs/iface-ethtool_onoff"
246
- },
247
- "adaptive-tx": {
248
- "$ref": "#/$defs/iface-ethtool_onoff"
249
- },
250
- "rx-usecs": {
251
- "type": "integer"
252
- },
253
- "rx-frames": {
254
- "type": "integer"
255
- },
256
- "rx-usecs-irq": {
257
- "type": "integer"
258
- },
259
- "rx-frames-irq": {
260
- "type": "integer"
261
- },
262
- "tx-usecs": {
263
- "type": "integer"
264
- },
265
- "tx-frames": {
266
- "type": "integer"
267
- },
268
- "tx-usecs-irq": {
269
- "type": "integer"
270
- },
271
- "tx-frames-irq": {
272
- "type": "integer"
273
- },
274
- "stats-block-usecs": {
275
- "type": "integer"
276
- },
277
- "pkt-rate-low": {
278
- "type": "integer"
279
- },
280
- "rx-usecs-low": {
281
- "type": "integer"
282
- },
283
- "rx-frames-low": {
284
- "type": "integer"
285
- },
286
- "tx-usecs-low": {
287
- "type": "integer"
288
- },
289
- "tx-frames-low": {
290
- "type": "integer"
291
- },
292
- "pkt-rate-high": {
293
- "type": "integer"
294
- },
295
- "rx-usecs-high": {
296
- "type": "integer"
297
- },
298
- "rx-frames-high": {
299
- "type": "integer"
300
- },
301
- "tx-usecs-high": {
302
- "type": "integer"
303
- },
304
- "tx-frames-high": {
305
- "type": "integer"
306
- },
307
- "sample-interval": {
308
- "type": "integer"
309
- }
310
- }
311
- },
312
- "ring": {
313
- "type": "object",
314
- "additionalProperties": false,
315
- "description": "rx/tx ring parameters",
316
- "properties": {
317
- "rx": {
318
- "description": "number of ring entries for the Rx ring",
319
- "type": "integer"
320
- },
321
- "rx-mmini": {
322
- "description": "number of ring entries for the Rx Mini ring",
323
- "type": "integer"
324
- },
325
- "rx-jumbo": {
326
- "description": "number of ring entries for the Rx Jumbo ring",
327
- "type": "integer"
328
- },
329
- "tx": {
330
- "description": "number of ring entries for the Tx ring",
331
- "type": "integer"
332
- }
333
- }
334
- },
335
- "features": {
336
- "type": "object",
337
- "additionalProperties": false,
338
- "description": "offload parameters and other features",
339
- "properties": {
340
- "rx": {
341
- "description": "enable RX checksumming",
342
- "$ref": "#/$defs/iface-ethtool_onoff"
343
- },
344
- "tx": {
345
- "description": "enable TX checksumming",
346
- "$ref": "#/$defs/iface-ethtool_onoff"
347
- },
348
- "sg": {
349
- "description": "enable scatter-gather",
350
- "$ref": "#/$defs/iface-ethtool_onoff"
351
- },
352
- "tso": {
353
- "description": "enable TCP segmentation offload",
354
- "$ref": "#/$defs/iface-ethtool_onoff"
355
- },
356
- "ufo": {
357
- "description": "enable UDP fragmentation offload",
358
- "$ref": "#/$defs/iface-ethtool_onoff"
359
- },
360
- "gso": {
361
- "description": "enable generic segmentation offload",
362
- "$ref": "#/$defs/iface-ethtool_onoff"
363
- },
364
- "gro": {
365
- "description": "enable generic receive offload",
366
- "$ref": "#/$defs/iface-ethtool_onoff"
367
- },
368
- "lro": {
369
- "description": "enable large receive offload",
370
- "$ref": "#/$defs/iface-ethtool_onoff"
371
- },
372
- "rxvlan": {
373
- "description": "enable RX VLAN acceleration",
374
- "$ref": "#/$defs/iface-ethtool_onoff"
375
- },
376
- "txvlan": {
377
- "description": "enable TX VLAN acceleration",
378
- "$ref": "#/$defs/iface-ethtool_onoff"
379
- },
380
- "ntuple": {
381
- "description": "enable Rx ntuple filters and actions",
382
- "$ref": "#/$defs/iface-ethtool_onoff"
383
- },
384
- "rxhash": {
385
- "description": "enable receive hashing offload",
386
- "$ref": "#/$defs/iface-ethtool_onoff"
387
- }
388
- }
389
- },
390
- "change": {
391
- "type": "object",
392
- "additionalProperties": false,
393
- "description": "device settings",
394
- "properties": {
395
- "speed": {
396
- "description": "speed in Mbps",
397
- "type": "integer"
398
- },
399
- "duplex": {
400
- "description": "full or half duplex mode",
401
- "type": "string",
402
- "enum": [
403
- "half",
404
- "full"
405
- ]
406
- },
407
- "port": {
408
- "description": "device port selection",
409
- "type": "string",
410
- "enum": [
411
- "tp",
412
- "aui",
413
- "bnc",
414
- "mii"
415
- ]
416
- },
417
- "mdix": {
418
- "description": "MDI-X mode for port",
419
- "type": [
420
- "boolean",
421
- "string"
422
- ],
423
- "enum": [
424
- "auto",
425
- "on",
426
- "off",
427
- true,
428
- false
429
- ]
430
- },
431
- "autoneg": {
432
- "description": "enable autonegotation",
433
- "$ref": "#/$defs/iface-ethtool_onoff"
434
- },
435
- "advertise": {
436
- "description": "speed and duplex advertised by autonegotation",
437
- "type": "integer"
438
- },
439
- "phyad": {
440
- "description": "PHY address",
441
- "type": "integer"
442
- },
443
- "xcvr": {
444
- "description": "transceiver type",
445
- "type": "string",
446
- "enum": [
447
- "internal",
448
- "external"
449
- ]
450
- },
451
- "wol": {
452
- "description": "Wake-on-LAN options",
453
- "type": "string",
454
- "pattern": "^[pumbagsfd]+$"
455
- },
456
- "sopass": {
457
- "description": "SecureOn™ password",
458
- "type": "string",
459
- "pattern": "^[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}$"
460
- },
461
- "msglvl": {
462
- "description": "driver message flags",
463
- "oneOf": [
464
- {
465
- "description": "driver message flags by number",
466
- "type": "integer"
467
- },
468
- {
469
- "description": "driver message flags by name",
470
- "type": "array",
471
- "items": [
472
- {
473
- "description": "flag name",
474
- "type": "string",
475
- "enum": [
476
- "drv",
477
- "probe",
478
- "link",
479
- "timer",
480
- "ifdown",
481
- "ifup",
482
- "rx_err",
483
- "tx_err",
484
- "tx_queued",
485
- "intr",
486
- "tx_done",
487
- "rx_status",
488
- "pktdata",
489
- "hw",
490
- "wol"
491
- ]
492
- },
493
- {
494
- "description": "enable flag",
495
- "$ref": "#/$defs/iface-ethtool_onoff"
496
- }
497
- ]
498
- }
499
- ]
500
- }
501
- }
502
- },
503
- "channels": {
504
- "type": "object",
505
- "additionalProperties": false,
506
- "description": "number of channels",
507
- "properties": {
508
- "rx": {
509
- "description": "number of channels with only receive queues",
510
- "type": "integer"
511
- },
512
- "tx": {
513
- "description": "number of channels with only transmit queues",
514
- "type": "integer"
515
- },
516
- "other": {
517
- "description": "number of channels used only for other purposes",
518
- "type": "integer"
519
- },
520
- "combined": {
521
- "description": "number of multi-purpose channels",
522
- "type": "integer"
523
- }
524
- }
525
- },
526
- "eee": {
527
- "type": "object",
528
- "additionalProperties": false,
529
- "description": "Energy-Efficient Ethernet (according to the IEEE 802.3az specifications)",
530
- "properties": {
531
- "eee": {
532
- "description": "enable EEE support",
533
- "$ref": "#/$defs/iface-ethtool_onoff"
534
- },
535
- "tx-lpi": {
536
- "description": "assert Tx LPI",
537
- "$ref": "#/$defs/iface-ethtool_onoff"
538
- },
539
- "advertise": {
540
- "description": "sets the speed for which EEE should be enabled (see also `change.advertise`)",
541
- "type": "integer"
542
- },
543
- "tx-timer": {
544
- "description": "amount of idle time prior asserting Tx LPI (in microseconds)",
545
- "type": "integer"
546
- }
547
- }
548
- },
549
- "phy-tunable": {
550
- "type": "object",
551
- "additionalProperties": false,
552
- "description": "PHY tunable parameters",
553
- "properties": {
554
- "downshift": {
555
- "description": "enable downshift",
556
- "oneOf": [
557
- {
558
- "description": "enable downshift",
559
- "$ref": "#/$defs/iface-ethtool_onoff"
560
- },
561
- {
562
- "type": "array",
563
- "minItems": 3,
564
- "maxItems": 3,
565
- "items": [
566
- {
567
- "description": "enable downshift",
568
- "$ref": "#/$defs/iface-ethtool_onoff"
569
- },
570
- {
571
- "description": "*REQUIRED*",
572
- "type": "string",
573
- "enum": [
574
- "count"
575
- ]
576
- },
577
- {
578
- "description": "PHY downshift re-tries count",
579
- "type": "integer"
580
- }
581
- ]
582
- }
583
- ]
584
- },
585
- "fast-link-down": {
586
- "description": "enable Fast Link Down",
587
- "oneOf": [
588
- {
589
- "description": "enable Fast Link Down",
590
- "$ref": "#/$defs/iface-ethtool_onoff"
591
- },
592
- {
593
- "type": "array",
594
- "minItems": 3,
595
- "maxItems": 3,
596
- "items": [
597
- {
598
- "description": "enable Fast Link Down",
599
- "$ref": "#/$defs/iface-ethtool_onoff"
600
- },
601
- {
602
- "description": "*REQUIRED*",
603
- "type": "string",
604
- "enum": [
605
- "msec"
606
- ]
607
- },
608
- {
609
- "description": "period after which the link is reported as down",
610
- "type": "integer"
611
- }
612
- ]
613
- }
614
- ]
615
- },
616
- "energy-detect-power-down": {
617
- "description": "enable Energy Detect Power Down (EDPD)",
618
- "oneOf": [
619
- {
620
- "description": "enable EDPD",
621
- "$ref": "#/$defs/iface-ethtool_onoff"
622
- },
623
- {
624
- "type": "array",
625
- "minItems": 3,
626
- "maxItems": 3,
627
- "items": [
628
- {
629
- "description": "enable EDPD",
630
- "$ref": "#/$defs/iface-ethtool_onoff"
631
- },
632
- {
633
- "description": "*REQUIRED*",
634
- "type": "string",
635
- "enum": [
636
- "msec"
637
- ]
638
- },
639
- {
640
- "description": "wake-up interval for Tx pulses",
641
- "type": "integer"
642
- }
643
- ]
644
- }
645
- ]
646
- }
647
- }
648
- },
649
- "priv-flags": {
650
- "type": "object",
651
- "description": "private flags"
652
- },
653
- "fec": {
654
- "type": "object",
655
- "additionalProperties": false,
656
- "description": "Forward Error Correction",
657
- "properties": {
658
- "encoding": {
659
- "description": "FEC encoding",
660
- "type": [
661
- "string",
662
- "array"
663
- ],
664
- "enum": [
665
- "auto",
666
- "off",
667
- "RS",
668
- "BaseR",
669
- "LLRS"
670
- ],
671
- "items": {
672
- "type": "string",
673
- "enum": [
674
- "auto",
675
- "RS",
676
- "BaseR",
677
- "LLRS"
678
- ]
679
- }
680
- }
681
- }
682
- }
683
- }
684
- },
685
- "iface-link_address": {
686
- "type": "string",
687
- "description": "link mac address (xx:xx:xx:xx:xx:xx)",
688
- "pattern": "^([a-f0-9]{2}:){5}[a-f0-9]{2}$"
689
- },
690
- "iface-link_bind-netns": {
691
- "type": [
692
- "string",
693
- "null"
694
- ],
695
- "description": "specifies the netns name or null where the tunnel or underlay should be bind, if not set the binding will happen in the netns namespace of the link"
696
- },
697
- "iface-link_group": {
698
- "type": [
699
- "integer",
700
- "string"
701
- ],
702
- "description": "specifies a device group name or index"
703
- },
704
- "iface-link_link": {
705
- "type": [
706
- "integer",
707
- "string"
708
- ],
709
- "description": "specifies the base link name or index"
710
- },
711
- "iface-link_link-netns": {
712
- "type": [
713
- "string",
714
- "null"
715
- ],
716
- "description": "specifies the base link's netns name or null if the link isn't in a netns namespace"
717
- },
718
- "iface-link_master": {
719
- "type": [
720
- "integer",
721
- "string",
722
- "null"
723
- ],
724
- "description": "specifies a master device name or index, use *null* to remove the master"
725
- },
726
- "iface-link_master-netns": {
727
- "type": [
728
- "string",
729
- "null"
730
- ],
731
- "description": "specifies the master's netns name or null if the master isn't in a netns namespace"
732
- },
733
- "iface-link_mtu": {
734
- "type": "integer",
735
- "description": "change the mtu of the device",
736
- "minimum": 68,
737
- "maximum": 65536
738
- },
739
- "iface-link_state": {
740
- "type": "string",
741
- "description": "set device state",
742
- "enum": [
743
- "up",
744
- "down"
745
- ]
746
- },
747
- "iface-link_txqlen": {
748
- "type": "integer",
749
- "description": "the transmit queue length of the device"
750
- },
751
- "iface-link_ifalias": {
752
- "type": "string",
753
- "description": "symbolic name for easy reference"
754
- },
755
- "iface-link_tun-remote4": {
756
- "type": "string",
757
- "description": "remote IPv4 address of the tunnel",
758
- "format": "ipv4"
759
- },
760
- "iface-link_tun-local4": {
761
- "type": "string",
762
- "description": "local IPv4 address of the tunnel",
763
- "format": "ipv4"
764
- },
765
- "iface-link_tun-remote6": {
766
- "type": "string",
767
- "description": "remote IPv4 address of the tunnel",
768
- "format": "ipv6"
769
- },
770
- "iface-link_tun-local6": {
771
- "type": "string",
772
- "description": "local IPv4 address of the tunnel",
773
- "format": "ipv6"
774
- },
775
- "iface-link_tun-dev": {
776
- "$ref": "#/$defs/iface-link_link",
777
- "description": "interface to use for tunnel endpoint communication"
778
- },
779
- "iface-sysctl-ipv4": {
780
- "type": "object",
781
- "description": "settings in `/proc/sys/net/ipv4/<interface>/conf/`",
782
- "properties": {
783
- "accept_local": {
784
- "type": "integer"
785
- },
786
- "accept_redirects": {
787
- "type": "integer"
788
- },
789
- "accept_source_route": {
790
- "type": "integer"
791
- },
792
- "arp_accept": {
793
- "type": "integer"
794
- },
795
- "arp_announce": {
796
- "type": "integer"
797
- },
798
- "arp_filter": {
799
- "type": "integer"
800
- },
801
- "arp_ignore": {
802
- "type": "integer"
803
- },
804
- "arp_notify": {
805
- "type": "integer"
806
- },
807
- "bc_forwarding": {
808
- "type": "integer"
809
- },
810
- "bootp_relay": {
811
- "type": "integer"
812
- },
813
- "disable_policy": {
814
- "type": "integer"
815
- },
816
- "disable_xfrm": {
817
- "type": "integer"
818
- },
819
- "drop_gratuitous_arp": {
820
- "type": "integer"
821
- },
822
- "drop_unicast_in_l2_multicast": {
823
- "type": "integer"
824
- },
825
- "force_igmp_version": {
826
- "type": "integer"
827
- },
828
- "forwarding": {
829
- "type": "integer"
830
- },
831
- "igmpv2_unsolicited_report_interval": {
832
- "type": "integer"
833
- },
834
- "igmpv3_unsolicited_report_interval": {
835
- "type": "integer"
836
- },
837
- "ignore_routes_with_linkdown": {
838
- "type": "integer"
839
- },
840
- "log_martians": {
841
- "type": "integer"
842
- },
843
- "mc_forwarding": {
844
- "type": "integer"
845
- },
846
- "medium_id": {
847
- "type": "integer"
848
- },
849
- "promote_secondaries": {
850
- "type": "integer"
851
- },
852
- "proxy_arp": {
853
- "type": "integer"
854
- },
855
- "proxy_arp_pvlan": {
856
- "type": "integer"
857
- },
858
- "route_localnet": {
859
- "type": "integer"
860
- },
861
- "rp_filter": {
862
- "type": "integer"
863
- },
864
- "secure_redirects": {
865
- "type": "integer"
866
- },
867
- "send_redirects": {
868
- "type": "integer"
869
- },
870
- "shared_media": {
871
- "type": "integer"
872
- },
873
- "src_valid_mark": {
874
- "type": "integer"
875
- },
876
- "tag": {
877
- "type": "integer"
878
- }
879
- }
880
- },
881
- "iface-sysctl-ipv6": {
882
- "type": "object",
883
- "description": "settings in `/proc/sys/net/ipv6/<interface>/conf/`",
884
- "additionalProperties": false,
885
- "properties": {
886
- "accept_dad": {
887
- "type": "integer"
888
- },
889
- "accept_ra": {
890
- "type": "integer"
891
- },
892
- "accept_ra_defrtr": {
893
- "type": "integer"
894
- },
895
- "accept_ra_from_local": {
896
- "type": "integer"
897
- },
898
- "accept_ra_min_hop_limit": {
899
- "type": "integer"
900
- },
901
- "accept_ra_mtu": {
902
- "type": "integer"
903
- },
904
- "accept_ra_pinfo": {
905
- "type": "integer"
906
- },
907
- "accept_ra_rt_info_max_plen": {
908
- "type": "integer"
909
- },
910
- "accept_ra_rt_info_min_plen": {
911
- "type": "integer"
912
- },
913
- "accept_ra_rtr_pref": {
914
- "type": "integer"
915
- },
916
- "accept_redirects": {
917
- "type": "integer"
918
- },
919
- "accept_source_route": {
920
- "type": "integer"
921
- },
922
- "addr_gen_mode": {
923
- "type": "integer"
924
- },
925
- "autoconf": {
926
- "type": "integer"
927
- },
928
- "dad_transmits": {
929
- "type": "integer"
930
- },
931
- "disable_ipv6": {
932
- "type": "integer"
933
- },
934
- "disable_policy": {
935
- "type": "integer"
936
- },
937
- "drop_unicast_in_l2_multicast": {
938
- "type": "integer"
939
- },
940
- "drop_unsolicited_na": {
941
- "type": "integer"
942
- },
943
- "enhanced_dad": {
944
- "type": "integer"
945
- },
946
- "force_mld_version": {
947
- "type": "integer"
948
- },
949
- "force_tllao": {
950
- "type": "integer"
951
- },
952
- "forwarding": {
953
- "type": "integer"
954
- },
955
- "hop_limit": {
956
- "type": "integer"
957
- },
958
- "ignore_routes_with_linkdown": {
959
- "type": "integer"
960
- },
961
- "keep_addr_on_down": {
962
- "type": "integer"
963
- },
964
- "max_addresses": {
965
- "type": "integer"
966
- },
967
- "max_desync_factor": {
968
- "type": "integer"
969
- },
970
- "mc_forwarding": {
971
- "type": "integer"
972
- },
973
- "mldv1_unsolicited_report_interval": {
974
- "type": "integer"
975
- },
976
- "mldv2_unsolicited_report_interval": {
977
- "type": "integer"
978
- },
979
- "mtu": {
980
- "type": "integer"
981
- },
982
- "ndisc_notify": {
983
- "type": "integer"
984
- },
985
- "ndisc_tclass": {
986
- "type": "integer"
987
- },
988
- "optimistic_dad": {
989
- "type": "integer"
990
- },
991
- "proxy_ndp": {
992
- "type": "integer"
993
- },
994
- "regen_max_retry": {
995
- "type": "integer"
996
- },
997
- "router_probe_interval": {
998
- "type": "integer"
999
- },
1000
- "router_solicitation_delay": {
1001
- "type": "integer"
1002
- },
1003
- "router_solicitation_interval": {
1004
- "type": "integer"
1005
- },
1006
- "router_solicitation_max_interval": {
1007
- "type": "integer"
1008
- },
1009
- "router_solicitations": {
1010
- "type": "integer"
1011
- },
1012
- "seg6_enabled": {
1013
- "type": "integer"
1014
- },
1015
- "seg6_require_hmac": {
1016
- "type": "integer"
1017
- },
1018
- "stable_secret": {
1019
- "type": "string",
1020
- "format": "ipv6"
1021
- },
1022
- "suppress_frag_ndisc": {
1023
- "type": "integer"
1024
- },
1025
- "temp_prefered_lft": {
1026
- "type": "integer"
1027
- },
1028
- "temp_valid_lft": {
1029
- "type": "integer"
1030
- },
1031
- "use_oif_addrs_only": {
1032
- "type": "integer"
1033
- },
1034
- "use_optimistic": {
1035
- "type": "integer"
1036
- },
1037
- "use_tempaddr": {
1038
- "type": "integer"
1039
- }
1040
- }
1041
- },
1042
- "iface-sysctl-mpls": {
1043
- "description": "MPLS [sysctl settings](https://www.kernel.org/doc/Documentation/networking/mpls-sysctl.txt) in `/proc/sys/net/mpls/`",
1044
- "type": "object",
1045
- "additionalProperties": false,
1046
- "properties": {
1047
- "platform_labels": {
1048
- "type": "integer",
1049
- "description": "number of entries in the platform label table",
1050
- "minimum": 0,
1051
- "maximum": 1048575
1052
- },
1053
- "ip_ttl_propagate": {
1054
- "type": "integer",
1055
- "description": "control whether TTL is propagated",
1056
- "minimum": 0,
1057
- "maximum": 1
1058
- },
1059
- "default_ttl": {
1060
- "type": "integer",
1061
- "description": "default TTL value to use for MPLS packets",
1062
- "minimum": 1,
1063
- "maximum": 255
1064
- }
1065
- }
1066
- },
1067
- "iface-sysctl-mpls-link": {
1068
- "description": "MPLS [interface sysctl settings](https://www.kernel.org/doc/Documentation/networking/mpls-sysctl.txt) in `/proc/sys/net/mpls/<interface>/`",
1069
- "type": "object",
1070
- "additionalProperties": false,
1071
- "properties": {
1072
- "input": {
1073
- "type": "integer",
1074
- "description": "control whether packets can be input on this interface",
1075
- "minimum": 0,
1076
- "maximum": 1
1077
- }
1078
- }
1079
- },
1080
- "iface-ethtool_onoff": {
1081
- "type": [
1082
- "boolean",
1083
- "string"
1084
- ],
1085
- "enum": [
1086
- "on",
1087
- "off",
1088
- true,
1089
- false
1090
- ]
1091
- },
1092
- "iface-tc_qid": {
1093
- "type": "string",
1094
- "description": "qdisc id",
1095
- "format": "^(root|[0-9a-f]+:[0-9a-f]*)$"
1096
- },
1097
- "iface-tc_protocol": {
1098
- "type": [
1099
- "string",
1100
- "integer"
1101
- ],
1102
- "description": "protocol selector",
1103
- "minLength": 2,
1104
- "minimum": 0,
1105
- "maximum": 255,
1106
- "default": 3
1107
- },
1108
- "iface-tc_prio": {
1109
- "type": "integer",
1110
- "description": "priority",
1111
- "minimum": 0,
1112
- "maximum": 65535
1113
- },
1114
- "iface-tc_qdisc": {
1115
- "description": "traffic control queueing discipline",
1116
- "type": "object",
1117
- "required": [
1118
- "handle"
1119
- ],
1120
- "properties": {
1121
- "handle": {
1122
- "description": "unique id",
1123
- "$ref": "#/$defs/iface-tc_qid"
1124
- }
1125
- },
1126
- "oneOf": [
1127
- {
1128
- "description": "generic classless qdisc",
1129
- "required": [
1130
- "kind"
1131
- ],
1132
- "properties": {
1133
- "kind": {
1134
- "type": "string",
1135
- "description": "qdisk type",
1136
- "enum": [
1137
- "gred",
1138
- "hhf",
1139
- "mqprio",
1140
- "multiq",
1141
- "netem",
1142
- "pfifo_fast",
1143
- "pie",
1144
- "red",
1145
- "sfb",
1146
- "sfq",
1147
- "tbf"
1148
- ]
1149
- }
1150
- }
1151
- },
1152
- {
1153
- "$ref": "#/$defs/tc-cake"
1154
- },
1155
- {
1156
- "description": "[choke](https://man7.org/linux/man-pages/man8/tc-choke.8.html) - choose and keep scheduler",
1157
- "required": [
1158
- "kind",
1159
- "limit",
1160
- "min",
1161
- "max",
1162
- "avpkt",
1163
- "burst",
1164
- "probability"
1165
- ],
1166
- "properties": {
1167
- "kind": {
1168
- "const": "choke",
1169
- "description": "qdisk type"
1170
- }
1171
- }
1172
- },
1173
- {
1174
- "description": "[CoDel](https://man7.org/linux/man-pages/man8/tc-codel.8.html) - Controlled-Delay Active Queue Management algorithm",
1175
- "required": [
1176
- "kind"
1177
- ],
1178
- "properties": {
1179
- "kind": {
1180
- "const": "codel",
1181
- "description": "qdisk type"
1182
- }
1183
- }
1184
- },
1185
- {
1186
- "description": "[bfifo](https://man7.org/linux/man-pages/man8/tc-bfifo.8.html) - Byte limited First In, First Out queue; [pfifo](https://man7.org/linux/man-pages/man8/tc-pfifo.8.html) - Packet limited First In, First Out queue",
1187
- "required": [
1188
- "kind"
1189
- ],
1190
- "additionalProperties": false,
1191
- "properties": {
1192
- "kind": {
1193
- "type": "string",
1194
- "description": "qdisk type",
1195
- "enum": [
1196
- "bfifo",
1197
- "pfifo"
1198
- ]
1199
- },
1200
- "limit": {
1201
- "type": "number",
1202
- "description": "queue size in bytes or packets"
1203
- }
1204
- }
1205
- },
1206
- {
1207
- "description": "[fq](https://man7.org/linux/man-pages/man8/tc-fq.8.html) - Fair Queue traffic policing",
1208
- "required": [
1209
- "kind"
1210
- ],
1211
- "properties": {
1212
- "kind": {
1213
- "const": "fq",
1214
- "description": "qdisk type"
1215
- },
1216
- "limit": {
1217
- "type": "number",
1218
- "description": "hard limit on the real queue size (number of packets)"
1219
- },
1220
- "flow_limit": {
1221
- "type": "number",
1222
- "description": "hard limit on the max number of packets per flow"
1223
- }
1224
- }
1225
- },
1226
- {
1227
- "description": "[fq_codel](https://man7.org/linux/man-pages/man8/tc-fq_codel.8.html) - Fair Queuing (FQ) with Controlled Delay (CoDel)",
1228
- "required": [
1229
- "kind"
1230
- ],
1231
- "properties": {
1232
- "kind": {
1233
- "const": "fq_codel",
1234
- "description": "qdisk type"
1235
- },
1236
- "limit": {
1237
- "type": "number",
1238
- "description": "hard limit on the real queue size (number of packets)"
1239
- },
1240
- "flows": {
1241
- "type": "number",
1242
- "description": "number of flows"
1243
- }
1244
- }
1245
- },
1246
- {
1247
- "description": "generic classful qdisc",
1248
- "required": [
1249
- "kind"
1250
- ],
1251
- "properties": {
1252
- "kind": {
1253
- "type": "string",
1254
- "description": "qdisk type",
1255
- "enum": [
1256
- "atm",
1257
- "cbq",
1258
- "drr",
1259
- "dsmark",
1260
- "hfsc",
1261
- "htb",
1262
- "prio",
1263
- "qfq"
1264
- ]
1265
- }
1266
- }
1267
- },
1268
- {
1269
- "description": "classful multiqueue dummy scheduler",
1270
- "required": [
1271
- "kind",
1272
- "children"
1273
- ],
1274
- "properties": {
1275
- "kind": {
1276
- "const": "mq",
1277
- "description": "qdisk type"
1278
- },
1279
- "children": {
1280
- "description": "list child qdiscs for each device TX queue",
1281
- "type": "array",
1282
- "items": {
1283
- "description": "child qdiscs for the nth device TX queue",
1284
- "$ref": "#/$defs/iface-tc_qdisc"
1285
- }
1286
- }
1287
- }
1288
- }
1289
- ]
1290
- },
1291
- "tc-cake": {
1292
- "description": "[cake](https://man7.org/linux/man-pages/man8/tc-cake.8.html) - common applications kept enhanced (CAKE)",
1293
- "required": [
1294
- "kind"
1295
- ],
1296
- "properties": {
1297
- "kind": {
1298
- "const": "cake",
1299
- "description": "qdisk type"
1300
- },
1301
- "handle": {
1302
- "description": "unique id",
1303
- "$ref": "#/$defs/iface-tc_qid"
1304
- },
1305
- "ack_filter": {
1306
- "description": "ACKnowledge filter",
1307
- "type": [
1308
- "boolean",
1309
- "string"
1310
- ],
1311
- "enum": [
1312
- "aggressive",
1313
- true,
1314
- false
1315
- ]
1316
- },
1317
- "atm_mode": {
1318
- "description": "ATM mode",
1319
- "type": [
1320
- "boolean",
1321
- "string"
1322
- ],
1323
- "enum": [
1324
- "ptm",
1325
- true,
1326
- false
1327
- ]
1328
- },
1329
- "autorate": {
1330
- "type": "boolean",
1331
- "description": "autorate-ingress"
1332
- },
1333
- "diffserv_mode": {
1334
- "type": "string",
1335
- "description": "diffserv mode",
1336
- "enum": [
1337
- "diffserv3",
1338
- "diffserv4",
1339
- "diffserv8",
1340
- "besteffort",
1341
- "precedence"
1342
- ]
1343
- },
1344
- "ingress": {
1345
- "description": "ingress",
1346
- "type": "boolean"
1347
- },
1348
- "overhead": {
1349
- "description": "overhead",
1350
- "type": "integer",
1351
- "minimum": -64,
1352
- "maximum": 256
1353
- },
1354
- "flow_mode": {
1355
- "description": "flow mode",
1356
- "type": "string",
1357
- "enum": [
1358
- "flowblind",
1359
- "srchost",
1360
- "dsthost",
1361
- "hosts",
1362
- "flows",
1363
- "dual-srchost",
1364
- "dual-dsthost",
1365
- "triple-isolated"
1366
- ]
1367
- },
1368
- "fwmark": {
1369
- "description": "fwmark",
1370
- "type": "integer",
1371
- "minimum": 0
1372
- },
1373
- "memlimit": {
1374
- "description": "memlimit",
1375
- "type": "integer",
1376
- "minimum": 0
1377
- },
1378
- "mpu": {
1379
- "description": "MPU",
1380
- "type": "integer",
1381
- "minimum": 0,
1382
- "maximum": 256
1383
- },
1384
- "nat": {
1385
- "description": "NAT",
1386
- "type": "boolean"
1387
- },
1388
- "raw": {
1389
- "description": "RAW",
1390
- "type": "boolean"
1391
- },
1392
- "rtt": {
1393
- "oneOf": [
1394
- {
1395
- "type": "string",
1396
- "description": "well-known RTT",
1397
- "enum": [
1398
- "datacentre",
1399
- "lan",
1400
- "metro",
1401
- "regional",
1402
- "internet",
1403
- "oceanic",
1404
- "satellite",
1405
- "interplanetary"
1406
- ]
1407
- },
1408
- {
1409
- "type": "integer",
1410
- "description": "manually specify an RTT (us)",
1411
- "minimum": 1
1412
- }
1413
- ]
1414
- },
1415
- "split_gso": {
1416
- "description": "split GSO",
1417
- "type": "boolean"
1418
- },
1419
- "target": {
1420
- "type": "integer",
1421
- "description": "target",
1422
- "minimum": 1
1423
- },
1424
- "wash": {
1425
- "description": "wash",
1426
- "type": "boolean"
1427
- }
1428
- }
1429
- },
1430
- "iface-tc_action": {
1431
- "description": "traffic control filter action",
1432
- "type": "array",
1433
- "items": {
1434
- "type": "object",
1435
- "required": [
1436
- "kind"
1437
- ],
1438
- "properties": {
1439
- "kind": {
1440
- "const": "mirred"
1441
- }
1442
- },
1443
- "oneOf": [
1444
- {
1445
- "description": "[mirred](https://man7.org/linux/man-pages/man8/tc-mirred.8.html) - mirror/redirect action",
1446
- "additionalProperties": false,
1447
- "required": [
1448
- "direction",
1449
- "action",
1450
- "dev"
1451
- ],
1452
- "properties": {
1453
- "kind": {
1454
- "const": "mirred"
1455
- },
1456
- "direction": {
1457
- "description": "packet direction",
1458
- "type": "string",
1459
- "enum": [
1460
- "ingress",
1461
- "egress"
1462
- ]
1463
- },
1464
- "action": {
1465
- "description": "copy (`mirror`) or move (`redirect`) packets to the destination interface",
1466
- "type": "string",
1467
- "enum": [
1468
- "mirror",
1469
- "redirect"
1470
- ]
1471
- },
1472
- "dev": {
1473
- "description": "destination interface where packets are redirected or mirrored to",
1474
- "$ref": "#/$defs/iface-link_link"
1475
- },
1476
- "index": {
1477
- "description": "unique action ID",
1478
- "type": "integer",
1479
- "minimum": 0,
1480
- "maximum": 4294967295
1481
- }
1482
- }
1483
- }
1484
- ]
1485
- }
1486
- },
1487
- "xdp_mode": {
1488
- "mode": {
1489
- "oneOf": [
1490
- {
1491
- "description": "force attach mode of the XDP program (`auto`: let the kernel choose, `xdp`: run inside driver, `xdpgeneric`: driver-independent before SKB allocation, `xdpoffload`: offload to SmartNIC co-processor)",
1492
- "type": "string",
1493
- "enum": [
1494
- "auto",
1495
- "xdp",
1496
- "xdpgeneric",
1497
- "xdpoffload"
1498
- ],
1499
- "default": "auto"
1500
- },
1501
- {
1502
- "description": "allowed attach modes of the XDP program (`xdp`: run inside driver, `xdpgeneric`: driver-independent before SKB allocation, `xdpoffload`: offload to SmartNIC co-processor)",
1503
- "type": "array",
1504
- "items": {
1505
- "type": "string",
1506
- "enum": [
1507
- "xdp",
1508
- "xdpgeneric",
1509
- "xdpoffload"
1510
- ]
1511
- }
1512
- }
1513
- ]
1514
- }
1515
- }
1516
- },
1517
- "additionalProperties": false,
1518
- "properties": {
1519
- "defaults": {
1520
- "description": "default settings for configured interfaces",
1521
- "type": "array",
1522
- "items": {
1523
- "description": "first matching entry will be used, settings will be overriden by explicit configured interface settings",
1524
- "type": "object",
1525
- "required": [
1526
- "match"
1527
- ],
1528
- "additionalProperties": false,
1529
- "properties": {
1530
- "match": {
1531
- "description": "apply default settings for interfaces matching any list item (OR)",
1532
- "type": "array",
1533
- "items": {
1534
- "description": "all conditions that must match (AND)",
1535
- "type": "object",
1536
- "additionalProperties": false,
1537
- "properties": {
1538
- "ifname": {
1539
- "description": "regex to match interface name",
1540
- "examples": [
1541
- "^eth\\d+$"
1542
- ],
1543
- "type": "string"
1544
- },
1545
- "kind": {
1546
- "description": "regex to match link type",
1547
- "examples": [
1548
- "^physical$",
1549
- "^(physical|vlan)$"
1550
- ],
1551
- "type": "string"
1552
- }
1553
- }
1554
- }
1555
- },
1556
- "clear_addresses": {
1557
- "description": "implicit remove all ip addresses",
1558
- "type": "boolean",
1559
- "default": false
1560
- },
1561
- "clear_fdb": {
1562
- "description": "implicit remove all permanent fdb entries",
1563
- "type": "boolean",
1564
- "default": false
1565
- },
1566
- "clear_neighbours": {
1567
- "description": "implicit remove all permanent ip neighbours",
1568
- "type": "boolean",
1569
- "default": false
1570
- },
1571
- "clear_tc": {
1572
- "description": "implicit remove all tc qdiscs",
1573
- "type": "boolean",
1574
- "default": false
1575
- },
1576
- "ethtool": {
1577
- "$ref": "#/$defs/iface-ethtool"
1578
- },
1579
- "link": {
1580
- "description": "implicit link settings for matching interfaces",
1581
- "type": "object",
1582
- "additionalProperties": false,
1583
- "properties": {
1584
- "group": {
1585
- "$ref": "#/$defs/iface-link_group"
1586
- },
1587
- "state": {
1588
- "$ref": "#/$defs/iface-link_state"
1589
- },
1590
- "master": {
1591
- "$ref": "#/$defs/iface-link_master"
1592
- },
1593
- "mtu": {
1594
- "$ref": "#/$defs/iface-link_mtu"
1595
- },
1596
- "txqlen": {
1597
- "$ref": "#/$defs/iface-link_txqlen"
1598
- },
1599
- "ifalias": {
1600
- "$ref": "#/$defs/iface-link_ifalias"
1601
- },
1602
- "link": {
1603
- "$ref": "#/$defs/iface-link_link"
1604
- },
1605
- "link_netns": {
1606
- "$ref": "#/$defs/iface-link_link-netns"
1607
- }
1608
- }
1609
- }
1610
- }
1611
- }
1612
- },
1613
- "options": {
1614
- "description": "global configuration settings",
1615
- "type": "object",
1616
- "additionalProperties": false,
1617
- "properties": {
1618
- "sysctl": {
1619
- "description": "global sysctl settings",
1620
- "type": "object",
1621
- "additionalProperties": false,
1622
- "properties": {
1623
- "all": {
1624
- "description": "overrides [per interface sysctl settings](https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt) in `/proc/sys/net/ipv*/conf/all/`",
1625
- "type": "object",
1626
- "additionalProperties": false,
1627
- "properties": {
1628
- "ipv4": {
1629
- "$ref": "#/$defs/iface-sysctl-ipv4"
1630
- },
1631
- "ipv6": {
1632
- "$ref": "#/$defs/iface-sysctl-ipv6"
1633
- }
1634
- }
1635
- },
1636
- "default": {
1637
- "description": "default [per interface sysctl settings](https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt) in `/proc/sys/net/ipv*/conf/default/`",
1638
- "type": "object",
1639
- "additionalProperties": false,
1640
- "properties": {
1641
- "ipv4": {
1642
- "$ref": "#/$defs/iface-sysctl-ipv4"
1643
- },
1644
- "ipv6": {
1645
- "$ref": "#/$defs/iface-sysctl-ipv6"
1646
- }
1647
- }
1648
- },
1649
- "mpls": {
1650
- "$ref": "#/$defs/iface-sysctl-mpls"
1651
- }
1652
- }
1653
- }
1654
- }
1655
- },
1656
- "ignore": {
1657
- "description": "ignore patterns to skip interface, ip address or routing objects",
1658
- "type": "object",
1659
- "additionalProperties": false,
1660
- "properties": {
1661
- "ipaddr_builtin": {
1662
- "$ref": "#/$defs/ignore-ipaddr"
1663
- },
1664
- "ipaddr": {
1665
- "$ref": "#/$defs/ignore-ipaddr"
1666
- },
1667
- "ipaddr_dynamic": {
1668
- "description": "ignore dynamic assigned ip addresses",
1669
- "type": "boolean",
1670
- "default": true
1671
- },
1672
- "ifname_builtin": {
1673
- "$ref": "#/$defs/ignore-ifname"
1674
- },
1675
- "ifname": {
1676
- "$ref": "#/$defs/ignore-ifname"
1677
- },
1678
- "fdb_builtin": {
1679
- "$ref": "#/$defs/ignore-fdb"
1680
- },
1681
- "fdb": {
1682
- "$ref": "#/$defs/ignore-fdb"
1683
- },
1684
- "routes_builtin": {
1685
- "$ref": "#/$defs/ignore-routes"
1686
- },
1687
- "routes": {
1688
- "$ref": "#/$defs/ignore-routes"
1689
- },
1690
- "rules_builtin": {
1691
- "$ref": "#/$defs/ignore-rules"
1692
- },
1693
- "rules": {
1694
- "$ref": "#/$defs/ignore-rules"
1695
- },
1696
- "netns": {
1697
- "description": "netns namespaces matching this list of regex will be ignored",
1698
- "type": "array",
1699
- "items": {
1700
- "description": "regex to match interface name",
1701
- "examples": [
1702
- "^tenant-\\d+"
1703
- ],
1704
- "type": "string"
1705
- }
1706
- }
1707
- }
1708
- },
1709
- "bpf": {
1710
- "description": "load and pin eBPF programs (i.e. for XDP)",
1711
- "type": "object",
1712
- "patternProperties": {
1713
- "": {
1714
- "description": "BPF program",
1715
- "type": "object",
1716
- "additionalProperties": false,
1717
- "required": [
1718
- "object",
1719
- "section"
1720
- ],
1721
- "properties": {
1722
- "object": {
1723
- "description": "BPF ELF file to load",
1724
- "type": "string"
1725
- },
1726
- "section": {
1727
- "description": "BPF program's section name",
1728
- "type": "string"
1729
- }
1730
- }
1731
- }
1732
- }
1733
- },
1734
- "cshaper": {
1735
- "description": "cshaper templates",
1736
- "type": "object",
1737
- "patternProperties": {
1738
- "": {
1739
- "description": "cshaper profile",
1740
- "type": "object",
1741
- "additionalProperties": false,
1742
- "required": [
1743
- "egress_qdisc",
1744
- "ingress_qdisc",
1745
- "ingress_ifname"
1746
- ],
1747
- "properties": {
1748
- "egress_qdisc": {
1749
- "$ref": "#/$defs/tc-cake"
1750
- },
1751
- "ingress_qdisc": {
1752
- "$ref": "#/$defs/tc-cake"
1753
- },
1754
- "ingress_ifname": {
1755
- "description": "build a ifb ifname using a regex on the ifname",
1756
- "type": "object",
1757
- "additionalProperties": false,
1758
- "required": [
1759
- "search",
1760
- "replace"
1761
- ],
1762
- "properties": {
1763
- "search": {
1764
- "description": "pattern to search",
1765
- "type": "string"
1766
- },
1767
- "replace": {
1768
- "description": "replace pattern by string",
1769
- "type": "string"
1770
- }
1771
- }
1772
- }
1773
- }
1774
- }
1775
- },
1776
- "required": [
1777
- "default"
1778
- ]
1779
- },
1780
- "interfaces": {
1781
- "description": "list of interface settings (link settings and ip addresses)",
1782
- "type": "array",
1783
- "items": {
1784
- "type": "object",
1785
- "required": [
1786
- "name",
1787
- "link"
1788
- ],
1789
- "additionalProperties": false,
1790
- "properties": {
1791
- "name": {
1792
- "$ref": "#/$defs/iface-name",
1793
- "description": "name of the interface"
1794
- },
1795
- "addresses": {
1796
- "description": "ip addresses of the interface",
1797
- "type": "array",
1798
- "items": {
1799
- "type": "string",
1800
- "examples": [
1801
- "192.0.2.1",
1802
- "192.168.0.1/24",
1803
- "2001:db8::1/64"
1804
- ]
1805
- }
1806
- },
1807
- "brport": {
1808
- "description": "settings for bridge ports",
1809
- "type": "object",
1810
- "additionalProperties": false,
1811
- "properties": {
1812
- "priority": {
1813
- "description": "set port priority",
1814
- "type": "integer",
1815
- "minimum": 0,
1816
- "maximum": 63
1817
- },
1818
- "cost": {
1819
- "description": "set port cost",
1820
- "minimum": 1,
1821
- "maximum": 65535
1822
- },
1823
- "guard": {
1824
- "description": "filter BPDU packets",
1825
- "type": "boolean"
1826
- },
1827
- "mode": {
1828
- "description": "enable hairpin mode",
1829
- "type": "boolean"
1830
- },
1831
- "fast_leave": {
1832
- "description": "enable multicast fast leave",
1833
- "type": "boolean"
1834
- },
1835
- "protect": {
1836
- "description": "prevent to become a root port",
1837
- "type": "boolean"
1838
- },
1839
- "learning": {
1840
- "description": "allow MAC address learning",
1841
- "type": "boolean"
1842
- },
1843
- "unicast_flood": {
1844
- "description": "flood unknown unicasts",
1845
- "type": "boolean"
1846
- },
1847
- "bcast_flood": {
1848
- "description": "flood broadcasts",
1849
- "type": "boolean"
1850
- },
1851
- "mcast_flood": {
1852
- "description": "flood multicasts",
1853
- "type": "boolean"
1854
- },
1855
- "mcast_to_ucast": {
1856
- "description": "clone multicast packets into unicasts",
1857
- "type": "boolean"
1858
- },
1859
- "proxyarp": {
1860
- "description": "enable proxy ARP",
1861
- "type": "boolean"
1862
- },
1863
- "proxyarp_wifi": {
1864
- "description": "enable proxy ARP (IEEE 802.11 and Hotspot 2.0)",
1865
- "type": "boolean"
1866
- },
1867
- "neigh_suppress": {
1868
- "description": "ARP and ND suppression",
1869
- "type": "boolean"
1870
- },
1871
- "vlan_tunnel": {
1872
- "description": "VLAN to tunnel mapping",
1873
- "type": "boolean"
1874
- },
1875
- "backup_port": {
1876
- "description": "backup bridge port on loss carrier",
1877
- "$ref": "#/$defs/iface-link_link"
1878
- },
1879
- "isolated": {
1880
- "description": "isolated port, can communicate only with non-isolated ports",
1881
- "type": "boolean"
1882
- }
1883
- }
1884
- },
1885
- "fdb": {
1886
- "description": "forwarding database for bridge interfaces, the entries are distinct by the `lladdr` property",
1887
- "type": "array",
1888
- "items": {
1889
- "type": "object",
1890
- "additionalProperties": false,
1891
- "required": [
1892
- "lladdr"
1893
- ],
1894
- "properties": {
1895
- "lladdr": {
1896
- "description": "destination link layer address",
1897
- "$ref": "#/$defs/iface-link_address",
1898
- "default": null
1899
- },
1900
- "dst": {
1901
- "description": "ip address of the destination VXLAN tunnel endpoint",
1902
- "type": "string",
1903
- "oneOf": [
1904
- {
1905
- "format": "ipv4"
1906
- },
1907
- {
1908
- "format": "ipv6"
1909
- }
1910
- ]
1911
- },
1912
- "nhid": {
1913
- "description": "ecmp nexthop group for the VXLAN device driver",
1914
- "type": "integer",
1915
- "minimum": 1
1916
- },
1917
- "port": {
1918
- "description": "destination port number to use to connect to the remote VXLAN tunnel endpoint",
1919
- "type": "integer",
1920
- "minimum": 0,
1921
- "maximum": 65535
1922
- },
1923
- "vni": {
1924
- "description": "virtual network identifier this entry belongs to",
1925
- "type": "integer",
1926
- "minimum": 0,
1927
- "maximum": 16777215
1928
- },
1929
- "flags": {
1930
- "type": "array",
1931
- "items": [
1932
- {
1933
- "type": "string",
1934
- "enum": [
1935
- "self",
1936
- "master",
1937
- "router",
1938
- "use",
1939
- "sticky"
1940
- ]
1941
- }
1942
- ]
1943
- },
1944
- "state": {
1945
- "type": "array",
1946
- "items": [
1947
- {
1948
- "type": "string",
1949
- "enum": [
1950
- "permanent",
1951
- "noarp"
1952
- ]
1953
- }
1954
- ]
1955
- }
1956
- }
1957
- }
1958
- },
1959
- "vrrp": {
1960
- "$ref": "#/$defs/condition-vrrp"
1961
- },
1962
- "link": {
1963
- "description": "link settings of the interface",
1964
- "type": "object",
1965
- "required": [
1966
- "kind"
1967
- ],
1968
- "oneOf": [
1969
- {
1970
- "description": "Intermediate Functional Block device",
1971
- "required": [
1972
- "kind"
1973
- ],
1974
- "additionalProperties": false,
1975
- "properties": {
1976
- "kind": {
1977
- "const": "ifb",
1978
- "description": "link type"
1979
- },
1980
- "address": {
1981
- "$ref": "#/$defs/iface-link_address"
1982
- },
1983
- "group": {
1984
- "$ref": "#/$defs/iface-link_group"
1985
- },
1986
- "state": {
1987
- "$ref": "#/$defs/iface-link_state"
1988
- },
1989
- "master": {
1990
- "$ref": "#/$defs/iface-link_master"
1991
- },
1992
- "mtu": {
1993
- "$ref": "#/$defs/iface-link_mtu"
1994
- },
1995
- "txqlen": {
1996
- "$ref": "#/$defs/iface-link_txqlen"
1997
- },
1998
- "ifalias": {
1999
- "$ref": "#/$defs/iface-link_ifalias"
2000
- }
2001
- }
2002
- },
2003
- {
2004
- "description": "Virtual tunnel interface IPv4|IPv6 over IPv6",
2005
- "required": [
2006
- "kind"
2007
- ],
2008
- "properties": {
2009
- "kind": {
2010
- "const": "ip6tnl",
2011
- "description": "link type"
2012
- },
2013
- "address": {
2014
- "$ref": "#/$defs/iface-link_address"
2015
- },
2016
- "bind_netns": {
2017
- "$ref": "#/$defs/iface-link_bind-netns"
2018
- },
2019
- "group": {
2020
- "$ref": "#/$defs/iface-link_group"
2021
- },
2022
- "state": {
2023
- "$ref": "#/$defs/iface-link_state"
2024
- },
2025
- "master": {
2026
- "$ref": "#/$defs/iface-link_master"
2027
- },
2028
- "mtu": {
2029
- "$ref": "#/$defs/iface-link_mtu"
2030
- },
2031
- "txqlen": {
2032
- "$ref": "#/$defs/iface-link_txqlen"
2033
- },
2034
- "ifalias": {
2035
- "$ref": "#/$defs/iface-link_ifalias"
2036
- }
2037
- }
2038
- },
2039
- {
2040
- "description": "IP over Infiniband device",
2041
- "required": [
2042
- "kind"
2043
- ],
2044
- "properties": {
2045
- "kind": {
2046
- "const": "ipoib",
2047
- "description": "link type"
2048
- },
2049
- "address": {
2050
- "$ref": "#/$defs/iface-link_address"
2051
- },
2052
- "group": {
2053
- "$ref": "#/$defs/iface-link_group"
2054
- },
2055
- "state": {
2056
- "$ref": "#/$defs/iface-link_state"
2057
- },
2058
- "master": {
2059
- "$ref": "#/$defs/iface-link_master"
2060
- },
2061
- "mtu": {
2062
- "$ref": "#/$defs/iface-link_mtu"
2063
- },
2064
- "txqlen": {
2065
- "$ref": "#/$defs/iface-link_txqlen"
2066
- },
2067
- "ifalias": {
2068
- "$ref": "#/$defs/iface-link_ifalias"
2069
- }
2070
- }
2071
- },
2072
- {
2073
- "description": "Interface for L3 (IPv6/IPv4) based VLANs",
2074
- "required": [
2075
- "kind"
2076
- ],
2077
- "properties": {
2078
- "kind": {
2079
- "const": "ipvlan",
2080
- "description": "link type"
2081
- },
2082
- "address": {
2083
- "$ref": "#/$defs/iface-link_address"
2084
- },
2085
- "group": {
2086
- "$ref": "#/$defs/iface-link_group"
2087
- },
2088
- "state": {
2089
- "$ref": "#/$defs/iface-link_state"
2090
- },
2091
- "master": {
2092
- "$ref": "#/$defs/iface-link_master"
2093
- },
2094
- "mtu": {
2095
- "$ref": "#/$defs/iface-link_mtu"
2096
- },
2097
- "txqlen": {
2098
- "$ref": "#/$defs/iface-link_txqlen"
2099
- },
2100
- "ifalias": {
2101
- "$ref": "#/$defs/iface-link_ifalias"
2102
- }
2103
- }
2104
- },
2105
- {
2106
- "description": "Virtual interface base on link layer address (MAC)",
2107
- "required": [
2108
- "kind"
2109
- ],
2110
- "properties": {
2111
- "kind": {
2112
- "const": "macvlan",
2113
- "description": "link type"
2114
- },
2115
- "address": {
2116
- "$ref": "#/$defs/iface-link_address"
2117
- },
2118
- "group": {
2119
- "$ref": "#/$defs/iface-link_group"
2120
- },
2121
- "state": {
2122
- "$ref": "#/$defs/iface-link_state"
2123
- },
2124
- "master": {
2125
- "$ref": "#/$defs/iface-link_master"
2126
- },
2127
- "mtu": {
2128
- "$ref": "#/$defs/iface-link_mtu"
2129
- },
2130
- "txqlen": {
2131
- "$ref": "#/$defs/iface-link_txqlen"
2132
- },
2133
- "ifalias": {
2134
- "$ref": "#/$defs/iface-link_ifalias"
2135
- }
2136
- }
2137
- },
2138
- {
2139
- "description": "Virtual interface based on link layer address (MAC) and TAP",
2140
- "required": [
2141
- "kind"
2142
- ],
2143
- "properties": {
2144
- "kind": {
2145
- "const": "macvtap",
2146
- "description": "link type"
2147
- },
2148
- "address": {
2149
- "$ref": "#/$defs/iface-link_address"
2150
- },
2151
- "group": {
2152
- "$ref": "#/$defs/iface-link_group"
2153
- },
2154
- "state": {
2155
- "$ref": "#/$defs/iface-link_state"
2156
- },
2157
- "master": {
2158
- "$ref": "#/$defs/iface-link_master"
2159
- },
2160
- "mtu": {
2161
- "$ref": "#/$defs/iface-link_mtu"
2162
- },
2163
- "txqlen": {
2164
- "$ref": "#/$defs/iface-link_txqlen"
2165
- },
2166
- "ifalias": {
2167
- "$ref": "#/$defs/iface-link_ifalias"
2168
- }
2169
- }
2170
- },
2171
- {
2172
- "description": "Team network device",
2173
- "required": [
2174
- "kind"
2175
- ],
2176
- "properties": {
2177
- "kind": {
2178
- "const": "team",
2179
- "description": "link type"
2180
- },
2181
- "address": {
2182
- "$ref": "#/$defs/iface-link_address"
2183
- },
2184
- "group": {
2185
- "$ref": "#/$defs/iface-link_group"
2186
- },
2187
- "state": {
2188
- "$ref": "#/$defs/iface-link_state"
2189
- },
2190
- "master": {
2191
- "$ref": "#/$defs/iface-link_master"
2192
- },
2193
- "mtu": {
2194
- "$ref": "#/$defs/iface-link_mtu"
2195
- },
2196
- "txqlen": {
2197
- "$ref": "#/$defs/iface-link_txqlen"
2198
- },
2199
- "ifalias": {
2200
- "$ref": "#/$defs/iface-link_ifalias"
2201
- }
2202
- }
2203
- },
2204
- {
2205
- "description": "Virtual software device (TUN/TAP)",
2206
- "required": [
2207
- "kind",
2208
- "tun_type"
2209
- ],
2210
- "additionalProperties": false,
2211
- "properties": {
2212
- "kind": {
2213
- "const": "tun",
2214
- "description": "link type"
2215
- },
2216
- "address": {
2217
- "$ref": "#/$defs/iface-link_address"
2218
- },
2219
- "bind_netns": {
2220
- "$ref": "#/$defs/iface-link_bind-netns"
2221
- },
2222
- "group": {
2223
- "$ref": "#/$defs/iface-link_group"
2224
- },
2225
- "state": {
2226
- "$ref": "#/$defs/iface-link_state"
2227
- },
2228
- "master": {
2229
- "$ref": "#/$defs/iface-link_master"
2230
- },
2231
- "mtu": {
2232
- "$ref": "#/$defs/iface-link_mtu"
2233
- },
2234
- "txqlen": {
2235
- "$ref": "#/$defs/iface-link_txqlen"
2236
- },
2237
- "ifalias": {
2238
- "$ref": "#/$defs/iface-link_ifalias"
2239
- },
2240
- "tun_type": {
2241
- "description": "device mode (Ethernet headers)",
2242
- "default": "tap",
2243
- "enum": [
2244
- 1,
2245
- "tun",
2246
- 2,
2247
- "tap"
2248
- ]
2249
- },
2250
- "tun_pi": {
2251
- "description": "provide packet information",
2252
- "type": [
2253
- "boolean",
2254
- "integer"
2255
- ],
2256
- "default": false,
2257
- "enum": [
2258
- 0,
2259
- false,
2260
- 1,
2261
- true
2262
- ]
2263
- },
2264
- "tun_persist": {
2265
- "description": "persistent device; non-persistent devices cannot be created",
2266
- "type": [
2267
- "boolean",
2268
- "integer"
2269
- ],
2270
- "default": false,
2271
- "enum": [
2272
- 0,
2273
- false,
2274
- 1,
2275
- true
2276
- ]
2277
- },
2278
- "tun_vnet_hdr": {
2279
- "description": "prepend frames with struct virtio_net_hdr",
2280
- "default": false,
2281
- "enum": [
2282
- 0,
2283
- false,
2284
- 1,
2285
- true
2286
- ]
2287
- },
2288
- "tun_multi_queue": {
2289
- "description": "enable multiqueue tuntap",
2290
- "type": [
2291
- "boolean",
2292
- "integer"
2293
- ],
2294
- "default": false,
2295
- "enum": [
2296
- 0,
2297
- false,
2298
- 1,
2299
- true
2300
- ]
2301
- },
2302
- "tun_owner": {
2303
- "description": "device owner",
2304
- "type": [
2305
- "integer",
2306
- "string"
2307
- ]
2308
- },
2309
- "tun_group": {
2310
- "description": "device group",
2311
- "type": [
2312
- "integer",
2313
- "string"
2314
- ]
2315
- }
2316
- }
2317
- },
2318
- {
2319
- "description": "Virtual Routing and Forwarding device",
2320
- "required": [
2321
- "kind",
2322
- "vrf_table"
2323
- ],
2324
- "additionalProperties": false,
2325
- "properties": {
2326
- "kind": {
2327
- "const": "vrf",
2328
- "description": "link type"
2329
- },
2330
- "address": {
2331
- "$ref": "#/$defs/iface-link_address"
2332
- },
2333
- "group": {
2334
- "$ref": "#/$defs/iface-link_group"
2335
- },
2336
- "state": {
2337
- "$ref": "#/$defs/iface-link_state"
2338
- },
2339
- "master": {
2340
- "$ref": "#/$defs/iface-link_master"
2341
- },
2342
- "mtu": {
2343
- "$ref": "#/$defs/iface-link_mtu"
2344
- },
2345
- "txqlen": {
2346
- "$ref": "#/$defs/iface-link_txqlen"
2347
- },
2348
- "vrf_table": {
2349
- "description": "routing table associated with the VRF device",
2350
- "type": [
2351
- "integer",
2352
- "string"
2353
- ],
2354
- "minimum": 1,
2355
- "maximum": 4294967295
2356
- },
2357
- "ifalias": {
2358
- "$ref": "#/$defs/iface-link_ifalias"
2359
- }
2360
- }
2361
- },
2362
- {
2363
- "description": "Virtual tunnel interface over IPv4",
2364
- "required": [
2365
- "kind"
2366
- ],
2367
- "properties": {
2368
- "kind": {
2369
- "const": "vti",
2370
- "description": "link type"
2371
- },
2372
- "address": {
2373
- "$ref": "#/$defs/iface-link_address"
2374
- },
2375
- "bind_netns": {
2376
- "$ref": "#/$defs/iface-link_bind-netns"
2377
- },
2378
- "group": {
2379
- "$ref": "#/$defs/iface-link_group"
2380
- },
2381
- "state": {
2382
- "$ref": "#/$defs/iface-link_state"
2383
- },
2384
- "master": {
2385
- "$ref": "#/$defs/iface-link_master"
2386
- },
2387
- "mtu": {
2388
- "$ref": "#/$defs/iface-link_mtu"
2389
- },
2390
- "txqlen": {
2391
- "$ref": "#/$defs/iface-link_txqlen"
2392
- },
2393
- "ifalias": {
2394
- "$ref": "#/$defs/iface-link_ifalias"
2395
- }
2396
- }
2397
- },
2398
- {
2399
- "description": "Virtual tunnel interface over IPv6",
2400
- "required": [
2401
- "kind"
2402
- ],
2403
- "properties": {
2404
- "kind": {
2405
- "const": "vti6",
2406
- "description": "link type"
2407
- },
2408
- "address": {
2409
- "$ref": "#/$defs/iface-link_address"
2410
- },
2411
- "bind_netns": {
2412
- "$ref": "#/$defs/iface-link_bind-netns"
2413
- },
2414
- "group": {
2415
- "$ref": "#/$defs/iface-link_group"
2416
- },
2417
- "state": {
2418
- "$ref": "#/$defs/iface-link_state"
2419
- },
2420
- "master": {
2421
- "$ref": "#/$defs/iface-link_master"
2422
- },
2423
- "mtu": {
2424
- "$ref": "#/$defs/iface-link_mtu"
2425
- },
2426
- "txqlen": {
2427
- "$ref": "#/$defs/iface-link_txqlen"
2428
- },
2429
- "ifalias": {
2430
- "$ref": "#/$defs/iface-link_ifalias"
2431
- }
2432
- }
2433
- },
2434
- {
2435
- "description": "Bonding network interface",
2436
- "required": [
2437
- "kind"
2438
- ],
2439
- "additionalProperties": false,
2440
- "properties": {
2441
- "kind": {
2442
- "const": "bond",
2443
- "description": "link type"
2444
- },
2445
- "address": {
2446
- "$ref": "#/$defs/iface-link_address"
2447
- },
2448
- "group": {
2449
- "$ref": "#/$defs/iface-link_group"
2450
- },
2451
- "state": {
2452
- "$ref": "#/$defs/iface-link_state"
2453
- },
2454
- "master": {
2455
- "$ref": "#/$defs/iface-link_master"
2456
- },
2457
- "mtu": {
2458
- "$ref": "#/$defs/iface-link_mtu"
2459
- },
2460
- "txqlen": {
2461
- "$ref": "#/$defs/iface-link_txqlen"
2462
- },
2463
- "ifalias": {
2464
- "$ref": "#/$defs/iface-link_ifalias"
2465
- },
2466
- "bond_mode": {
2467
- "enum": [
2468
- 0,
2469
- "balance-rr",
2470
- 1,
2471
- "active-backup",
2472
- 2,
2473
- "balance-xor",
2474
- 3,
2475
- "broadcast",
2476
- 4,
2477
- "802.3ad",
2478
- 5,
2479
- "balance-tlb",
2480
- 6,
2481
- "balance-alb"
2482
- ],
2483
- "default": "balance-rr",
2484
- "description": "the bonding policy"
2485
- },
2486
- "bond_miimon": {
2487
- "type": "integer",
2488
- "minimum": 0,
2489
- "default": 0,
2490
- "description": "MII link monitoring frequency in milliseconds"
2491
- },
2492
- "bond_updelay": {
2493
- "type": "integer",
2494
- "minimum": 0,
2495
- "default": 0,
2496
- "description": "time, in milliseconds, to wait before enabling a slave after a link recovery has been detected"
2497
- },
2498
- "bond_downdelay": {
2499
- "type": "integer",
2500
- "minimum": 0,
2501
- "default": 0,
2502
- "description": "time, in milliseconds, to wait before disabling a slave after a link failure has been detected"
2503
- },
2504
- "bond_use_carrier": {
2505
- "enum": [
2506
- 0,
2507
- 1
2508
- ],
2509
- "default": 1,
2510
- "description": "use MII or ETHTOOL ioctls vs. netif_carrier_ok() to determine the link status"
2511
- },
2512
- "bond_arp_interval": {
2513
- "type": "integer",
2514
- "minimum": 0,
2515
- "default": 0,
2516
- "description": "ARP link monitoring frequency in milliseconds"
2517
- },
2518
- "bond_arp_validate": {
2519
- "enum": [
2520
- 0,
2521
- "none",
2522
- 1,
2523
- "active",
2524
- 2,
2525
- "backup",
2526
- 3,
2527
- "all",
2528
- 4,
2529
- "filter",
2530
- 5,
2531
- "filter_active",
2532
- 6,
2533
- "filter_backup"
2534
- ],
2535
- "default": "none",
2536
- "description": "arp validation for arp monitoring"
2537
- },
2538
- "bond_arp_all_targets": {
2539
- "enum": [
2540
- 0,
2541
- "any",
2542
- 1,
2543
- "all"
2544
- ],
2545
- "default": "any",
2546
- "description": "quantity of arp_ip_targets that must be reachable"
2547
- },
2548
- "bond_primary_reselect": {
2549
- "enum": [
2550
- 0,
2551
- "always",
2552
- 1,
2553
- "better",
2554
- 2,
2555
- "failure"
2556
- ],
2557
- "default": "always",
2558
- "description": "reselection policy for the primary slave"
2559
- },
2560
- "bond_fail_over_mac": {
2561
- "enum": [
2562
- 0,
2563
- "none",
2564
- 1,
2565
- "active",
2566
- 2,
2567
- "follow"
2568
- ],
2569
- "default": "none",
2570
- "description": "slave mac address selection"
2571
- },
2572
- "bond_xmit_hash_policy": {
2573
- "enum": [
2574
- 0,
2575
- "layer2",
2576
- 1,
2577
- "layer3+4",
2578
- 2,
2579
- "layer2+3",
2580
- 3,
2581
- "encap2+3",
2582
- 4,
2583
- "encap3+4",
2584
- 5,
2585
- "vlan+srcmac"
2586
- ],
2587
- "default": "layer2",
2588
- "description": "transmit hash policy to use for slave selection"
2589
- },
2590
- "bond_resend_igmp": {
2591
- "type": "integer",
2592
- "minimum": 0,
2593
- "maximum": 255,
2594
- "default": 1,
2595
- "description": "number of IGMP membership reports to be issued after a failover event"
2596
- },
2597
- "bond_num_peer_notif": {
2598
- "type": "integer",
2599
- "minimum": 0,
2600
- "default": 1
2601
- },
2602
- "bond_all_slaves_active": {
2603
- "enum": [
2604
- 0,
2605
- 1
2606
- ],
2607
- "default": 1,
2608
- "description": "dropped (0) or delivered (1) duplicate frames"
2609
- },
2610
- "bond_min_links": {
2611
- "type": "integer",
2612
- "minimum": 0,
2613
- "default": 0,
2614
- "description": "number of links that must be active before asserting carrier"
2615
- },
2616
- "bond_lp_interval": {
2617
- "type": "integer",
2618
- "minimum": 0,
2619
- "maximum": 2147483647,
2620
- "default": 1,
2621
- "description": "number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch"
2622
- },
2623
- "bond_packets_per_slave": {
2624
- "type": "integer",
2625
- "minimum": 0,
2626
- "maximum": 65535,
2627
- "default": 1,
2628
- "description": "number of packets to transmit through a slave before moving to the next one"
2629
- },
2630
- "bond_ad_lacp_rate": {
2631
- "enum": [
2632
- 0,
2633
- "slow",
2634
- 1,
2635
- "fast"
2636
- ],
2637
- "default": "slow",
2638
- "description": "requested LACPDU packet rate in 802.3ad mode"
2639
- },
2640
- "bond_ad_select": {
2641
- "enum": [
2642
- 0,
2643
- "stable",
2644
- 1,
2645
- "bandwidth",
2646
- 2,
2647
- "count"
2648
- ],
2649
- "default": "stable",
2650
- "description": "802.3ad aggregation selection logic to use"
2651
- },
2652
- "bond_tlb_dynamic_lb": {
2653
- "enum": [
2654
- 0,
2655
- 1
2656
- ],
2657
- "default": 1,
2658
- "description": "dynamic shuffling of flows in tlb mode"
2659
- }
2660
- }
2661
- },
2662
- {
2663
- "description": "Bridge network interface",
2664
- "required": [
2665
- "kind"
2666
- ],
2667
- "properties": {
2668
- "kind": {
2669
- "const": "bridge",
2670
- "description": "link type"
2671
- },
2672
- "address": {
2673
- "$ref": "#/$defs/iface-link_address"
2674
- },
2675
- "group": {
2676
- "$ref": "#/$defs/iface-link_group"
2677
- },
2678
- "state": {
2679
- "$ref": "#/$defs/iface-link_state"
2680
- },
2681
- "master": {
2682
- "$ref": "#/$defs/iface-link_master"
2683
- },
2684
- "mtu": {
2685
- "$ref": "#/$defs/iface-link_mtu"
2686
- },
2687
- "txqlen": {
2688
- "$ref": "#/$defs/iface-link_txqlen"
2689
- },
2690
- "ifalias": {
2691
- "$ref": "#/$defs/iface-link_ifalias"
2692
- },
2693
- "br_ageing_time": {
2694
- "type": "integer",
2695
- "minimum": 0,
2696
- "default": 30000,
2697
- "description": "FDB entry ageing time in milliseconds"
2698
- },
2699
- "br_vlan_protocol": {
2700
- "enum": [
2701
- 33024,
2702
- "802.1q",
2703
- 34984,
2704
- "802.1ad"
2705
- ],
2706
- "default": "802.1q",
2707
- "description": "802.1q or 802.1ad (Q-in-Q)"
2708
- }
2709
- }
2710
- },
2711
- {
2712
- "description": "Physical network interface",
2713
- "required": [
2714
- "kind"
2715
- ],
2716
- "additionalProperties": false,
2717
- "properties": {
2718
- "kind": {
2719
- "type": "string",
2720
- "description": "link type",
2721
- "enum": [
2722
- "physical"
2723
- ]
2724
- },
2725
- "address": {
2726
- "$ref": "#/$defs/iface-link_address"
2727
- },
2728
- "group": {
2729
- "$ref": "#/$defs/iface-link_group"
2730
- },
2731
- "permaddr": {
2732
- "description": "select interface by permanent address [ethtool -P]",
2733
- "$ref": "#/$defs/iface-link_address"
2734
- },
2735
- "businfo": {
2736
- "description": "select interface by bus info [ethtool -i]",
2737
- "type": "string",
2738
- "maxLength": 32
2739
- },
2740
- "state": {
2741
- "$ref": "#/$defs/iface-link_state"
2742
- },
2743
- "master": {
2744
- "$ref": "#/$defs/iface-link_master"
2745
- },
2746
- "mtu": {
2747
- "$ref": "#/$defs/iface-link_mtu"
2748
- },
2749
- "txqlen": {
2750
- "$ref": "#/$defs/iface-link_txqlen"
2751
- },
2752
- "ifalias": {
2753
- "$ref": "#/$defs/iface-link_ifalias"
2754
- }
2755
- }
2756
- },
2757
- {
2758
- "description": "DSA interface",
2759
- "required": [
2760
- "kind",
2761
- "link"
2762
- ],
2763
- "additionalProperties": false,
2764
- "properties": {
2765
- "kind": {
2766
- "const": "dsa",
2767
- "description": "link type"
2768
- },
2769
- "address": {
2770
- "$ref": "#/$defs/iface-link_address"
2771
- },
2772
- "group": {
2773
- "$ref": "#/$defs/iface-link_group"
2774
- },
2775
- "permaddr": {
2776
- "description": "select interface by permanent address [ethtool -P]",
2777
- "$ref": "#/$defs/iface-link_address"
2778
- },
2779
- "state": {
2780
- "$ref": "#/$defs/iface-link_state"
2781
- },
2782
- "master": {
2783
- "$ref": "#/$defs/iface-link_master"
2784
- },
2785
- "mtu": {
2786
- "$ref": "#/$defs/iface-link_mtu"
2787
- },
2788
- "txqlen": {
2789
- "$ref": "#/$defs/iface-link_txqlen"
2790
- },
2791
- "ifalias": {
2792
- "$ref": "#/$defs/iface-link_ifalias"
2793
- },
2794
- "link": {
2795
- "$ref": "#/$defs/iface-link_link"
2796
- },
2797
- "link_netns": {
2798
- "$ref": "#/$defs/iface-link_link-netns"
2799
- }
2800
- }
2801
- },
2802
- {
2803
- "description": "Dummy network interface",
2804
- "required": [
2805
- "kind"
2806
- ],
2807
- "additionalProperties": false,
2808
- "properties": {
2809
- "kind": {
2810
- "type": "string",
2811
- "description": "link type",
2812
- "enum": [
2813
- "dummy"
2814
- ]
2815
- },
2816
- "address": {
2817
- "$ref": "#/$defs/iface-link_address"
2818
- },
2819
- "group": {
2820
- "$ref": "#/$defs/iface-link_group"
2821
- },
2822
- "state": {
2823
- "$ref": "#/$defs/iface-link_state"
2824
- },
2825
- "master": {
2826
- "$ref": "#/$defs/iface-link_master"
2827
- },
2828
- "mtu": {
2829
- "$ref": "#/$defs/iface-link_mtu"
2830
- },
2831
- "txqlen": {
2832
- "$ref": "#/$defs/iface-link_txqlen"
2833
- },
2834
- "ifalias": {
2835
- "$ref": "#/$defs/iface-link_ifalias"
2836
- }
2837
- }
2838
- },
2839
- {
2840
- "description": "VETH/VXCAN interface",
2841
- "required": [
2842
- "kind",
2843
- "peer"
2844
- ],
2845
- "additionalProperties": false,
2846
- "properties": {
2847
- "kind": {
2848
- "type": "string",
2849
- "description": "link type",
2850
- "enum": [
2851
- "veth",
2852
- "vxcan"
2853
- ]
2854
- },
2855
- "address": {
2856
- "$ref": "#/$defs/iface-link_address"
2857
- },
2858
- "group": {
2859
- "$ref": "#/$defs/iface-link_group"
2860
- },
2861
- "peer": {
2862
- "$ref": "#/$defs/iface-link_link"
2863
- },
2864
- "peer_netns": {
2865
- "type": [
2866
- "string",
2867
- "null"
2868
- ],
2869
- "description": "specifies the peer's netns name or null if the peer isn't in a netns namespace"
2870
- },
2871
- "state": {
2872
- "$ref": "#/$defs/iface-link_state"
2873
- },
2874
- "master": {
2875
- "$ref": "#/$defs/iface-link_master"
2876
- },
2877
- "mtu": {
2878
- "$ref": "#/$defs/iface-link_mtu"
2879
- },
2880
- "txqlen": {
2881
- "$ref": "#/$defs/iface-link_txqlen"
2882
- },
2883
- "ifalias": {
2884
- "$ref": "#/$defs/iface-link_ifalias"
2885
- }
2886
- }
2887
- },
2888
- {
2889
- "description": "VLAN interface",
2890
- "required": [
2891
- "kind",
2892
- "link",
2893
- "vlan_id"
2894
- ],
2895
- "additionalProperties": false,
2896
- "properties": {
2897
- "kind": {
2898
- "const": "vlan",
2899
- "description": "link type"
2900
- },
2901
- "address": {
2902
- "$ref": "#/$defs/iface-link_address"
2903
- },
2904
- "group": {
2905
- "$ref": "#/$defs/iface-link_group"
2906
- },
2907
- "state": {
2908
- "$ref": "#/$defs/iface-link_state"
2909
- },
2910
- "master": {
2911
- "$ref": "#/$defs/iface-link_master"
2912
- },
2913
- "mtu": {
2914
- "$ref": "#/$defs/iface-link_mtu"
2915
- },
2916
- "txqlen": {
2917
- "$ref": "#/$defs/iface-link_txqlen"
2918
- },
2919
- "ifalias": {
2920
- "$ref": "#/$defs/iface-link_ifalias"
2921
- },
2922
- "link": {
2923
- "$ref": "#/$defs/iface-link_link"
2924
- },
2925
- "link_netns": {
2926
- "$ref": "#/$defs/iface-link_link-netns"
2927
- },
2928
- "vlan_id": {
2929
- "type": [
2930
- "integer"
2931
- ],
2932
- "minimum": 0,
2933
- "maximum": 4094,
2934
- "description": "specifies the VLAN identifier to use"
2935
- },
2936
- "vlan_protocol": {
2937
- "enum": [
2938
- 33024,
2939
- "802.1q",
2940
- 34984,
2941
- "802.1ad"
2942
- ],
2943
- "default": "802.1q",
2944
- "description": "802.1q or 802.1ad (Q-in-Q)"
2945
- }
2946
- }
2947
- },
2948
- {
2949
- "description": "VXLAN interface",
2950
- "required": [
2951
- "kind",
2952
- "vxlan_id"
2953
- ],
2954
- "additionalProperties": false,
2955
- "properties": {
2956
- "kind": {
2957
- "const": "vxlan",
2958
- "description": "link type"
2959
- },
2960
- "address": {
2961
- "$ref": "#/$defs/iface-link_address"
2962
- },
2963
- "bind_netns": {
2964
- "$ref": "#/$defs/iface-link_bind-netns"
2965
- },
2966
- "group": {
2967
- "$ref": "#/$defs/iface-link_group"
2968
- },
2969
- "state": {
2970
- "$ref": "#/$defs/iface-link_state"
2971
- },
2972
- "master": {
2973
- "$ref": "#/$defs/iface-link_master"
2974
- },
2975
- "mtu": {
2976
- "$ref": "#/$defs/iface-link_mtu"
2977
- },
2978
- "txqlen": {
2979
- "$ref": "#/$defs/iface-link_txqlen"
2980
- },
2981
- "ifalias": {
2982
- "$ref": "#/$defs/iface-link_ifalias"
2983
- },
2984
- "vxlan_id": {
2985
- "type": "integer",
2986
- "minimum": 0,
2987
- "maximum": 16777215,
2988
- "description": "specifies the VNI"
2989
- },
2990
- "vxlan_ageing": {
2991
- "type": "integer",
2992
- "minimum": 0,
2993
- "maximum": 4294967296,
2994
- "description": "specifies the lifetime in seconds of FDB entries learnt by the kernel (0: none)",
2995
- "default": 300
2996
- },
2997
- "vxlan_df": {
2998
- "enum": [
2999
- 0,
3000
- "unset",
3001
- 1,
3002
- "set",
3003
- 2,
3004
- "inherit"
3005
- ],
3006
- "default": "unset",
3007
- "description": "specifies the usage of the DF bit in outgoing packets with IPv4 headers"
3008
- },
3009
- "vxlan_label": {
3010
- "type": "integer",
3011
- "minimum": 0,
3012
- "maximum": 1048575,
3013
- "description": "specifies a fixed flowlabel"
3014
- },
3015
- "vxlan_learning": {
3016
- "type": "integer",
3017
- "minimum": 0,
3018
- "maximum": 1,
3019
- "description": "specifies if unknown source link layer addresses and IP addresses are entered into the VXLAN device fdb",
3020
- "default": 1
3021
- },
3022
- "vxlan_limit": {
3023
- "type": "integer",
3024
- "minimum": 0,
3025
- "maximum": 4294967296,
3026
- "description": "specifies the maximum number of FDB entries (0: none)",
3027
- "default": 0
3028
- },
3029
- "vxlan_port": {
3030
- "description": "specifies the UDP destination port to communicate to the remote VXLAN tunnel endpoint",
3031
- "type": "integer",
3032
- "minimum": 0,
3033
- "maximum": 65535
3034
- },
3035
- "vxlan_port_range": {
3036
- "description": "specifies the range of port numbers to use as UDP source ports to communicate to the remote VXLAN tunnel endpoint",
3037
- "required": [
3038
- "low",
3039
- "high"
3040
- ],
3041
- "additionalProperties": false,
3042
- "properties": {
3043
- "low": {
3044
- "type": "integer",
3045
- "minimum": 0,
3046
- "maximum": 65535
3047
- },
3048
- "high": {
3049
- "type": "integer",
3050
- "minimum": 0,
3051
- "maximum": 65535
3052
- }
3053
- }
3054
- },
3055
- "vxlan_proxy": {
3056
- "type": "integer",
3057
- "minimum": 0,
3058
- "maximum": 1,
3059
- "description": "specifies if ARP proxy is turned on",
3060
- "default": 0
3061
- },
3062
- "vxlan_rsc": {
3063
- "type": "integer",
3064
- "minimum": 0,
3065
- "maximum": 1,
3066
- "description": "specifies if route short circuit is turned on",
3067
- "default": 0
3068
- },
3069
- "vxlan_l2miss": {
3070
- "type": "integer",
3071
- "minimum": 0,
3072
- "maximum": 1,
3073
- "description": "specifies if netlink LLADDR miss notifications are generated",
3074
- "default": 0
3075
- },
3076
- "vxlan_l3miss": {
3077
- "type": "integer",
3078
- "minimum": 0,
3079
- "maximum": 1,
3080
- "description": "specifies if netlink IP ADDR miss notifications are generated",
3081
- "default": 0
3082
- },
3083
- "vxlan_udp_csum": {
3084
- "type": "integer",
3085
- "minimum": 0,
3086
- "maximum": 1,
3087
- "description": "specifies if UDP checksum is calculated for tx packets over IPv4",
3088
- "default": 1
3089
- },
3090
- "vxlan_link": {
3091
- "$ref": "#/$defs/iface-link_tun-dev"
3092
- },
3093
- "vxlan_local": {
3094
- "type": "string",
3095
- "description": "tunnel source IPv4 address",
3096
- "format": "ipv4"
3097
- },
3098
- "vxlan_local6": {
3099
- "type": "string",
3100
- "description": "tunnel source IPv6 address",
3101
- "format": "ipv6"
3102
- },
3103
- "vxlan_group": {
3104
- "type": "string",
3105
- "description": "remote unicast destination or multicast group IPv4 address",
3106
- "format": "ipv4"
3107
- },
3108
- "vxlan_group6": {
3109
- "type": "string",
3110
- "description": "remote unicast destination or multicast group IPv6 address",
3111
- "format": "ipv6"
3112
- },
3113
- "vxlan_tos": {
3114
- "type": "integer",
3115
- "description": "specifies the TOS value to use in outgoing packets (0: inherit)",
3116
- "minimum": 0,
3117
- "maximum": 255,
3118
- "default": 0
3119
- },
3120
- "vxlan_ttl": {
3121
- "type": "integer",
3122
- "description": "specifies the TTL value to use in outgoing packets (0: auto)",
3123
- "minimum": 0,
3124
- "maximum": 255,
3125
- "default": 0
3126
- },
3127
- "vxlan_ttl_inherit": {
3128
- "type": "boolean",
3129
- "description": "control whether TTL is propagated",
3130
- "default": false
3131
- }
3132
- },
3133
- "anyOf": [
3134
- {
3135
- "oneOf": [
3136
- {
3137
- "required": [
3138
- "vxlan_group"
3139
- ]
3140
- },
3141
- {
3142
- "required": [
3143
- "vxlan_local"
3144
- ]
3145
- },
3146
- {
3147
- "required": [
3148
- "vxlan_local",
3149
- "vxlan_group"
3150
- ]
3151
- },
3152
- {
3153
- "required": [
3154
- "vxlan_group6"
3155
- ]
3156
- },
3157
- {
3158
- "required": [
3159
- "vxlan_local6"
3160
- ]
3161
- },
3162
- {
3163
- "required": [
3164
- "vxlan_group6",
3165
- "vxlan_local6"
3166
- ]
3167
- }
3168
- ]
3169
- },
3170
- {
3171
- "not": {
3172
- "required": [
3173
- "vxlan_group",
3174
- "vxlan_group6",
3175
- "vxlan_local",
3176
- "vxlan_local6"
3177
- ]
3178
- }
3179
- }
3180
- ]
3181
- },
3182
- {
3183
- "description": "IPIP interface",
3184
- "required": [
3185
- "kind",
3186
- "ipip_remote",
3187
- "ipip_local"
3188
- ],
3189
- "additionalProperties": false,
3190
- "properties": {
3191
- "kind": {
3192
- "const": "ipip",
3193
- "description": "link type"
3194
- },
3195
- "address": {
3196
- "$ref": "#/$defs/iface-link_address"
3197
- },
3198
- "bind_netns": {
3199
- "$ref": "#/$defs/iface-link_bind-netns"
3200
- },
3201
- "group": {
3202
- "$ref": "#/$defs/iface-link_group"
3203
- },
3204
- "state": {
3205
- "$ref": "#/$defs/iface-link_state"
3206
- },
3207
- "master": {
3208
- "$ref": "#/$defs/iface-link_master"
3209
- },
3210
- "mtu": {
3211
- "$ref": "#/$defs/iface-link_mtu"
3212
- },
3213
- "txqlen": {
3214
- "$ref": "#/$defs/iface-link_txqlen"
3215
- },
3216
- "ifalias": {
3217
- "$ref": "#/$defs/iface-link_ifalias"
3218
- },
3219
- "ipip_remote": {
3220
- "$ref": "#/$defs/iface-link_tun-remote4"
3221
- },
3222
- "ipip_local": {
3223
- "$ref": "#/$defs/iface-link_tun-local4"
3224
- }
3225
- }
3226
- },
3227
- {
3228
- "description": "SIT interface",
3229
- "required": [
3230
- "kind",
3231
- "sit_remote",
3232
- "sit_local"
3233
- ],
3234
- "additionalProperties": false,
3235
- "properties": {
3236
- "kind": {
3237
- "const": "sit",
3238
- "description": "link type"
3239
- },
3240
- "address": {
3241
- "$ref": "#/$defs/iface-link_address"
3242
- },
3243
- "bind_netns": {
3244
- "$ref": "#/$defs/iface-link_bind-netns"
3245
- },
3246
- "group": {
3247
- "$ref": "#/$defs/iface-link_group"
3248
- },
3249
- "state": {
3250
- "$ref": "#/$defs/iface-link_state"
3251
- },
3252
- "master": {
3253
- "$ref": "#/$defs/iface-link_master"
3254
- },
3255
- "mtu": {
3256
- "$ref": "#/$defs/iface-link_mtu"
3257
- },
3258
- "txqlen": {
3259
- "$ref": "#/$defs/iface-link_txqlen"
3260
- },
3261
- "ifalias": {
3262
- "$ref": "#/$defs/iface-link_ifalias"
3263
- },
3264
- "sit_remote": {
3265
- "$ref": "#/$defs/iface-link_tun-remote4"
3266
- },
3267
- "sit_local": {
3268
- "$ref": "#/$defs/iface-link_tun-local4"
3269
- }
3270
- }
3271
- },
3272
- {
3273
- "description": "GRE, GRETAP interface",
3274
- "required": [
3275
- "kind",
3276
- "gre_remote",
3277
- "gre_local"
3278
- ],
3279
- "additionalProperties": false,
3280
- "properties": {
3281
- "kind": {
3282
- "type": "string",
3283
- "description": "link type",
3284
- "enum": [
3285
- "gre",
3286
- "gretap"
3287
- ]
3288
- },
3289
- "address": {
3290
- "$ref": "#/$defs/iface-link_address"
3291
- },
3292
- "bind_netns": {
3293
- "$ref": "#/$defs/iface-link_bind-netns"
3294
- },
3295
- "group": {
3296
- "$ref": "#/$defs/iface-link_group"
3297
- },
3298
- "state": {
3299
- "$ref": "#/$defs/iface-link_state"
3300
- },
3301
- "master": {
3302
- "$ref": "#/$defs/iface-link_master"
3303
- },
3304
- "mtu": {
3305
- "$ref": "#/$defs/iface-link_mtu"
3306
- },
3307
- "txqlen": {
3308
- "$ref": "#/$defs/iface-link_txqlen"
3309
- },
3310
- "ifalias": {
3311
- "$ref": "#/$defs/iface-link_ifalias"
3312
- },
3313
- "gre_remote": {
3314
- "$ref": "#/$defs/iface-link_tun-remote4"
3315
- },
3316
- "gre_local": {
3317
- "$ref": "#/$defs/iface-link_tun-local4"
3318
- },
3319
- "gre_link": {
3320
- "$ref": "#/$defs/iface-link_tun-dev"
3321
- }
3322
- }
3323
- },
3324
- {
3325
- "description": "IP6GRE, IP6GRETAP interface",
3326
- "required": [
3327
- "kind",
3328
- "ip6gre_remote",
3329
- "ip6gre_local"
3330
- ],
3331
- "additionalProperties": false,
3332
- "properties": {
3333
- "kind": {
3334
- "type": "string",
3335
- "description": "link type",
3336
- "enum": [
3337
- "ip6gre",
3338
- "ip6gretap"
3339
- ]
3340
- },
3341
- "address": {
3342
- "$ref": "#/$defs/iface-link_address"
3343
- },
3344
- "bind_netns": {
3345
- "$ref": "#/$defs/iface-link_bind-netns"
3346
- },
3347
- "group": {
3348
- "$ref": "#/$defs/iface-link_group"
3349
- },
3350
- "state": {
3351
- "$ref": "#/$defs/iface-link_state"
3352
- },
3353
- "master": {
3354
- "$ref": "#/$defs/iface-link_master"
3355
- },
3356
- "mtu": {
3357
- "$ref": "#/$defs/iface-link_mtu"
3358
- },
3359
- "txqlen": {
3360
- "$ref": "#/$defs/iface-link_txqlen"
3361
- },
3362
- "ifalias": {
3363
- "$ref": "#/$defs/iface-link_ifalias"
3364
- },
3365
- "ip6gre_remote": {
3366
- "$ref": "#/$defs/iface-link_tun-remote6"
3367
- },
3368
- "ip6gre_local": {
3369
- "$ref": "#/$defs/iface-link_tun-local6"
3370
- },
3371
- "ip6gre_link": {
3372
- "$ref": "#/$defs/iface-link_tun-dev"
3373
- }
3374
- }
3375
- },
3376
- {
3377
- "description": "GENEVE interface over IPv4",
3378
- "additionalProperties": false,
3379
- "required": [
3380
- "kind",
3381
- "geneve_id",
3382
- "geneve_remote"
3383
- ],
3384
- "properties": {
3385
- "kind": {
3386
- "const": "geneve",
3387
- "description": "link type"
3388
- },
3389
- "address": {
3390
- "$ref": "#/$defs/iface-link_address"
3391
- },
3392
- "bind_netns": {
3393
- "$ref": "#/$defs/iface-link_bind-netns"
3394
- },
3395
- "group": {
3396
- "$ref": "#/$defs/iface-link_group"
3397
- },
3398
- "state": {
3399
- "$ref": "#/$defs/iface-link_state"
3400
- },
3401
- "master": {
3402
- "$ref": "#/$defs/iface-link_master"
3403
- },
3404
- "mtu": {
3405
- "$ref": "#/$defs/iface-link_mtu"
3406
- },
3407
- "txqlen": {
3408
- "$ref": "#/$defs/iface-link_txqlen"
3409
- },
3410
- "ifalias": {
3411
- "$ref": "#/$defs/iface-link_ifalias"
3412
- },
3413
- "geneve_id": {
3414
- "type": [
3415
- "integer"
3416
- ],
3417
- "minimum": 0,
3418
- "maximum": 16777215,
3419
- "description": "specifies the VNI to use"
3420
- },
3421
- "geneve_remote": {
3422
- "$ref": "#/$defs/iface-link_tun-remote4"
3423
- }
3424
- }
3425
- },
3426
- {
3427
- "description": "GENEVE interface over IPv6",
3428
- "additionalProperties": false,
3429
- "required": [
3430
- "kind",
3431
- "geneve_id",
3432
- "geneve_remote6"
3433
- ],
3434
- "properties": {
3435
- "kind": {
3436
- "const": "geneve",
3437
- "description": "link type"
3438
- },
3439
- "address": {
3440
- "$ref": "#/$defs/iface-link_address"
3441
- },
3442
- "bind_netns": {
3443
- "$ref": "#/$defs/iface-link_bind-netns"
3444
- },
3445
- "group": {
3446
- "$ref": "#/$defs/iface-link_group"
3447
- },
3448
- "state": {
3449
- "$ref": "#/$defs/iface-link_state"
3450
- },
3451
- "master": {
3452
- "$ref": "#/$defs/iface-link_master"
3453
- },
3454
- "mtu": {
3455
- "$ref": "#/$defs/iface-link_mtu"
3456
- },
3457
- "txqlen": {
3458
- "$ref": "#/$defs/iface-link_txqlen"
3459
- },
3460
- "ifalias": {
3461
- "$ref": "#/$defs/iface-link_ifalias"
3462
- },
3463
- "geneve_id": {
3464
- "type": [
3465
- "integer"
3466
- ],
3467
- "minimum": 0,
3468
- "maximum": 16777215,
3469
- "description": "specifies the VNI to use"
3470
- },
3471
- "geneve_remote6": {
3472
- "$ref": "#/$defs/iface-link_tun-remote6"
3473
- }
3474
- }
3475
- },
3476
- {
3477
- "description": "WireGuard interface; WireGuard settings can be configured using a `wireguard` block",
3478
- "required": [
3479
- "kind"
3480
- ],
3481
- "additionalProperties": false,
3482
- "properties": {
3483
- "kind": {
3484
- "const": "wireguard",
3485
- "description": "link type"
3486
- },
3487
- "address": {
3488
- "$ref": "#/$defs/iface-link_address"
3489
- },
3490
- "bind_netns": {
3491
- "$ref": "#/$defs/iface-link_bind-netns"
3492
- },
3493
- "group": {
3494
- "$ref": "#/$defs/iface-link_group"
3495
- },
3496
- "state": {
3497
- "$ref": "#/$defs/iface-link_state"
3498
- },
3499
- "master": {
3500
- "$ref": "#/$defs/iface-link_master"
3501
- },
3502
- "mtu": {
3503
- "$ref": "#/$defs/iface-link_mtu"
3504
- },
3505
- "txqlen": {
3506
- "$ref": "#/$defs/iface-link_txqlen"
3507
- },
3508
- "ifalias": {
3509
- "$ref": "#/$defs/iface-link_ifalias"
3510
- }
3511
- }
3512
- },
3513
- {
3514
- "description": "XFRM interface",
3515
- "required": [
3516
- "kind",
3517
- "xfrm_if_id"
3518
- ],
3519
- "additionalProperties": false,
3520
- "properties": {
3521
- "kind": {
3522
- "const": "xfrm",
3523
- "description": "link type"
3524
- },
3525
- "address": {
3526
- "$ref": "#/$defs/iface-link_address"
3527
- },
3528
- "bind_netns": {
3529
- "$ref": "#/$defs/iface-link_bind-netns"
3530
- },
3531
- "group": {
3532
- "$ref": "#/$defs/iface-link_group"
3533
- },
3534
- "state": {
3535
- "$ref": "#/$defs/iface-link_state"
3536
- },
3537
- "master": {
3538
- "$ref": "#/$defs/iface-link_master"
3539
- },
3540
- "mtu": {
3541
- "$ref": "#/$defs/iface-link_mtu"
3542
- },
3543
- "txqlen": {
3544
- "$ref": "#/$defs/iface-link_txqlen"
3545
- },
3546
- "ifalias": {
3547
- "$ref": "#/$defs/iface-link_ifalias"
3548
- },
3549
- "xfrm_link": {
3550
- "$ref": "#/$defs/iface-link_tun-dev",
3551
- "description": "underlying interface used to send and receive the transformed traffic"
3552
- },
3553
- "xfrm_if_id": {
3554
- "type": [
3555
- "integer"
3556
- ],
3557
- "minimum": 0,
3558
- "maximum": 4294967295,
3559
- "default": 0,
3560
- "description": "lookup key to match xfrm policies"
3561
- }
3562
- }
3563
- }
3564
- ]
3565
- },
3566
- "neighbours": {
3567
- "description": "static ARP or NDISC cache entries",
3568
- "type": "array",
3569
- "items": {
3570
- "type": "object",
3571
- "required": [
3572
- "dst"
3573
- ],
3574
- "additionalProperties": false,
3575
- "properties": {
3576
- "dst": {
3577
- "description": "protocol address of the neighbour",
3578
- "type": "string",
3579
- "format": "ipv4"
3580
- },
3581
- "lladdr": {
3582
- "description": "link layer address of the neighbour",
3583
- "$ref": "#/$defs/iface-link_address",
3584
- "default": null
3585
- }
3586
- }
3587
- }
3588
- },
3589
- "sysctl": {
3590
- "description": "interface sysctl settings",
3591
- "type": "object",
3592
- "additionalProperties": false,
3593
- "properties": {
3594
- "ipv4": {
3595
- "$ref": "#/$defs/iface-sysctl-ipv4"
3596
- },
3597
- "ipv6": {
3598
- "$ref": "#/$defs/iface-sysctl-ipv6"
3599
- },
3600
- "mpls": {
3601
- "$ref": "#/$defs/iface-sysctl-mpls-link"
3602
- }
3603
- }
3604
- },
3605
- "ethtool": {
3606
- "$ref": "#/$defs/iface-ethtool"
3607
- },
3608
- "cshaper": {
3609
- "description": "simple shaper setup based on the [cake](https://man7.org/linux/man-pages/man8/tc-cake.8.html) queue discipline; replaces any tc settings",
3610
- "type": "object",
3611
- "additionalProperties": false,
3612
- "properties": {
3613
- "ingress": {
3614
- "description": "target ingress bandwidth",
3615
- "type": "string",
3616
- "default": "unlimited"
3617
- },
3618
- "egress": {
3619
- "description": "target egress bandwidth",
3620
- "type": "string",
3621
- "default": "unlimited"
3622
- },
3623
- "profile": {
3624
- "description": "cshaper profile",
3625
- "type": "string",
3626
- "default": "default"
3627
- }
3628
- }
3629
- },
3630
- "tc": {
3631
- "description": "settings for traffic control",
3632
- "type": "object",
3633
- "additionalProperties": false,
3634
- "properties": {
3635
- "ingress": {
3636
- "description": "enable the ingress qdisc for policing and shaping in ingress",
3637
- "type": "boolean"
3638
- },
3639
- "qdisc": {
3640
- "description": "root queueing disciplines",
3641
- "$ref": "#/$defs/iface-tc_qdisc"
3642
- },
3643
- "filter": {
3644
- "description": "filter used by qdiscs",
3645
- "type": "array",
3646
- "items": {
3647
- "type": "object",
3648
- "required": [
3649
- "kind"
3650
- ],
3651
- "properties": {
3652
- "kind": {
3653
- "type": "string",
3654
- "description": "filter type",
3655
- "enum": [
3656
- "basic",
3657
- "flow",
3658
- "fw",
3659
- "matchall"
3660
- ]
3661
- }
3662
- },
3663
- "oneOf": [
3664
- {
3665
- "description": "[basic](https://man7.org/linux/man-pages/man8/tc-basic.8.html) - basic traffic control filter",
3666
- "additionalProperties": false,
3667
- "properties": {
3668
- "kind": {
3669
- "type": "string",
3670
- "enum": [
3671
- "basic"
3672
- ]
3673
- },
3674
- "protocol": {
3675
- "$ref": "#/$defs/iface-tc_protocol"
3676
- },
3677
- "prio": {
3678
- "$ref": "#/$defs/iface-tc_prio"
3679
- },
3680
- "action": {
3681
- "$ref": "#/$defs/iface-tc_action"
3682
- },
3683
- "match": {
3684
- "description": "match packets using the [extended match infrastructure](https://man7.org/linux/man-pages/man8/tc-ematch.8.html)",
3685
- "type": "object"
3686
- }
3687
- }
3688
- },
3689
- {
3690
- "description": "[flow](https://man7.org/linux/man-pages/man8/tc-flow.8.html) - flow based traffic control filter",
3691
- "properties": {
3692
- "kind": {
3693
- "type": "string",
3694
- "enum": [
3695
- "flow"
3696
- ]
3697
- },
3698
- "protocol": {
3699
- "$ref": "#/$defs/iface-tc_protocol"
3700
- },
3701
- "prio": {
3702
- "$ref": "#/$defs/iface-tc_prio"
3703
- },
3704
- "action": {
3705
- "$ref": "#/$defs/iface-tc_action"
3706
- },
3707
- "baseclass": {
3708
- "description": "offset for the class ID calculation",
3709
- "type": "integer",
3710
- "minimum": 0,
3711
- "maximum": 65535,
3712
- "default": 1
3713
- },
3714
- "divisor": {
3715
- "type": "integer",
3716
- "minimum": 0,
3717
- "maximum": 4294967295
3718
- },
3719
- "or": {
3720
- "type": "integer",
3721
- "minimum": 0,
3722
- "maximum": 4294967295
3723
- },
3724
- "and": {
3725
- "type": "integer",
3726
- "minimum": 0,
3727
- "maximum": 4294967295
3728
- },
3729
- "xor": {
3730
- "type": "integer",
3731
- "minimum": 0,
3732
- "maximum": 4294967295
3733
- },
3734
- "rshift": {
3735
- "type": "integer",
3736
- "minimum": 0,
3737
- "maximum": 4294967295
3738
- },
3739
- "addend": {
3740
- "type": "integer",
3741
- "minimum": 0,
3742
- "maximum": 4294967295
3743
- }
3744
- },
3745
- "oneOf": [
3746
- {
3747
- "required": [
3748
- "kind",
3749
- "mode",
3750
- "key"
3751
- ],
3752
- "properties": {
3753
- "mode": {
3754
- "description": "filter mode",
3755
- "type": "string",
3756
- "enum": [
3757
- "map"
3758
- ]
3759
- },
3760
- "key": {
3761
- "description": "map to class ID by key",
3762
- "type": "string",
3763
- "enum": [
3764
- "src",
3765
- "dst",
3766
- "proto",
3767
- "proto-src",
3768
- "proto-dst",
3769
- "iif",
3770
- "priority",
3771
- "mark",
3772
- "nfct",
3773
- "nfct-src",
3774
- "nfct-dst",
3775
- "nfct-proto-src",
3776
- "nfct-proto-dst",
3777
- "rt-classid",
3778
- "sk-uid",
3779
- "sk-gid",
3780
- "vlan-tag",
3781
- "rxhash"
3782
- ]
3783
- }
3784
- }
3785
- },
3786
- {
3787
- "required": [
3788
- "kind",
3789
- "mode",
3790
- "keys"
3791
- ],
3792
- "properties": {
3793
- "mode": {
3794
- "description": "filter mode",
3795
- "type": "string",
3796
- "enum": [
3797
- "hash"
3798
- ]
3799
- },
3800
- "keys": {
3801
- "description": "hash over keys for class ID calculation",
3802
- "type": "array",
3803
- "items": {
3804
- "type": "string",
3805
- "enum": [
3806
- "src",
3807
- "dst",
3808
- "proto",
3809
- "proto-src",
3810
- "proto-dst",
3811
- "iif",
3812
- "priority",
3813
- "mark",
3814
- "nfct",
3815
- "nfct-src",
3816
- "nfct-dst",
3817
- "nfct-proto-src",
3818
- "nfct-proto-dst",
3819
- "rt-classid",
3820
- "sk-uid",
3821
- "sk-gid",
3822
- "vlan-tag",
3823
- "rxhash"
3824
- ]
3825
- }
3826
- },
3827
- "perturb": {
3828
- "description": "rehashing interval (in seconds)",
3829
- "type": "integer",
3830
- "minimum": 0,
3831
- "maximum": 294967295
3832
- }
3833
- }
3834
- }
3835
- ]
3836
- },
3837
- {
3838
- "description": "[fw](https://man7.org/linux/man-pages/man8/tc-fw.8.html) - fwmark traffic control filter",
3839
- "additionalProperties": false,
3840
- "required": [
3841
- "kind",
3842
- "handle"
3843
- ],
3844
- "properties": {
3845
- "kind": {
3846
- "type": "string",
3847
- "enum": [
3848
- "fw"
3849
- ]
3850
- },
3851
- "protocol": {
3852
- "$ref": "#/$defs/iface-tc_protocol"
3853
- },
3854
- "prio": {
3855
- "$ref": "#/$defs/iface-tc_prio"
3856
- },
3857
- "action": {
3858
- "$ref": "#/$defs/iface-tc_action"
3859
- },
3860
- "handle": {
3861
- "description": "fwmark (iptables) to match",
3862
- "type": "integer",
3863
- "minimum": 0
3864
- }
3865
- }
3866
- },
3867
- {
3868
- "description": "[matchall](https://man7.org/linux/man-pages/man8/tc-matchall.8.html) - traffic control filter that matches every packet",
3869
- "additionalProperties": false,
3870
- "properties": {
3871
- "kind": {
3872
- "type": "string",
3873
- "enum": [
3874
- "matchall"
3875
- ]
3876
- },
3877
- "parent": {
3878
- "$ref": "#/$defs/iface-tc_qid"
3879
- },
3880
- "protocol": {
3881
- "$ref": "#/$defs/iface-tc_protocol"
3882
- },
3883
- "prio": {
3884
- "$ref": "#/$defs/iface-tc_prio"
3885
- },
3886
- "action": {
3887
- "$ref": "#/$defs/iface-tc_action"
3888
- },
3889
- "classid": {
3890
- "description": "push matching packets into class",
3891
- "type": "integer",
3892
- "minimum": 0,
3893
- "maximum": 4294967295
3894
- },
3895
- "flags": {
3896
- "description": "process flags (1: SKIP_HW, 2: SKIP_SW)",
3897
- "type": "integer",
3898
- "minimum": 0,
3899
- "maximum": 4294967295
3900
- }
3901
- }
3902
- }
3903
- ]
3904
- }
3905
- }
3906
- }
3907
- },
3908
- "wireguard": {
3909
- "description": "settings for WireGuard interfaces",
3910
- "type": "object",
3911
- "additionalProperties": false,
3912
- "required": [
3913
- "private_key"
3914
- ],
3915
- "properties": {
3916
- "private_key": {
3917
- "description": "local private key (consider to use the `!include` tag to read the key from file)",
3918
- "type": "string"
3919
- },
3920
- "listen_port": {
3921
- "description": "port for listening",
3922
- "type": "integer",
3923
- "minimum": 0,
3924
- "maximum": 65535
3925
- },
3926
- "fwmark": {
3927
- "description": "fwmark for outgoing packets",
3928
- "type": "integer",
3929
- "minimum": 0,
3930
- "maximum": 4294967295
3931
- },
3932
- "peers": {
3933
- "description": "list of peer definitions",
3934
- "type": "array",
3935
- "items": {
3936
- "type": "object",
3937
- "additionalProperties": false,
3938
- "required": [
3939
- "public_key"
3940
- ],
3941
- "properties": {
3942
- "public_key": {
3943
- "description": "the peer's public key",
3944
- "type": "string"
3945
- },
3946
- "preshared_key": {
3947
- "description": "preshared key for post-quantum resistance (consider to use the `!include` tag to read the key from file)",
3948
- "type": "string"
3949
- },
3950
- "endpoint": {
3951
- "description": "initial endpoint IP or hostname",
3952
- "type": "string"
3953
- },
3954
- "persistent_keepalive_interval": {
3955
- "description": "keepalive interval seconds",
3956
- "type": "integer",
3957
- "minimum": 0,
3958
- "maximum": 65535
3959
- },
3960
- "allowedips": {
3961
- "description": "list of prefixes in CIDR notation",
3962
- "type": "array",
3963
- "items": {
3964
- "type": "string"
3965
- }
3966
- }
3967
- }
3968
- }
3969
- }
3970
- }
3971
- },
3972
- "xdp": {
3973
- "description": "settings for XDP (\"eXpress Data Path\") BPF program",
3974
- "oneOf": [
3975
- {
3976
- "description": "remove attached XDP program",
3977
- "type": "boolean",
3978
- "enum": [
3979
- false
3980
- ]
3981
- },
3982
- {
3983
- "description": "attach already pinned XDP program",
3984
- "type": "object",
3985
- "additionalProperties": false,
3986
- "required": [
3987
- "pinned"
3988
- ],
3989
- "properties": {
3990
- "mode": {
3991
- "$ref": "#/$defs/xdp_mode"
3992
- },
3993
- "pinned": {
3994
- "description": "path to already pinned XDP program",
3995
- "type": "string",
3996
- "format": "^/sys/fs/bfd/."
3997
- }
3998
- }
3999
- },
4000
- {
4001
- "description": "BPF program from ifstate's bpf config section",
4002
- "type": "object",
4003
- "additionalProperties": false,
4004
- "required": [
4005
- "bpf"
4006
- ],
4007
- "properties": {
4008
- "mode": {
4009
- "$ref": "#/$defs/xdp_mode"
4010
- },
4011
- "bpf": {
4012
- "description": "BPF program (key in bpf config section)",
4013
- "type": "string"
4014
- }
4015
- }
4016
- }
4017
- ]
4018
- }
4019
- }
4020
- }
4021
- },
4022
- "routing": {
4023
- "type": "object",
4024
- "additionalProperties": false,
4025
- "properties": {
4026
- "routes": {
4027
- "type": "array",
4028
- "items": {
4029
- "type": "object",
4030
- "required": [
4031
- "to"
4032
- ],
4033
- "additionalProperties": false,
4034
- "properties": {
4035
- "type": {
4036
- "description": "the type of this route",
4037
- "type": [
4038
- "integer",
4039
- "string"
4040
- ],
4041
- "enum": [
4042
- "unicast",
4043
- "local",
4044
- "broadcast",
4045
- "anycast",
4046
- "multicast",
4047
- "blackhole",
4048
- "unreachable",
4049
- "prohibit",
4050
- "throw",
4051
- "nat",
4052
- "xresolve"
4053
- ],
4054
- "minimum": 1,
4055
- "maximum": 11,
4056
- "default": "unicast"
4057
- },
4058
- "dev": {
4059
- "description": "the output device name",
4060
- "type": [
4061
- "integer",
4062
- "string"
4063
- ]
4064
- },
4065
- "proto": {
4066
- "description": "the routing protool identifier of this route",
4067
- "type": [
4068
- "integer",
4069
- "string"
4070
- ],
4071
- "default": "boot"
4072
- },
4073
- "realm": {
4074
- "description": "the realm to which this route is assigned",
4075
- "type": [
4076
- "integer",
4077
- "string"
4078
- ]
4079
- },
4080
- "scope": {
4081
- "description": "the scope of the destinations covered by the route prefix",
4082
- "type": [
4083
- "integer",
4084
- "string"
4085
- ]
4086
- },
4087
- "table": {
4088
- "description": "the table to add this route to",
4089
- "type": [
4090
- "integer",
4091
- "string"
4092
- ],
4093
- "default": "main"
4094
- },
4095
- "to": {
4096
- "description": "the destination prefix of the route",
4097
- "type": "string"
4098
- },
4099
- "via": {
4100
- "description": "address of the nexthop router",
4101
- "type": "string",
4102
- "oneOf": [
4103
- {
4104
- "format": "ipv4"
4105
- },
4106
- {
4107
- "format": "ipv6"
4108
- }
4109
- ]
4110
- },
4111
- "vrrp": {
4112
- "$ref": "#/$defs/condition-vrrp"
4113
- },
4114
- "src": {
4115
- "description": "the source address to prefer",
4116
- "type": "string",
4117
- "oneOf": [
4118
- {
4119
- "format": "ipv4"
4120
- },
4121
- {
4122
- "format": "ipv6"
4123
- }
4124
- ]
4125
- },
4126
- "preference": {
4127
- "description": "preference of the route",
4128
- "type": "integer",
4129
- "minimum": 0,
4130
- "maximum": 4294967295,
4131
- "default": 0
4132
- }
4133
- }
4134
- }
4135
- },
4136
- "rules": {
4137
- "type": "array",
4138
- "items": {
4139
- "type": "object",
4140
- "if": {
4141
- "properties": {
4142
- "action": {
4143
- "const": "to_tbl"
4144
- }
4145
- }
4146
- },
4147
- "then": {
4148
- "required": [
4149
- "table",
4150
- "priority"
4151
- ]
4152
- },
4153
- "else": {
4154
- "required": [
4155
- "priority"
4156
- ]
4157
- },
4158
- "additionalProperties": false,
4159
- "properties": {
4160
- "action": {
4161
- "type": [
4162
- "integer",
4163
- "string"
4164
- ],
4165
- "description": "the type of this rule",
4166
- "enum": [
4167
- "to_tbl",
4168
- "blackhole",
4169
- "unreachable",
4170
- "prohibit"
4171
- ],
4172
- "default": "to_tbl"
4173
- },
4174
- "table": {
4175
- "type": [
4176
- "integer",
4177
- "string"
4178
- ],
4179
- "minimum": 0,
4180
- "maximum": 255
4181
- },
4182
- "priority": {
4183
- "type": "integer",
4184
- "description": "the priority of this rule",
4185
- "minimum": 0,
4186
- "maximum": 4294967295
4187
- },
4188
- "from": {
4189
- "type": "string",
4190
- "description": "select the source prefix to match"
4191
- },
4192
- "to": {
4193
- "type": "string",
4194
- "description": "select the destination prefix to match"
4195
- },
4196
- "iif": {
4197
- "type": "string",
4198
- "description": "select the incoming device to match"
4199
- },
4200
- "oif": {
4201
- "type": "string",
4202
- "description": "select the outgoing device to match"
4203
- },
4204
- "proto": {
4205
- "type": [
4206
- "integer",
4207
- "string"
4208
- ],
4209
- "default": "unspec",
4210
- "description": "routing protocol number (`/etc/iproute2/rt_protos`)"
4211
- },
4212
- "fwmark": {
4213
- "type": "integer",
4214
- "description": "select the *fwmark* value to match"
4215
- },
4216
- "ipproto": {
4217
- "type": [
4218
- "integer",
4219
- "string"
4220
- ],
4221
- "description": "select the ip protocol to match"
4222
- },
4223
- "vrrp": {
4224
- "$ref": "#/$defs/condition-vrrp"
4225
- }
4226
- }
4227
- }
4228
- }
4229
- }
4230
- },
4231
- "namespaces": {
4232
- "type": "object",
4233
- "additionalProperties": false,
4234
- "patternProperties": {
4235
- ".+": {
4236
- "type": "object",
4237
- "additionalProperties": false,
4238
- "required": [
4239
- "interfaces"
4240
- ],
4241
- "properties": {
4242
- "bpf": {
4243
- "$ref": "#/properties/bpf"
4244
- },
4245
- "options": {
4246
- "$ref": "#/properties/options"
4247
- },
4248
- "interfaces": {
4249
- "$ref": "#/properties/interfaces"
4250
- },
4251
- "routing": {
4252
- "$ref": "#/properties/routing"
4253
- }
4254
- }
4255
- }
4256
- }
4257
- }
4258
- }
4259
- }