description: >
    This defines network bonding parameters.

# TODO Fix it through https://github.com/openbmc/openbmc/issues/1438
# creatable: true

properties:
    - name: InterfaceName
      type: string
      description: >
          Name of the interface.
    - name: BondedInterfaces
      type: array[string]
      description: >
          Interfaces which needs to be bonded.
    - name: Mode
      type: enum[self.BondingMode]
      description: >
          Network interface bonding modes.
      default: RoundRobin
    - name: TransmitHashPolicy
      type: enum[self.HashPolicy]
      description:
          Selects the transmit hash policy to use for slave selection in
          balance-xor, 802.3ad, and tlb modes.
      default: Layer2

enumerations:
    - name: BondingMode
      description: >
          Possible bonding mode types.
      values:
          - name: RoundRobin
            description: >
                It is the default mode,in this mode system transmits packets in
                sequential order from the first available slave through the last.
          - name: ActiveBackup
            description: >
                In this mode, only one slave in the bond is active.
                The other one will become active, only when the active slave fails.
          - name: XOR
            description: >
                Transmit based on selectable hashing algorithm.
                The default policy is a simple source+destination MAC address algorithm.
          - name: Broadcast
            description: >
                Transmits everything on all slave interfaces.
          - name: Dynamic
            description: >
                IEEE 802.3ad Dynamic link aggregation.
          - name: TLB
            description: >
                The outgoing traffic is distributed according to the current load on each slave.
          - name: ALB
            description: >
                Incoming/outgoing traffic is distributed according to the current load on each slave.

    - name: HashPolicy
      description: >
          Possible policy types.
      values:
          - name: Layer2
            description: >
                This policy uses XOR of hardware MAC addresses and packet type ID
                field to generate the hash.
          - name: Layer2Plus3
            description: >
                This policy uses a combination of layer2 and layer3
                protocol information to generate the hash.
          - name: Layer3Plus4
            description: >
                This policy uses upper layer protocol information,
                when available, to generate the hash.
          - name: Encap2Plus3
            description: >
                This policy uses the same formula as layer2+3 but it
                relies on skb_flow_dissect to obtain the header fields
                which might result in the use of inner headers if an
                encapsulation protocol is used.
          - name: Encap3Plus4
            description: >
                This policy uses the same formula as layer3+4 but it
                relies on skb_flow_dissect to obtain the header fields
                which might result in the use of inner headers if an
                encapsulation protocol is used.
