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