xref: /openbmc/qemu/qapi/rocker.json (revision 9247378df2b16f427ae858787f84a55b073446b1)
18c0aa613SMarkus Armbruster# -*- Mode: Python -*-
2f7160f32SAndrea Bolognani# vim: filetype=python
38c0aa613SMarkus Armbruster
4fafa4d50SScott Feldman##
5d3a48372SMarc-André Lureau# = Rocker switch device
6d3a48372SMarc-André Lureau##
7d3a48372SMarc-André Lureau
8d3a48372SMarc-André Lureau##
94d5c8bc4SMarc-André Lureau# @RockerSwitch:
10fafa4d50SScott Feldman#
11fafa4d50SScott Feldman# Rocker switch information.
12fafa4d50SScott Feldman#
13fafa4d50SScott Feldman# @name: switch name
14fafa4d50SScott Feldman#
15fafa4d50SScott Feldman# @id: switch ID
16fafa4d50SScott Feldman#
17fafa4d50SScott Feldman# @ports: number of front-panel ports
18fafa4d50SScott Feldman#
19fafa4d50SScott Feldman# Since: 2.4
20fafa4d50SScott Feldman##
21fafa4d50SScott Feldman{ 'struct': 'RockerSwitch',
22fafa4d50SScott Feldman  'data': { 'name': 'str', 'id': 'uint64', 'ports': 'uint32' } }
23fafa4d50SScott Feldman
24fafa4d50SScott Feldman##
25fafa4d50SScott Feldman# @query-rocker:
26fafa4d50SScott Feldman#
27fafa4d50SScott Feldman# Return rocker switch information.
28fafa4d50SScott Feldman#
29*c91f44ffSMarkus Armbruster# @name: switch name
30*c91f44ffSMarkus Armbruster#
31fafa4d50SScott Feldman# Returns: @Rocker information
32fafa4d50SScott Feldman#
33fafa4d50SScott Feldman# Since: 2.4
34a35c33f0SMarc-André Lureau#
3514b48aaaSJohn Snow# .. qmp-example::
36a35c33f0SMarc-André Lureau#
37a35c33f0SMarc-André Lureau#     -> { "execute": "query-rocker", "arguments": { "name": "sw1" } }
38a35c33f0SMarc-André Lureau#     <- { "return": {"name": "sw1", "ports": 2, "id": 1327446905938}}
39fafa4d50SScott Feldman##
40fafa4d50SScott Feldman{ 'command': 'query-rocker',
41fafa4d50SScott Feldman  'data': { 'name': 'str' },
42fafa4d50SScott Feldman  'returns': 'RockerSwitch' }
43fafa4d50SScott Feldman
44fafa4d50SScott Feldman##
45fafa4d50SScott Feldman# @RockerPortDuplex:
46fafa4d50SScott Feldman#
4724c32ed3SStefan Weil# An enumeration of port duplex states.
48fafa4d50SScott Feldman#
49fafa4d50SScott Feldman# @half: half duplex
50fafa4d50SScott Feldman#
51fafa4d50SScott Feldman# @full: full duplex
52fafa4d50SScott Feldman#
53fafa4d50SScott Feldman# Since: 2.4
54fafa4d50SScott Feldman##
55fafa4d50SScott Feldman{ 'enum': 'RockerPortDuplex', 'data': [ 'half', 'full' ] }
56fafa4d50SScott Feldman
57fafa4d50SScott Feldman##
58fafa4d50SScott Feldman# @RockerPortAutoneg:
59fafa4d50SScott Feldman#
6024c32ed3SStefan Weil# An enumeration of port autoneg states.
61fafa4d50SScott Feldman#
62fafa4d50SScott Feldman# @off: autoneg is off
63fafa4d50SScott Feldman#
64fafa4d50SScott Feldman# @on: autoneg is on
65fafa4d50SScott Feldman#
66fafa4d50SScott Feldman# Since: 2.4
67fafa4d50SScott Feldman##
68fafa4d50SScott Feldman{ 'enum': 'RockerPortAutoneg', 'data': [ 'off', 'on' ] }
69fafa4d50SScott Feldman
70fafa4d50SScott Feldman##
71fafa4d50SScott Feldman# @RockerPort:
72fafa4d50SScott Feldman#
73fafa4d50SScott Feldman# Rocker switch port information.
74fafa4d50SScott Feldman#
75fafa4d50SScott Feldman# @name: port name
76fafa4d50SScott Feldman#
77fafa4d50SScott Feldman# @enabled: port is enabled for I/O
78fafa4d50SScott Feldman#
79fafa4d50SScott Feldman# @link-up: physical link is UP on port
80fafa4d50SScott Feldman#
81fafa4d50SScott Feldman# @speed: port link speed in Mbps
82fafa4d50SScott Feldman#
83fafa4d50SScott Feldman# @duplex: port link duplex
84fafa4d50SScott Feldman#
85fafa4d50SScott Feldman# @autoneg: port link autoneg
86fafa4d50SScott Feldman#
87fafa4d50SScott Feldman# Since: 2.4
88fafa4d50SScott Feldman##
89fafa4d50SScott Feldman{ 'struct': 'RockerPort',
90fafa4d50SScott Feldman  'data': { 'name': 'str', 'enabled': 'bool', 'link-up': 'bool',
91fafa4d50SScott Feldman            'speed': 'uint32', 'duplex': 'RockerPortDuplex',
92fafa4d50SScott Feldman            'autoneg': 'RockerPortAutoneg' } }
93fafa4d50SScott Feldman
94fafa4d50SScott Feldman##
95fafa4d50SScott Feldman# @query-rocker-ports:
96fafa4d50SScott Feldman#
977e20b169SMarc-André Lureau# Return rocker switch port information.
98fafa4d50SScott Feldman#
99*c91f44ffSMarkus Armbruster# @name: port name
100*c91f44ffSMarkus Armbruster#
1017e20b169SMarc-André Lureau# Returns: a list of @RockerPort information
102fafa4d50SScott Feldman#
103fafa4d50SScott Feldman# Since: 2.4
1047e20b169SMarc-André Lureau#
10514b48aaaSJohn Snow# .. qmp-example::
1067e20b169SMarc-André Lureau#
1077e20b169SMarc-André Lureau#     -> { "execute": "query-rocker-ports", "arguments": { "name": "sw1" } }
1087e20b169SMarc-André Lureau#     <- { "return": [ {"duplex": "full", "enabled": true, "name": "sw1.1",
1097e20b169SMarc-André Lureau#                       "autoneg": "off", "link-up": true, "speed": 10000},
1107e20b169SMarc-André Lureau#                      {"duplex": "full", "enabled": true, "name": "sw1.2",
1117e20b169SMarc-André Lureau#                       "autoneg": "off", "link-up": true, "speed": 10000}
1127e20b169SMarc-André Lureau#        ]}
113fafa4d50SScott Feldman##
114fafa4d50SScott Feldman{ 'command': 'query-rocker-ports',
115fafa4d50SScott Feldman  'data': { 'name': 'str' },
116fafa4d50SScott Feldman  'returns': ['RockerPort'] }
117fafa4d50SScott Feldman
118fafa4d50SScott Feldman##
119fafa4d50SScott Feldman# @RockerOfDpaFlowKey:
120fafa4d50SScott Feldman#
121fafa4d50SScott Feldman# Rocker switch OF-DPA flow key
122fafa4d50SScott Feldman#
123fafa4d50SScott Feldman# @priority: key priority, 0 being lowest priority
124fafa4d50SScott Feldman#
125fafa4d50SScott Feldman# @tbl-id: flow table ID
126fafa4d50SScott Feldman#
1271d8bda12SMarkus Armbruster# @in-pport: physical input port
128fafa4d50SScott Feldman#
1291d8bda12SMarkus Armbruster# @tunnel-id: tunnel ID
130fafa4d50SScott Feldman#
1311d8bda12SMarkus Armbruster# @vlan-id: VLAN ID
132fafa4d50SScott Feldman#
1331d8bda12SMarkus Armbruster# @eth-type: Ethernet header type
134fafa4d50SScott Feldman#
1351d8bda12SMarkus Armbruster# @eth-src: Ethernet header source MAC address
136fafa4d50SScott Feldman#
1371d8bda12SMarkus Armbruster# @eth-dst: Ethernet header destination MAC address
138fafa4d50SScott Feldman#
1391d8bda12SMarkus Armbruster# @ip-proto: IP Header protocol field
140fafa4d50SScott Feldman#
1411d8bda12SMarkus Armbruster# @ip-tos: IP header TOS field
142fafa4d50SScott Feldman#
1431d8bda12SMarkus Armbruster# @ip-dst: IP header destination address
144fafa4d50SScott Feldman#
145d461c279SJohn Snow# .. note:: Optional members may or may not appear in the flow key
1468c0aa613SMarkus Armbruster#    depending if they're relevant to the flow key.
147fafa4d50SScott Feldman#
148fafa4d50SScott Feldman# Since: 2.4
149fafa4d50SScott Feldman##
150fafa4d50SScott Feldman{ 'struct': 'RockerOfDpaFlowKey',
151fafa4d50SScott Feldman  'data' : { 'priority': 'uint32', 'tbl-id': 'uint32', '*in-pport': 'uint32',
152fafa4d50SScott Feldman             '*tunnel-id': 'uint32', '*vlan-id': 'uint16',
153fafa4d50SScott Feldman             '*eth-type': 'uint16', '*eth-src': 'str', '*eth-dst': 'str',
154fafa4d50SScott Feldman             '*ip-proto': 'uint8', '*ip-tos': 'uint8', '*ip-dst': 'str' } }
155fafa4d50SScott Feldman
156fafa4d50SScott Feldman##
157fafa4d50SScott Feldman# @RockerOfDpaFlowMask:
158fafa4d50SScott Feldman#
159fafa4d50SScott Feldman# Rocker switch OF-DPA flow mask
160fafa4d50SScott Feldman#
1611d8bda12SMarkus Armbruster# @in-pport: physical input port
162fafa4d50SScott Feldman#
1631d8bda12SMarkus Armbruster# @tunnel-id: tunnel ID
164fafa4d50SScott Feldman#
1651d8bda12SMarkus Armbruster# @vlan-id: VLAN ID
166fafa4d50SScott Feldman#
1671d8bda12SMarkus Armbruster# @eth-src: Ethernet header source MAC address
168fafa4d50SScott Feldman#
1691d8bda12SMarkus Armbruster# @eth-dst: Ethernet header destination MAC address
170fafa4d50SScott Feldman#
1711d8bda12SMarkus Armbruster# @ip-proto: IP Header protocol field
172fafa4d50SScott Feldman#
1731d8bda12SMarkus Armbruster# @ip-tos: IP header TOS field
174fafa4d50SScott Feldman#
175d461c279SJohn Snow# .. note:: Optional members may or may not appear in the flow mask
1768c0aa613SMarkus Armbruster#    depending if they're relevant to the flow mask.
177fafa4d50SScott Feldman#
178fafa4d50SScott Feldman# Since: 2.4
179fafa4d50SScott Feldman##
180fafa4d50SScott Feldman{ 'struct': 'RockerOfDpaFlowMask',
181fafa4d50SScott Feldman  'data' : { '*in-pport': 'uint32', '*tunnel-id': 'uint32',
182fafa4d50SScott Feldman             '*vlan-id': 'uint16', '*eth-src': 'str', '*eth-dst': 'str',
183fafa4d50SScott Feldman             '*ip-proto': 'uint8', '*ip-tos': 'uint8' } }
184fafa4d50SScott Feldman
185fafa4d50SScott Feldman##
186fafa4d50SScott Feldman# @RockerOfDpaFlowAction:
187fafa4d50SScott Feldman#
188fafa4d50SScott Feldman# Rocker switch OF-DPA flow action
189fafa4d50SScott Feldman#
1901d8bda12SMarkus Armbruster# @goto-tbl: next table ID
191fafa4d50SScott Feldman#
1921d8bda12SMarkus Armbruster# @group-id: group ID
193fafa4d50SScott Feldman#
1941d8bda12SMarkus Armbruster# @tunnel-lport: tunnel logical port ID
195fafa4d50SScott Feldman#
1961d8bda12SMarkus Armbruster# @vlan-id: VLAN ID
197fafa4d50SScott Feldman#
1981d8bda12SMarkus Armbruster# @new-vlan-id: new VLAN ID
199fafa4d50SScott Feldman#
2001d8bda12SMarkus Armbruster# @out-pport: physical output port
201fafa4d50SScott Feldman#
202d461c279SJohn Snow# .. note:: Optional members may or may not appear in the flow action
2038c0aa613SMarkus Armbruster#    depending if they're relevant to the flow action.
204fafa4d50SScott Feldman#
205fafa4d50SScott Feldman# Since: 2.4
206fafa4d50SScott Feldman##
207fafa4d50SScott Feldman{ 'struct': 'RockerOfDpaFlowAction',
208fafa4d50SScott Feldman  'data' : { '*goto-tbl': 'uint32', '*group-id': 'uint32',
209fafa4d50SScott Feldman             '*tunnel-lport': 'uint32', '*vlan-id': 'uint16',
210fafa4d50SScott Feldman             '*new-vlan-id': 'uint16', '*out-pport': 'uint32' } }
211fafa4d50SScott Feldman
212fafa4d50SScott Feldman##
213fafa4d50SScott Feldman# @RockerOfDpaFlow:
214fafa4d50SScott Feldman#
215fafa4d50SScott Feldman# Rocker switch OF-DPA flow
216fafa4d50SScott Feldman#
217fafa4d50SScott Feldman# @cookie: flow unique cookie ID
218fafa4d50SScott Feldman#
219fafa4d50SScott Feldman# @hits: count of matches (hits) on flow
220fafa4d50SScott Feldman#
221fafa4d50SScott Feldman# @key: flow key
222fafa4d50SScott Feldman#
223fafa4d50SScott Feldman# @mask: flow mask
224fafa4d50SScott Feldman#
225fafa4d50SScott Feldman# @action: flow action
226fafa4d50SScott Feldman#
227fafa4d50SScott Feldman# Since: 2.4
228fafa4d50SScott Feldman##
229fafa4d50SScott Feldman{ 'struct': 'RockerOfDpaFlow',
230fafa4d50SScott Feldman  'data': { 'cookie': 'uint64', 'hits': 'uint64', 'key': 'RockerOfDpaFlowKey',
231fafa4d50SScott Feldman            'mask': 'RockerOfDpaFlowMask', 'action': 'RockerOfDpaFlowAction' } }
232fafa4d50SScott Feldman
233fafa4d50SScott Feldman##
234fafa4d50SScott Feldman# @query-rocker-of-dpa-flows:
235fafa4d50SScott Feldman#
236fafa4d50SScott Feldman# Return rocker OF-DPA flow information.
237fafa4d50SScott Feldman#
238fafa4d50SScott Feldman# @name: switch name
239fafa4d50SScott Feldman#
240a937b6aaSMarkus Armbruster# @tbl-id: flow table ID.  If tbl-id is not specified, returns flow
241a937b6aaSMarkus Armbruster#     information for all tables.
242fafa4d50SScott Feldman#
243435fcb29SMarc-André Lureau# Returns: rocker OF-DPA flow information
244fafa4d50SScott Feldman#
245fafa4d50SScott Feldman# Since: 2.4
246435fcb29SMarc-André Lureau#
24714b48aaaSJohn Snow# .. qmp-example::
248435fcb29SMarc-André Lureau#
249435fcb29SMarc-André Lureau#     -> { "execute": "query-rocker-of-dpa-flows",
250435fcb29SMarc-André Lureau#          "arguments": { "name": "sw1" } }
251435fcb29SMarc-André Lureau#     <- { "return": [ {"key": {"in-pport": 0, "priority": 1, "tbl-id": 0},
252435fcb29SMarc-André Lureau#                       "hits": 138,
253435fcb29SMarc-André Lureau#                       "cookie": 0,
254435fcb29SMarc-André Lureau#                       "action": {"goto-tbl": 10},
255435fcb29SMarc-André Lureau#                       "mask": {"in-pport": 4294901760}
256435fcb29SMarc-André Lureau#                      },
2579f2b8488SJohn Snow#                      {...},
258435fcb29SMarc-André Lureau#        ]}
259fafa4d50SScott Feldman##
260fafa4d50SScott Feldman{ 'command': 'query-rocker-of-dpa-flows',
261fafa4d50SScott Feldman  'data': { 'name': 'str', '*tbl-id': 'uint32' },
262fafa4d50SScott Feldman  'returns': ['RockerOfDpaFlow'] }
263fafa4d50SScott Feldman
264fafa4d50SScott Feldman##
265fafa4d50SScott Feldman# @RockerOfDpaGroup:
266fafa4d50SScott Feldman#
267fafa4d50SScott Feldman# Rocker switch OF-DPA group
268fafa4d50SScott Feldman#
269fafa4d50SScott Feldman# @id: group unique ID
270fafa4d50SScott Feldman#
271fafa4d50SScott Feldman# @type: group type
272fafa4d50SScott Feldman#
2731d8bda12SMarkus Armbruster# @vlan-id: VLAN ID
274fafa4d50SScott Feldman#
2751d8bda12SMarkus Armbruster# @pport: physical port number
276fafa4d50SScott Feldman#
2771d8bda12SMarkus Armbruster# @index: group index, unique with group type
278fafa4d50SScott Feldman#
2791d8bda12SMarkus Armbruster# @out-pport: output physical port number
280fafa4d50SScott Feldman#
2811d8bda12SMarkus Armbruster# @group-id: next group ID
282fafa4d50SScott Feldman#
2831d8bda12SMarkus Armbruster# @set-vlan-id: VLAN ID to set
284fafa4d50SScott Feldman#
2851d8bda12SMarkus Armbruster# @pop-vlan: pop VLAN headr from packet
286fafa4d50SScott Feldman#
2871d8bda12SMarkus Armbruster# @group-ids: list of next group IDs
288fafa4d50SScott Feldman#
2891d8bda12SMarkus Armbruster# @set-eth-src: set source MAC address in Ethernet header
290fafa4d50SScott Feldman#
2911d8bda12SMarkus Armbruster# @set-eth-dst: set destination MAC address in Ethernet header
292fafa4d50SScott Feldman#
2931d8bda12SMarkus Armbruster# @ttl-check: perform TTL check
294fafa4d50SScott Feldman#
29501bed0ffSMarkus Armbruster# .. note:: Optional members may or may not appear in the group
29601bed0ffSMarkus Armbruster#    depending if they're relevant to the group type.
297fafa4d50SScott Feldman#
298fafa4d50SScott Feldman# Since: 2.4
299fafa4d50SScott Feldman##
300fafa4d50SScott Feldman{ 'struct': 'RockerOfDpaGroup',
301fafa4d50SScott Feldman  'data': { 'id': 'uint32',  'type': 'uint8', '*vlan-id': 'uint16',
302fafa4d50SScott Feldman            '*pport': 'uint32', '*index': 'uint32', '*out-pport': 'uint32',
303fafa4d50SScott Feldman            '*group-id': 'uint32', '*set-vlan-id': 'uint16',
304fafa4d50SScott Feldman            '*pop-vlan': 'uint8', '*group-ids': ['uint32'],
305fafa4d50SScott Feldman            '*set-eth-src': 'str', '*set-eth-dst': 'str',
306fafa4d50SScott Feldman            '*ttl-check': 'uint8' } }
307fafa4d50SScott Feldman
308fafa4d50SScott Feldman##
309fafa4d50SScott Feldman# @query-rocker-of-dpa-groups:
310fafa4d50SScott Feldman#
311fafa4d50SScott Feldman# Return rocker OF-DPA group information.
312fafa4d50SScott Feldman#
313fafa4d50SScott Feldman# @name: switch name
314fafa4d50SScott Feldman#
315a937b6aaSMarkus Armbruster# @type: group type.  If type is not specified, returns group
316a937b6aaSMarkus Armbruster#     information for all group types.
317fafa4d50SScott Feldman#
3189389a4e3SMarc-André Lureau# Returns: rocker OF-DPA group information
319fafa4d50SScott Feldman#
320fafa4d50SScott Feldman# Since: 2.4
3219389a4e3SMarc-André Lureau#
32214b48aaaSJohn Snow# .. qmp-example::
3239389a4e3SMarc-André Lureau#
3249389a4e3SMarc-André Lureau#     -> { "execute": "query-rocker-of-dpa-groups",
3259389a4e3SMarc-André Lureau#          "arguments": { "name": "sw1" } }
3269389a4e3SMarc-André Lureau#     <- { "return": [ {"type": 0, "out-pport": 2,
3279389a4e3SMarc-André Lureau#                       "pport": 2, "vlan-id": 3841,
3289389a4e3SMarc-André Lureau#                       "pop-vlan": 1, "id": 251723778},
3299389a4e3SMarc-André Lureau#                      {"type": 0, "out-pport": 0,
3309389a4e3SMarc-André Lureau#                       "pport": 0, "vlan-id": 3841,
3319389a4e3SMarc-André Lureau#                       "pop-vlan": 1, "id": 251723776},
3329389a4e3SMarc-André Lureau#                      {"type": 0, "out-pport": 1,
3339389a4e3SMarc-André Lureau#                       "pport": 1, "vlan-id": 3840,
3349389a4e3SMarc-André Lureau#                       "pop-vlan": 1, "id": 251658241},
3359389a4e3SMarc-André Lureau#                      {"type": 0, "out-pport": 0,
3369389a4e3SMarc-André Lureau#                       "pport": 0, "vlan-id": 3840,
3379389a4e3SMarc-André Lureau#                       "pop-vlan": 1, "id": 251658240}
3389389a4e3SMarc-André Lureau#        ]}
339fafa4d50SScott Feldman##
340fafa4d50SScott Feldman{ 'command': 'query-rocker-of-dpa-groups',
341fafa4d50SScott Feldman  'data': { 'name': 'str', '*type': 'uint8' },
342fafa4d50SScott Feldman  'returns': ['RockerOfDpaGroup'] }
343