# Slow

class `ryu.lib.packet.slow.``lacp`(version=1, actor_system_priority=0, actor_system='00:00:00:00:00:00', actor_key=0, actor_port_priority=0, actor_port=0, actor_state_activity=0, actor_state_timeout=0, actor_state_aggregation=0, actor_state_synchronization=0, actor_state_collecting=0, actor_state_distributing=0, actor_state_defaulted=0, actor_state_expired=0, partner_system_priority=0, partner_system='00:00:00:00:00:00', partner_key=0, partner_port_priority=0, partner_port=0, partner_state_activity=0, partner_state_timeout=0, partner_state_aggregation=0, partner_state_synchronization=0, partner_state_collecting=0, partner_state_distributing=0, partner_state_defaulted=0, partner_state_expired=0, collector_max_delay=0)

  Link Aggregation Control Protocol(LACP, IEEE 802.1AX) header encoder/decoder class.

  http://standards.ieee.org/getieee802/download/802.1AX-2008.pdf

  LACPDU format

  LACPDU structure | Octets
  --- | ---
  Subtype = LACP | 1
  Version Number | 1
  TLV Actor | TLV_type = Actor Information | 1
  | Actor_Information_Length = 20 | 1
  | Actor_System_Priority | 2
  | Actor_System | 6
  | Actor_Key | 2
  | Actor_Port_Priority | 2
  | Actor_Port | 2
  | Actor_State | 1
  | Reserved | 3
  TLV Partner | TLV_type = Partner Information | 1
  | Partner_Information_Length = 20 | 1
  | Partner_System_Priority | 2
  | Partner_System | 6
  | Partner_Key | 2
  | Partner_Port_Priority | 2
  | Partner_Port | 2
  | Partner_State | 1
  | Reserved | 3
  TLV Collector | TLV_type = Collector Information | 1
  | Collector_Information_Length = 16 | 1
  | Collector_Max_Delay | 2
  | Reserved | 12
  TLV Terminator | TLV_type = Terminator | 1
  | Terminator_Length = 0 | 1
  | Reserved | 50

  Terminator information uses a length value of 0 (0x00).

  NOTE--The use of a Terminator_Length of 0 is intentional.
    In TLV encoding schemes it is common practice for the terminator encoding to be 0 both for the type and the length.

  Actor_State and Partner_State encoded as individual bits within a single octet as follows:

  7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
  --- | --- | --- | --- | --- | --- | --- | ---
  EXPR | DFLT | DIST | CLCT | SYNC | AGGR | TMO | ACT

  ACT
    bit 0. about the activity control value with regard to this link.
  TMO
    bit 1. about the timeout control value with regard to this link.
  AGGR
    bit 2. about how the system regards this link from the point of view of the aggregation.
  SYNC
    bit 3. about how the system regards this link from the point of view of the synchronization.
  CLCT
    bit 4. about collecting of incoming frames.
  DIST
    bit 5. about distributing of outgoing frames.
  DFLT
    bit 6. about the opposite system information which the system use.
  EXPR
    bit 7. about the expire state of the system.

  An instance has the following attributes at least. Most of them are same to the on-wire counterparts but in host byte order. __init__ takes the corresponding args in this order.

  Attribute | Description
  --- | ---
  version | LACP version. This parameter must be set to LACP_VERSION_NUMBER(i.e. 1).
  actor_system_priority | The priority assigned to this System.
  actor_system | The Actor's System ID, encoded as a MAC address.
  actor_key | The operational Key value assigned to the port by the Actor.
  actor_port_priority | The priority assigned to this port.
  actor_port | The port number assigned to the port by the Actor.
  actor_state_activity | about the activity control value with regard to this link. LACP_STATE_ACTIVE(1) LACP_STATE_PASSIVE(0)
  actor_state_timeout | about the timeout control value with regard to this link. LACP_STATE_SHORT_TIMEOUT(1) LACP_STATE_LONG_TIMEOUT(0)
  actor_state_aggregation | about how the system regards this link from the point of view of the aggregation. LACP_STATE_AGGREGATEABLE(1) LACP_STATE_INDIVIDUAL(0)
  actor_state_synchronization | about how the system regards this link from the point of view of the synchronization. LACP_STATE_IN_SYNC(1) LACP_STATE_OUT_OF_SYNC(0)
  actor_state_collecting | about collecting of incoming frames. LACP_STATE_COLLECTING_ENABLED(1) LACP_STATE_COLLECTING_DISABLED(0)
  actor_state_distributing | about distributing of outgoing frames. LACP_STATE_DISTRIBUTING_ENABLED(1) LACP_STATE_DISTRIBUTING_DISABLED(0)
  actor_state_defaulted | about the Partner information which the the Actor use. LACP_STATE_DEFAULTED_PARTNER(1) LACP_STATE_OPERATIONAL_PARTNER(0)
  actor_state_expired | about the state of the Actor. LACP_STATE_EXPIRED(1) LACP_STATE_NOT_EXPIRED(0)
  partner_system_priority | The priority assigned to the Partner System.
  partner_system | The Partner's System ID, encoded as a MAC address.
  partner_key | The operational Key value assigned to the port by the Partner.
  partner_port_priority | The priority assigned to this port by the Partner.
  partner_port | The port number assigned to the port by the Partner.
  partner_state_activity | See actor_state_activity.
  partner_state_timeout | See actor_state_timeout.
  partner_state_aggregation | See actor_state_aggregation.
  partner_state_synchronization | See actor_state_synchronization.
  partner_state_collecting | See actor_state_collecting.
  partner_state_distributing | See actor_state_distributing.
  partner_state_defaulted | See actor_state_defaulted.
  partner_state_expired | See actor_state_expired.
  collector_max_delay | the maximum time that the Frame Collector may delay.

  classmethod `parser`(buf)

    Decode a protocol header.

    This method is used only when decoding a packet.

    Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

    - An object to describe the decoded header.
    - A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.
    - The rest of packet.
  `serialize`(payload, prev)

    Encode a protocol header.

    This method is used only when encoding a packet.

    Encode a protocol header. Returns a bytearray which contains the header.

    payload is the rest of the packet which will immediately follow this header.

    prev is a packet_base.PacketBase subclass for the outer protocol header. prev is None if the current header is the outer-most. For example, prev is ipv4 or ipv6 for tcp.serialize.

class `ryu.lib.packet.slow.``slow`

  Slow Protocol header decoder class. This class has only the parser method.

  http://standards.ieee.org/getieee802/download/802.3-2012_section5.pdf

  Slow Protocols Subtypes

  Subtype Value | Protocol Name
  --- | ---
  0 | Unused - Illegal Value
  1 | Link Aggregation Control Protocol(LACP)
  2 | Link Aggregation - Marker Protocol
  3 | Operations, Administration, and Maintenance(OAM)
  4 - 9 | Reserved for future use
  10 | Organization Specific Slow Protocol(OSSP)
  11 - 255 | Unused - Illegal values

  classmethod `parser`(buf)

    Decode a protocol header.

    This method is used only when decoding a packet.

    Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

    - An object to describe the decoded header.
    - A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.
    - The rest of packet.