Network: define interface for tunnel parameters

Change-Id: Ic44f54c0ea3a5c732c1d0045d50bd1c2238076e0
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/xyz/openbmc_project/Network/Experimental/Tunnel.interface.yaml b/xyz/openbmc_project/Network/Experimental/Tunnel.interface.yaml
new file mode 100644
index 0000000..89e3039
--- /dev/null
+++ b/xyz/openbmc_project/Network/Experimental/Tunnel.interface.yaml
@@ -0,0 +1,82 @@
+description: >
+    This defines network tunneling 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: Local
+      type: string
+      description: >
+          Local endpoint of tunnel.
+    - name: Remote
+      type: string
+      description: >
+          Remote endpoint of tunnel.
+    - name: TOS
+      type: uint32
+      description: >
+          The Type Of Service byte value for a tunnel interface.
+    - name: TTL
+      type: uint32
+      description: >
+          Number of hops that a packet is permitted to travel.
+    - name: DiscoverPathMTU
+      type: boolean
+      description: >
+          When true, enables Path MTU Discovery on the tunnel.
+    - name: IPv6FlowLabel
+      type: uint32
+      description: >
+          Configures the 20-bit flow label. It can be configured to a value
+          in the range 0–0xFFFFF, or be set to "inherit", in which case the
+          original flowlabel is used.
+    - name: CopyDSCP
+      type: boolean
+      description: >
+          When true, the Differentiated Service Code Point
+          (DSCP) field will be copied to the inner header from outer header
+          during the decapsulation of an IPv6 tunnel packet.
+    - name: EncapsulationLimit
+      type: uint32
+      description: >
+          The Tunnel Encapsulation Limit option specifies how many
+          additional levels of encapsulation are permitted to be prepended
+          to the packet.
+    - name: Key
+      type: string
+      description: >
+          This parameter specifies the same key to use in both
+          directions (InputKey= and OutputKey=).
+    - name: InputKey
+      type: string
+      description: >
+          This parameter specifies the key to use for input.
+    - name: OutputKey
+      type: string
+      description: >
+          This parameter specifies the key to use for output.
+    - name: Mode
+      type: enum[self.IPv6Tunnel]
+      description: >
+          An "ip6tnl" tunnel can be in one of three modes.
+      default: any
+
+enumerations:
+    - name: IPv6Tunnel
+      description: >
+          Possible IPv6 tunnel types.
+      values:
+        - name: ip6ip6
+          description: >
+              IPv6 over IPv6.
+        - name: ipip6
+          description: >
+              IPv4 over IPv6.
+        - name: any
+          description: >
+              Either ip6ip6 or ipip6.