Network: define interface for network bonding parameters

Change-Id: Ib94e7ab515834b2c73eccddc783ccea0c3026092
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/xyz/openbmc_project/Network/Experimental/Bond.interface.yaml b/xyz/openbmc_project/Network/Experimental/Bond.interface.yaml
new file mode 100644
index 0000000..2120875
--- /dev/null
+++ b/xyz/openbmc_project/Network/Experimental/Bond.interface.yaml
@@ -0,0 +1,85 @@
+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.