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.
