xref: /qemu/qapi/rocker.json (revision 27a4a30e)
1# -*- Mode: Python -*-
2
3##
4# = Rocker switch device
5##
6
7##
8# @RockerSwitch:
9#
10# Rocker switch information.
11#
12# @name: switch name
13#
14# @id: switch ID
15#
16# @ports: number of front-panel ports
17#
18# Since: 2.4
19##
20{ 'struct': 'RockerSwitch',
21  'data': { 'name': 'str', 'id': 'uint64', 'ports': 'uint32' } }
22
23##
24# @query-rocker:
25#
26# Return rocker switch information.
27#
28# Returns: @Rocker information
29#
30# Since: 2.4
31#
32# Example:
33#
34# -> { "execute": "query-rocker", "arguments": { "name": "sw1" } }
35# <- { "return": {"name": "sw1", "ports": 2, "id": 1327446905938}}
36#
37##
38{ 'command': 'query-rocker',
39  'data': { 'name': 'str' },
40  'returns': 'RockerSwitch' }
41
42##
43# @RockerPortDuplex:
44#
45# An eumeration of port duplex states.
46#
47# @half: half duplex
48#
49# @full: full duplex
50#
51# Since: 2.4
52##
53{ 'enum': 'RockerPortDuplex', 'data': [ 'half', 'full' ] }
54
55##
56# @RockerPortAutoneg:
57#
58# An eumeration of port autoneg states.
59#
60# @off: autoneg is off
61#
62# @on: autoneg is on
63#
64# Since: 2.4
65##
66{ 'enum': 'RockerPortAutoneg', 'data': [ 'off', 'on' ] }
67
68##
69# @RockerPort:
70#
71# Rocker switch port information.
72#
73# @name: port name
74#
75# @enabled: port is enabled for I/O
76#
77# @link-up: physical link is UP on port
78#
79# @speed: port link speed in Mbps
80#
81# @duplex: port link duplex
82#
83# @autoneg: port link autoneg
84#
85# Since: 2.4
86##
87{ 'struct': 'RockerPort',
88  'data': { 'name': 'str', 'enabled': 'bool', 'link-up': 'bool',
89            'speed': 'uint32', 'duplex': 'RockerPortDuplex',
90            'autoneg': 'RockerPortAutoneg' } }
91
92##
93# @query-rocker-ports:
94#
95# Return rocker switch port information.
96#
97# Returns: a list of @RockerPort information
98#
99# Since: 2.4
100#
101# Example:
102#
103# -> { "execute": "query-rocker-ports", "arguments": { "name": "sw1" } }
104# <- { "return": [ {"duplex": "full", "enabled": true, "name": "sw1.1",
105#                   "autoneg": "off", "link-up": true, "speed": 10000},
106#                  {"duplex": "full", "enabled": true, "name": "sw1.2",
107#                   "autoneg": "off", "link-up": true, "speed": 10000}
108#    ]}
109#
110##
111{ 'command': 'query-rocker-ports',
112  'data': { 'name': 'str' },
113  'returns': ['RockerPort'] }
114
115##
116# @RockerOfDpaFlowKey:
117#
118# Rocker switch OF-DPA flow key
119#
120# @priority: key priority, 0 being lowest priority
121#
122# @tbl-id: flow table ID
123#
124# @in-pport: physical input port
125#
126# @tunnel-id: tunnel ID
127#
128# @vlan-id: VLAN ID
129#
130# @eth-type: Ethernet header type
131#
132# @eth-src: Ethernet header source MAC address
133#
134# @eth-dst: Ethernet header destination MAC address
135#
136# @ip-proto: IP Header protocol field
137#
138# @ip-tos: IP header TOS field
139#
140# @ip-dst: IP header destination address
141#
142# Note: optional members may or may not appear in the flow key
143#       depending if they're relevant to the flow key.
144#
145# Since: 2.4
146##
147{ 'struct': 'RockerOfDpaFlowKey',
148  'data' : { 'priority': 'uint32', 'tbl-id': 'uint32', '*in-pport': 'uint32',
149             '*tunnel-id': 'uint32', '*vlan-id': 'uint16',
150             '*eth-type': 'uint16', '*eth-src': 'str', '*eth-dst': 'str',
151             '*ip-proto': 'uint8', '*ip-tos': 'uint8', '*ip-dst': 'str' } }
152
153##
154# @RockerOfDpaFlowMask:
155#
156# Rocker switch OF-DPA flow mask
157#
158# @in-pport: physical input port
159#
160# @tunnel-id: tunnel ID
161#
162# @vlan-id: VLAN ID
163#
164# @eth-src: Ethernet header source MAC address
165#
166# @eth-dst: Ethernet header destination MAC address
167#
168# @ip-proto: IP Header protocol field
169#
170# @ip-tos: IP header TOS field
171#
172# Note: optional members may or may not appear in the flow mask
173#       depending if they're relevant to the flow mask.
174#
175# Since: 2.4
176##
177{ 'struct': 'RockerOfDpaFlowMask',
178  'data' : { '*in-pport': 'uint32', '*tunnel-id': 'uint32',
179             '*vlan-id': 'uint16', '*eth-src': 'str', '*eth-dst': 'str',
180             '*ip-proto': 'uint8', '*ip-tos': 'uint8' } }
181
182##
183# @RockerOfDpaFlowAction:
184#
185# Rocker switch OF-DPA flow action
186#
187# @goto-tbl: next table ID
188#
189# @group-id: group ID
190#
191# @tunnel-lport: tunnel logical port ID
192#
193# @vlan-id: VLAN ID
194#
195# @new-vlan-id: new VLAN ID
196#
197# @out-pport: physical output port
198#
199# Note: optional members may or may not appear in the flow action
200#       depending if they're relevant to the flow action.
201#
202# Since: 2.4
203##
204{ 'struct': 'RockerOfDpaFlowAction',
205  'data' : { '*goto-tbl': 'uint32', '*group-id': 'uint32',
206             '*tunnel-lport': 'uint32', '*vlan-id': 'uint16',
207             '*new-vlan-id': 'uint16', '*out-pport': 'uint32' } }
208
209##
210# @RockerOfDpaFlow:
211#
212# Rocker switch OF-DPA flow
213#
214# @cookie: flow unique cookie ID
215#
216# @hits: count of matches (hits) on flow
217#
218# @key: flow key
219#
220# @mask: flow mask
221#
222# @action: flow action
223#
224# Since: 2.4
225##
226{ 'struct': 'RockerOfDpaFlow',
227  'data': { 'cookie': 'uint64', 'hits': 'uint64', 'key': 'RockerOfDpaFlowKey',
228            'mask': 'RockerOfDpaFlowMask', 'action': 'RockerOfDpaFlowAction' } }
229
230##
231# @query-rocker-of-dpa-flows:
232#
233# Return rocker OF-DPA flow information.
234#
235# @name: switch name
236#
237# @tbl-id: flow table ID.  If tbl-id is not specified, returns
238#          flow information for all tables.
239#
240# Returns: rocker OF-DPA flow information
241#
242# Since: 2.4
243#
244# Example:
245#
246# -> { "execute": "query-rocker-of-dpa-flows",
247#      "arguments": { "name": "sw1" } }
248# <- { "return": [ {"key": {"in-pport": 0, "priority": 1, "tbl-id": 0},
249#                   "hits": 138,
250#                   "cookie": 0,
251#                   "action": {"goto-tbl": 10},
252#                   "mask": {"in-pport": 4294901760}
253#                  },
254#                  {...more...},
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 depending
294#       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
314#        group information for all group types.
315#
316# Returns: rocker OF-DPA group information
317#
318# Since: 2.4
319#
320# 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##
339{ 'command': 'query-rocker-of-dpa-groups',
340  'data': { 'name': 'str', '*type': 'uint8' },
341  'returns': ['RockerOfDpaGroup'] }
342