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.
