1# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2
3name: fou
4
5protocol: genetlink-legacy
6
7doc: |
8  Foo-over-UDP.
9
10c-family-name: fou-genl-name
11c-version-name: fou-genl-version
12max-by-define: true
13kernel-policy: global
14
15definitions:
16  -
17    type: enum
18    name: encap_type
19    name-prefix: fou-encap-
20    enum-name:
21    entries: [ unspec, direct, gue ]
22
23attribute-sets:
24  -
25    name: fou
26    name-prefix: fou-attr-
27    attributes:
28      -
29        name: unspec
30        type: unused
31        value: 0
32      -
33        name: port
34        type: u16
35        byte-order: big-endian
36      -
37        name: af
38        type: u8
39      -
40        name: ipproto
41        type: u8
42      -
43        name: type
44        type: u8
45      -
46        name: remcsum_nopartial
47        type: flag
48      -
49        name: local_v4
50        type: u32
51      -
52        name: local_v6
53        type: binary
54        checks:
55          min-len: 16
56      -
57        name: peer_v4
58        type: u32
59      -
60        name: peer_v6
61        type: binary
62        checks:
63          min-len: 16
64      -
65        name: peer_port
66        type: u16
67        byte-order: big-endian
68      -
69        name: ifindex
70        type: s32
71
72operations:
73  list:
74    -
75      name: unspec
76      doc: unused
77      value: 0
78
79    -
80      name: add
81      doc: Add port.
82      attribute-set: fou
83
84      dont-validate: [ strict, dump ]
85      flags: [ admin-perm ]
86
87      do:
88        request: &all_attrs
89          attributes:
90            - port
91            - ipproto
92            - type
93            - remcsum_nopartial
94            - local_v4
95            - peer_v4
96            - local_v6
97            - peer_v6
98            - peer_port
99            - ifindex
100
101    -
102      name: del
103      doc: Delete port.
104      attribute-set: fou
105
106      dont-validate: [ strict, dump ]
107      flags: [ admin-perm ]
108
109      do:
110        request:  &select_attrs
111          attributes:
112          - af
113          - ifindex
114          - port
115          - peer_port
116          - local_v4
117          - peer_v4
118          - local_v6
119          - peer_v6
120
121    -
122      name: get
123      doc: Get tunnel info.
124      attribute-set: fou
125      dont-validate: [ strict, dump ]
126
127      do:
128        request: *select_attrs
129        reply: *all_attrs
130
131      dump:
132        reply: *all_attrs
133