##
# @Rocker:
#
# 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.
#
# Returns: @Rocker information
#
# Since: 2.4
##
{ 'command': 'query-rocker',
  'data': { 'name': 'str' },
  'returns': 'RockerSwitch' }

##
# @RockerPortDuplex:
#
# An eumeration of port duplex states.
#
# @half: half duplex
#
# @full: full duplex
#
# Since: 2.4
##
{ 'enum': 'RockerPortDuplex', 'data': [ 'half', 'full' ] }

##
# @RockerPortAutoneg:
#
# An eumeration 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 information.
#
# Returns: @Rocker information
#
# Since: 2.4
##
{ '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: #optional physical input port
#
# @tunnel-id: #optional tunnel ID
#
# @vlan-id: #optional VLAN ID
#
# @eth-type: #optional Ethernet header type
#
# @eth-src: #optional Ethernet header source MAC address
#
# @eth-dst: #optional Ethernet header destination MAC address
#
# @ip-proto: #optional IP Header protocol field
#
# @ip-tos: #optional IP header TOS field
#
# @ip-dst: #optional IP header destination address
#
# Note: fields are marked #optional to indicate that they 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: #optional physical input port
#
# @tunnel-id: #optional tunnel ID
#
# @vlan-id: #optional VLAN ID
#
# @eth-src: #optional Ethernet header source MAC address
#
# @eth-dst: #optional Ethernet header destination MAC address
#
# @ip-proto: #optional IP Header protocol field
#
# @ip-tos: #optional IP header TOS field
#
# Note: fields are marked #optional to indicate that they 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: #optional next table ID
#
# @group-id: #optional group ID
#
# @tunnel-lport: #optional tunnel logical port ID
#
# @vlan-id: #optional VLAN ID
#
# @new-vlan-id: #optional new VLAN ID
#
# @out-pport: #optional physical output port
#
# Note: fields are marked #optional to indicate that they 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: #optional flow table ID.  If tbl-id is not specified, returns
# flow information for all tables.
#
# Returns: @Rocker OF-DPA flow information
#
# Since: 2.4
##
{ '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: #optional VLAN ID
#
# @pport: #optional physical port number
#
# @index: #optional group index, unique with group type
#
# @out-pport: #optional output physical port number
#
# @group-id: #optional next group ID
#
# @set-vlan-id: #optional VLAN ID to set
#
# @pop-vlan: #optional pop VLAN headr from packet
#
# @group-ids: #optional list of next group IDs
#
# @set-eth-src: #optional set source MAC address in Ethernet header
#
# @set-eth-dst: #optional set destination MAC address in Ethernet header
#
# @ttl-check: #optional perform TTL check
#
# Note: fields are marked #optional to indicate that they 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: #optional group type.  If type is not specified, returns
# group information for all group types.
#
# Returns: @Rocker OF-DPA group information
#
# Since: 2.4
##
{ 'command': 'query-rocker-of-dpa-groups',
  'data': { 'name': 'str', '*type': 'uint8' },
  'returns': ['RockerOfDpaGroup'] }
