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 target 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 target through the
                last.
          - name: ActiveBackup
            description: >
                In this mode, only one target in the bond is active. The other
                one will become active, only when the active target 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 target 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 target.
          - name: ALB
            description: >
                Incoming/outgoing traffic is distributed according to the
                current load on each target.

    - 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.
