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