master
json 340 lines 7.75 KB
Raw
1 # -*- Mode: Python -*-
2 # vim: filetype=python
3
4 ##
5 # ********************
6 # Rocker switch device
7 # ********************
8 ##
9
10 ##
11 # @RockerSwitch:
12 #
13 # Rocker switch information.
14 #
15 # @name: switch name
16 #
17 # @id: switch ID
18 #
19 # @ports: number of front-panel ports
20 #
21 # Since: 2.4
22 ##
23 { 'struct': 'RockerSwitch',
24 'data': { 'name': 'str', 'id': 'uint64', 'ports': 'uint32' } }
25
26 ##
27 # @query-rocker:
28 #
29 # Return rocker switch information.
30 #
31 # @name: switch name
32 #
33 # Since: 2.4
34 #
35 # .. qmp-example::
36 #
37 # -> { "execute": "query-rocker", "arguments": { "name": "sw1" } }
38 # <- { "return": {"name": "sw1", "ports": 2, "id": 1327446905938}}
39 ##
40 { 'command': 'query-rocker',
41 'data': { 'name': 'str' },
42 'returns': 'RockerSwitch' }
43
44 ##
45 # @RockerPortDuplex:
46 #
47 # An enumeration of port duplex states.
48 #
49 # @half: half duplex
50 #
51 # @full: full duplex
52 #
53 # Since: 2.4
54 ##
55 { 'enum': 'RockerPortDuplex', 'data': [ 'half', 'full' ] }
56
57 ##
58 # @RockerPortAutoneg:
59 #
60 # An enumeration of port autoneg states.
61 #
62 # @off: autoneg is off
63 #
64 # @on: autoneg is on
65 #
66 # Since: 2.4
67 ##
68 { 'enum': 'RockerPortAutoneg', 'data': [ 'off', 'on' ] }
69
70 ##
71 # @RockerPort:
72 #
73 # Rocker switch port information.
74 #
75 # @name: port name
76 #
77 # @enabled: port is enabled for I/O
78 #
79 # @link-up: physical link is UP on port
80 #
81 # @speed: port link speed in Mbps
82 #
83 # @duplex: port link duplex
84 #
85 # @autoneg: port link autoneg
86 #
87 # Since: 2.4
88 ##
89 { 'struct': 'RockerPort',
90 'data': { 'name': 'str', 'enabled': 'bool', 'link-up': 'bool',
91 'speed': 'uint32', 'duplex': 'RockerPortDuplex',
92 'autoneg': 'RockerPortAutoneg' } }
93
94 ##
95 # @query-rocker-ports:
96 #
97 # Return rocker switch port information.
98 #
99 # @name: port name
100 #
101 # Since: 2.4
102 #
103 # .. qmp-example::
104 #
105 # -> { "execute": "query-rocker-ports", "arguments": { "name": "sw1" } }
106 # <- { "return": [ {"duplex": "full", "enabled": true, "name": "sw1.1",
107 # "autoneg": "off", "link-up": true, "speed": 10000},
108 # {"duplex": "full", "enabled": true, "name": "sw1.2",
109 # "autoneg": "off", "link-up": true, "speed": 10000}
110 # ]}
111 ##
112 { 'command': 'query-rocker-ports',
113 'data': { 'name': 'str' },
114 'returns': ['RockerPort'] }
115
116 ##
117 # @RockerOfDpaFlowKey:
118 #
119 # Rocker switch OF-DPA flow key
120 #
121 # @priority: key priority, 0 being lowest priority
122 #
123 # @tbl-id: flow table ID
124 #
125 # @in-pport: physical input port
126 #
127 # @tunnel-id: tunnel ID
128 #
129 # @vlan-id: VLAN ID
130 #
131 # @eth-type: Ethernet header type
132 #
133 # @eth-src: Ethernet header source MAC address
134 #
135 # @eth-dst: Ethernet header destination MAC address
136 #
137 # @ip-proto: IP Header protocol field
138 #
139 # @ip-tos: IP header TOS field
140 #
141 # @ip-dst: IP header destination address
142 #
143 # .. note:: Optional members may or may not appear in the flow key
144 # depending if they're relevant to the flow key.
145 #
146 # Since: 2.4
147 ##
148 { 'struct': 'RockerOfDpaFlowKey',
149 'data' : { 'priority': 'uint32', 'tbl-id': 'uint32', '*in-pport': 'uint32',
150 '*tunnel-id': 'uint32', '*vlan-id': 'uint16',
151 '*eth-type': 'uint16', '*eth-src': 'str', '*eth-dst': 'str',
152 '*ip-proto': 'uint8', '*ip-tos': 'uint8', '*ip-dst': 'str' } }
153
154 ##
155 # @RockerOfDpaFlowMask:
156 #
157 # Rocker switch OF-DPA flow mask
158 #
159 # @in-pport: physical input port
160 #
161 # @tunnel-id: tunnel ID
162 #
163 # @vlan-id: VLAN ID
164 #
165 # @eth-src: Ethernet header source MAC address
166 #
167 # @eth-dst: Ethernet header destination MAC address
168 #
169 # @ip-proto: IP Header protocol field
170 #
171 # @ip-tos: IP header TOS field
172 #
173 # .. note:: Optional members may or may not appear in the flow mask
174 # depending if they're relevant to the flow mask.
175 #
176 # Since: 2.4
177 ##
178 { 'struct': 'RockerOfDpaFlowMask',
179 'data' : { '*in-pport': 'uint32', '*tunnel-id': 'uint32',
180 '*vlan-id': 'uint16', '*eth-src': 'str', '*eth-dst': 'str',
181 '*ip-proto': 'uint8', '*ip-tos': 'uint8' } }
182
183 ##
184 # @RockerOfDpaFlowAction:
185 #
186 # Rocker switch OF-DPA flow action
187 #
188 # @goto-tbl: next table ID
189 #
190 # @group-id: group ID
191 #
192 # @tunnel-lport: tunnel logical port ID
193 #
194 # @vlan-id: VLAN ID
195 #
196 # @new-vlan-id: new VLAN ID
197 #
198 # @out-pport: physical output port
199 #
200 # .. note:: Optional members may or may not appear in the flow action
201 # depending if they're relevant to the flow action.
202 #
203 # Since: 2.4
204 ##
205 { 'struct': 'RockerOfDpaFlowAction',
206 'data' : { '*goto-tbl': 'uint32', '*group-id': 'uint32',
207 '*tunnel-lport': 'uint32', '*vlan-id': 'uint16',
208 '*new-vlan-id': 'uint16', '*out-pport': 'uint32' } }
209
210 ##
211 # @RockerOfDpaFlow:
212 #
213 # Rocker switch OF-DPA flow
214 #
215 # @cookie: flow unique cookie ID
216 #
217 # @hits: count of matches (hits) on flow
218 #
219 # @key: flow key
220 #
221 # @mask: flow mask
222 #
223 # @action: flow action
224 #
225 # Since: 2.4
226 ##
227 { 'struct': 'RockerOfDpaFlow',
228 'data': { 'cookie': 'uint64', 'hits': 'uint64', 'key': 'RockerOfDpaFlowKey',
229 'mask': 'RockerOfDpaFlowMask', 'action': 'RockerOfDpaFlowAction' } }
230
231 ##
232 # @query-rocker-of-dpa-flows:
233 #
234 # Return rocker OF-DPA flow information.
235 #
236 # @name: switch name
237 #
238 # @tbl-id: flow table ID. If tbl-id is not specified, returns flow
239 # information for all tables.
240 #
241 # Returns: rocker OF-DPA flow information
242 #
243 # Since: 2.4
244 #
245 # .. qmp-example::
246 #
247 # -> { "execute": "query-rocker-of-dpa-flows",
248 # "arguments": { "name": "sw1" } }
249 # <- { "return": [ {"key": {"in-pport": 0, "priority": 1, "tbl-id": 0},
250 # "hits": 138,
251 # "cookie": 0,
252 # "action": {"goto-tbl": 10},
253 # "mask": {"in-pport": 4294901760}
254 # },
255 # ...
256 # ]}
257 ##
258 { 'command': 'query-rocker-of-dpa-flows',
259 'data': { 'name': 'str', '*tbl-id': 'uint32' },
260 'returns': ['RockerOfDpaFlow'] }
261
262 ##
263 # @RockerOfDpaGroup:
264 #
265 # Rocker switch OF-DPA group
266 #
267 # @id: group unique ID
268 #
269 # @type: group type
270 #
271 # @vlan-id: VLAN ID
272 #
273 # @pport: physical port number
274 #
275 # @index: group index, unique with group type
276 #
277 # @out-pport: output physical port number
278 #
279 # @group-id: next group ID
280 #
281 # @set-vlan-id: VLAN ID to set
282 #
283 # @pop-vlan: pop VLAN headr from packet
284 #
285 # @group-ids: list of next group IDs
286 #
287 # @set-eth-src: set source MAC address in Ethernet header
288 #
289 # @set-eth-dst: set destination MAC address in Ethernet header
290 #
291 # @ttl-check: perform TTL check
292 #
293 # .. note:: Optional members may or may not appear in the group
294 # depending if they're relevant to the group type.
295 #
296 # Since: 2.4
297 ##
298 { 'struct': 'RockerOfDpaGroup',
299 'data': { 'id': 'uint32', 'type': 'uint8', '*vlan-id': 'uint16',
300 '*pport': 'uint32', '*index': 'uint32', '*out-pport': 'uint32',
301 '*group-id': 'uint32', '*set-vlan-id': 'uint16',
302 '*pop-vlan': 'uint8', '*group-ids': ['uint32'],
303 '*set-eth-src': 'str', '*set-eth-dst': 'str',
304 '*ttl-check': 'uint8' } }
305
306 ##
307 # @query-rocker-of-dpa-groups:
308 #
309 # Return rocker OF-DPA group information.
310 #
311 # @name: switch name
312 #
313 # @type: group type. If type is not specified, returns group
314 # information for all group types.
315 #
316 # Returns: rocker OF-DPA group information
317 #
318 # Since: 2.4
319 #
320 # .. qmp-example::
321 #
322 # -> { "execute": "query-rocker-of-dpa-groups",
323 # "arguments": { "name": "sw1" } }
324 # <- { "return": [ {"type": 0, "out-pport": 2,
325 # "pport": 2, "vlan-id": 3841,
326 # "pop-vlan": 1, "id": 251723778},
327 # {"type": 0, "out-pport": 0,
328 # "pport": 0, "vlan-id": 3841,
329 # "pop-vlan": 1, "id": 251723776},
330 # {"type": 0, "out-pport": 1,
331 # "pport": 1, "vlan-id": 3840,
332 # "pop-vlan": 1, "id": 251658241},
333 # {"type": 0, "out-pport": 0,
334 # "pport": 0, "vlan-id": 3840,
335 # "pop-vlan": 1, "id": 251658240}
336 # ]}
337 ##
338 { 'command': 'query-rocker-of-dpa-groups',
339 'data': { 'name': 'str', '*type': 'uint8' },
340 'returns': ['RockerOfDpaGroup'] }