| # -*- Mode: Python -*- | |
| # vim: filetype=python | |
| ## | |
| # ******************** | |
| # Rocker switch device | |
| # ******************** | |
| ## | |
| ## | |
| # @RockerSwitch: | |
| # Rocker switch information. | |
| # | |
| # @name: switch name | |
| # | |
| # @id: switch ID | |
| # | |
| # @ports: number of front-panel ports | |
| # | |
| # Since: 2.4 | |
| ## | |
| { 'struct': 'RockerSwitch', | |
| 'data': { 'name': 'str', 'id': 'uint64', 'ports': 'uint32' } } | |
| ## | |
| # @query-rocker: | |
| # Return rocker switch information. | |
| # | |
| # @name: switch name | |
| # | |
| # Since: 2.4 | |
| # | |
| # .. qmp-example:: | |
| # | |
| # -> { "execute": "query-rocker", "arguments": { "name": "sw1" } } | |
| # <- { "return": {"name": "sw1", "ports": 2, "id": 1327446905938}} | |
| ## | |
| { 'command': 'query-rocker', | |
| 'data': { 'name': 'str' }, | |
| 'returns': 'RockerSwitch' } | |
| ## | |
| # @RockerPortDuplex: | |
| # An enumeration of port duplex states. | |
| # | |
| # @half: half duplex | |
| # | |
| # @full: full duplex | |
| # | |
| # Since: 2.4 | |
| ## | |
| { 'enum': 'RockerPortDuplex', 'data': [ 'half', 'full' ] } | |
| ## | |
| # @RockerPortAutoneg: | |
| # An enumeration of port autoneg states. | |
| # | |
| # @off: autoneg is off | |
| # | |
| # @on: autoneg is on | |
| # | |
| # Since: 2.4 | |
| ## | |
| { 'enum': 'RockerPortAutoneg', 'data': [ 'off', 'on' ] } | |
| ## | |
| # @RockerPort: | |
| # Rocker switch port information. | |
| # | |
| # @name: port name | |
| # | |
| # @enabled: port is enabled for I/O | |
| # | |
| # @link-up: physical link is UP on port | |
| # | |
| # @speed: port link speed in Mbps | |
| # | |
| # @duplex: port link duplex | |
| # | |
| # @autoneg: port link autoneg | |
| # | |
| # Since: 2.4 | |
| ## | |
| { 'struct': 'RockerPort', | |
| 'data': { 'name': 'str', 'enabled': 'bool', 'link-up': 'bool', | |
| 'speed': 'uint32', 'duplex': 'RockerPortDuplex', | |
| 'autoneg': 'RockerPortAutoneg' } } | |
| ## | |
| # @query-rocker-ports: | |
| # Return rocker switch port information. | |
| # | |
| # @name: port name | |
| # | |
| # Since: 2.4 | |
| # | |
| # .. qmp-example:: | |
| # | |
| # -> { "execute": "query-rocker-ports", "arguments": { "name": "sw1" } } | |
| # <- { "return": [ {"duplex": "full", "enabled": true, "name": "sw1.1", | |
| # "autoneg": "off", "link-up": true, "speed": 10000}, | |
| # {"duplex": "full", "enabled": true, "name": "sw1.2", | |
| # "autoneg": "off", "link-up": true, "speed": 10000} | |
| # ]} | |
| ## | |
| { 'command': 'query-rocker-ports', | |
| 'data': { 'name': 'str' }, | |
| 'returns': ['RockerPort'] } | |
| ## | |
| # @RockerOfDpaFlowKey: | |
| # Rocker switch OF-DPA flow key | |
| # | |
| # @priority: key priority, 0 being lowest priority | |
| # | |
| # @tbl-id: flow table ID | |
| # | |
| # @in-pport: physical input port | |
| # | |
| # @tunnel-id: tunnel ID | |
| # | |
| # @vlan-id: VLAN ID | |
| # | |
| # @eth-type: Ethernet header type | |
| # | |
| # @eth-src: Ethernet header source MAC address | |
| # | |
| # @eth-dst: Ethernet header destination MAC address | |
| # | |
| # @ip-proto: IP Header protocol field | |
| # | |
| # @ip-tos: IP header TOS field | |
| # | |
| # @ip-dst: IP header destination address | |
| # | |
| # .. note:: Optional members may or may not appear in the flow key | |
| # depending if they're relevant to the flow key. | |
| # | |
| # Since: 2.4 | |
| ## | |
| { 'struct': 'RockerOfDpaFlowKey', | |
| 'data' : { 'priority': 'uint32', 'tbl-id': 'uint32', '*in-pport': 'uint32', | |
| '*tunnel-id': 'uint32', '*vlan-id': 'uint16', | |
| '*eth-type': 'uint16', '*eth-src': 'str', '*eth-dst': 'str', | |
| '*ip-proto': 'uint8', '*ip-tos': 'uint8', '*ip-dst': 'str' } } | |
| ## | |
| # @RockerOfDpaFlowMask: | |
| # Rocker switch OF-DPA flow mask | |
| # | |
| # @in-pport: physical input port | |
| # | |
| # @tunnel-id: tunnel ID | |
| # | |
| # @vlan-id: VLAN ID | |
| # | |
| # @eth-src: Ethernet header source MAC address | |
| # | |
| # @eth-dst: Ethernet header destination MAC address | |
| # | |
| # @ip-proto: IP Header protocol field | |
| # | |
| # @ip-tos: IP header TOS field | |
| # | |
| # .. note:: Optional members may or may not appear in the flow mask | |
| # depending if they're relevant to the flow mask. | |
| # | |
| # Since: 2.4 | |
| ## | |
| { 'struct': 'RockerOfDpaFlowMask', | |
| 'data' : { '*in-pport': 'uint32', '*tunnel-id': 'uint32', | |
| '*vlan-id': 'uint16', '*eth-src': 'str', '*eth-dst': 'str', | |
| '*ip-proto': 'uint8', '*ip-tos': 'uint8' } } | |
| ## | |
| # @RockerOfDpaFlowAction: | |
| # Rocker switch OF-DPA flow action | |
| # | |
| # @goto-tbl: next table ID | |
| # | |
| # @group-id: group ID | |
| # | |
| # @tunnel-lport: tunnel logical port ID | |
| # | |
| # @vlan-id: VLAN ID | |
| # | |
| # @new-vlan-id: new VLAN ID | |
| # | |
| # @out-pport: physical output port | |
| # | |
| # .. note:: Optional members may or may not appear in the flow action | |
| # depending if they're relevant to the flow action. | |
| # | |
| # Since: 2.4 | |
| ## | |
| { 'struct': 'RockerOfDpaFlowAction', | |
| 'data' : { '*goto-tbl': 'uint32', '*group-id': 'uint32', | |
| '*tunnel-lport': 'uint32', '*vlan-id': 'uint16', | |
| '*new-vlan-id': 'uint16', '*out-pport': 'uint32' } } | |
| ## | |
| # @RockerOfDpaFlow: | |
| # Rocker switch OF-DPA flow | |
| # | |
| # @cookie: flow unique cookie ID | |
| # | |
| # @hits: count of matches (hits) on flow | |
| # | |
| # @key: flow key | |
| # | |
| # @mask: flow mask | |
| # | |
| # @action: flow action | |
| # | |
| # Since: 2.4 | |
| ## | |
| { 'struct': 'RockerOfDpaFlow', | |
| 'data': { 'cookie': 'uint64', 'hits': 'uint64', 'key': 'RockerOfDpaFlowKey', | |
| 'mask': 'RockerOfDpaFlowMask', 'action': 'RockerOfDpaFlowAction' } } | |
| ## | |
| # @query-rocker-of-dpa-flows: | |
| # Return rocker OF-DPA flow information. | |
| # | |
| # @name: switch name | |
| # | |
| # @tbl-id: flow table ID. If tbl-id is not specified, returns flow | |
| # information for all tables. | |
| # | |
| # Returns: rocker OF-DPA flow information | |
| # | |
| # Since: 2.4 | |
| # | |
| # .. qmp-example:: | |
| # | |
| # -> { "execute": "query-rocker-of-dpa-flows", | |
| # "arguments": { "name": "sw1" } } | |
| # <- { "return": [ {"key": {"in-pport": 0, "priority": 1, "tbl-id": 0}, | |
| # "hits": 138, | |
| # "cookie": 0, | |
| # "action": {"goto-tbl": 10}, | |
| # "mask": {"in-pport": 4294901760} | |
| # }, | |
| # ... | |
| # ]} | |
| ## | |
| { 'command': 'query-rocker-of-dpa-flows', | |
| 'data': { 'name': 'str', '*tbl-id': 'uint32' }, | |
| 'returns': ['RockerOfDpaFlow'] } | |
| ## | |
| # @RockerOfDpaGroup: | |
| # Rocker switch OF-DPA group | |
| # | |
| # @id: group unique ID | |
| # | |
| # @type: group type | |
| # | |
| # @vlan-id: VLAN ID | |
| # | |
| # @pport: physical port number | |
| # | |
| # @index: group index, unique with group type | |
| # | |
| # @out-pport: output physical port number | |
| # | |
| # @group-id: next group ID | |
| # | |
| # @set-vlan-id: VLAN ID to set | |
| # | |
| # @pop-vlan: pop VLAN headr from packet | |
| # | |
| # @group-ids: list of next group IDs | |
| # | |
| # @set-eth-src: set source MAC address in Ethernet header | |
| # | |
| # @set-eth-dst: set destination MAC address in Ethernet header | |
| # | |
| # @ttl-check: perform TTL check | |
| # | |
| # .. note:: Optional members may or may not appear in the group | |
| # depending if they're relevant to the group type. | |
| # | |
| # Since: 2.4 | |
| ## | |
| { 'struct': 'RockerOfDpaGroup', | |
| 'data': { 'id': 'uint32', 'type': 'uint8', '*vlan-id': 'uint16', | |
| '*pport': 'uint32', '*index': 'uint32', '*out-pport': 'uint32', | |
| '*group-id': 'uint32', '*set-vlan-id': 'uint16', | |
| '*pop-vlan': 'uint8', '*group-ids': ['uint32'], | |
| '*set-eth-src': 'str', '*set-eth-dst': 'str', | |
| '*ttl-check': 'uint8' } } | |
| ## | |
| # @query-rocker-of-dpa-groups: | |
| # Return rocker OF-DPA group information. | |
| # | |
| # @name: switch name | |
| # | |
| # @type: group type. If type is not specified, returns group | |
| # information for all group types. | |
| # | |
| # Returns: rocker OF-DPA group information | |
| # | |
| # Since: 2.4 | |
| # | |
| # .. qmp-example:: | |
| # | |
| # -> { "execute": "query-rocker-of-dpa-groups", | |
| # "arguments": { "name": "sw1" } } | |
| # <- { "return": [ {"type": 0, "out-pport": 2, | |
| # "pport": 2, "vlan-id": 3841, | |
| # "pop-vlan": 1, "id": 251723778}, | |
| # {"type": 0, "out-pport": 0, | |
| # "pport": 0, "vlan-id": 3841, | |
| # "pop-vlan": 1, "id": 251723776}, | |
| # {"type": 0, "out-pport": 1, | |
| # "pport": 1, "vlan-id": 3840, | |
| # "pop-vlan": 1, "id": 251658241}, | |
| # {"type": 0, "out-pport": 0, | |
| # "pport": 0, "vlan-id": 3840, | |
| # "pop-vlan": 1, "id": 251658240} | |
| # ]} | |
| ## | |
| { 'command': 'query-rocker-of-dpa-groups', | |
| 'data': { 'name': 'str', '*type': 'uint8' }, | |
| 'returns': ['RockerOfDpaGroup'] } |