netconfcentral logo

ietf-srv6-types@2017-11-12



  module ietf-srv6-types {

    yang-version 1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-srv6-types";

    prefix srv6-types;

    import ietf-inet-types {
      prefix inet;
    }

    organization "IETF SPRING Working Group";

    contact
      "WG Web:   <http://tools.ietf.org/wg/spring/>
     WG List:  <mailto:spring@ietf.org>

     WG Chair: Bruno Decraene
               <mailto:loa@pi.nu>

     WG Chair: Martin Vigoureux
               <mailto:rcallon@juniper.net>

     Editor:   Kamran Raza
               <mailto:skraza@cisco.com>

     Editor:   Jaganbabu Rajamanickam
               <maito:jrajaman@cisco.com>

     Editor:   Xufeng Liu
               <mailto:Xufeng_Liu@jabil.com>

     Editor:   Iftekhar Hussain
               <mailto:IHussain@infinera.com>

     Editor:   Himanshu Shah
               <mailto:hshah@ciena.com>

     Editor:   Daniel Voyer
               <mailto:daniel.voyer@bell.ca>

     Editor:   Hani Elmalky
               <mailto:hani.elmalky@ericsson.com>

     Editor:   Ahmed AbdelSalam
               <mailto:ahmed.abdelsalam@gssi.it>

     ";

    description
      "This YANG module defines the essential types for the
     management of Segment-Routing with IPv6 dataplane (SRv6).

     Copyright (c) 2017 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (http://trustee.ietf.org/license-info).";

    reference
      "RFC XXXX";


    revision "2017-11-12" {
      description "Initial revision.";
      reference
        "RFC XXXX: YANG Data Model for SRv6";

    }


    typedef srv6-end-type {
      type enumeration {
        enum "End" {
          value 1;
          description
            "The Endpoint function. This is the most
           basic function";
        }
        enum "End.X" {
          value 2;
          description
            "Endpoint with cross-connect to an array
           of layer-3 adjacencies";
        }
        enum "End.T" {
          value 3;
          description
            "Endpoint with specific IPv6 table lookup";
        }
        enum "End.DX2" {
          value 4;
          description
            "Endpoint with decapsulation and Layer-2
           cross-connect to an L2 interface";
        }
        enum "End.DX2V" {
          value 5;
          description
            "Endpoint with decapsulation and specific
           VLAN L2 table lookup";
        }
        enum "End.DT2U" {
          value 6;
          description
            "Endpoint with decapsulation and specific
           unicast MAC L2 table lookup";
        }
        enum "End.DT2M" {
          value 7;
          description
            "Endpoint with decapsulation and specific L2 table
           flooding";
        }
        enum "End.DX6" {
          value 8;
          description
            "Endpoint with decapsulation and cross-connect
           to an array of IPv6 adjacencies";
        }
        enum "End.DX4" {
          value 9;
          description
            "Endpoint with decapsulation and cross-connect
           to an array of IPv4 adjacencies";
        }
        enum "End.DT6" {
          value 10;
          description
            "Endpoint with decapsulation and specific
           IPv6 table lookup";
        }
        enum "End.DT4" {
          value 11;
          description
            "Endpoint with decapsulation and specific
           IPv4 table lookup";
        }
        enum "End.DT46" {
          value 12;
          description
            "Endpoint with decapsulation and specific IP
           (IPv4 or IPv6) table lookup";
        }
        enum "End.B6" {
          value 13;
          description
            "Endpoint bound to an SRv6 Policy";
        }
        enum "End.B6.Encaps" {
          value 14;
          description
            "This is a variation of the End.B6 behavior
           where the SRv6 Policy also includes an
           IPv6 Source Address A.";
        }
        enum "End.BM" {
          value 15;
          description
            "Endpoint bound to an SR-MPLS Policy";
        }
        enum "End.S" {
          value 16;
          description
            "Endpoint in search of a target in table TE";
        }
        enum "End.AS" {
          value 17;
          description
            "Service-Chaining Static proxy for inner type (Ethernet, IPv4 or IPv6)";
        }
        enum "End.AD" {
          value 18;
          description
            "Service-Chaining Dynamic proxy for inner type (Ethernet, IPv4 or IPv6)";
        }
        enum "End.ASM" {
          value 19;
          description
            "Service-Chaining Shared memory SR proxy for inner type (Ethernet, IPv4 or IPv6)";
        }
        enum "End.AM" {
          value 20;
          description
            "Service-Chaining Masquerading SR proxy";
        }
      }
      description "SRv6 End behavior types";
    }

    typedef srv6-transit-type {
      type enumeration {
        enum "T" {
          value 1;
          description "Transit";
        }
        enum "T.Encaps" {
          value 2;
          description "T.Encaps";
        }
        enum "T.Insert" {
          value 3;
          description "T.Insert";
        }
        enum "T.Encaps.L2" {
          value 4;
          description "T.Encaps.L2";
        }
      }
      description
        "SRv6 Transit behavior types";
    }

    typedef srv6-security-rule-type {
      type enumeration {
        enum "SEC1" {
          value 1;
          description "Security rule SEC1";
        }
        enum "SEC2" {
          value 2;
          description "Security rule SEC2";
        }
        enum "SEC3" {
          value 3;
          description "Security rule SEC3";
        }
        enum "SEC4" {
          value 4;
          description "Security rule SEC4";
        }
      }
      description "SRv6 Security rule types";
    }

    typedef srv6-counter-type {
      type enumeration {
        enum "CNT0" {
          value 0;
          description "CNT0";
        }
        enum "CNT1" {
          value 1;
          description "CNT1";
        }
        enum "CNT2" {
          value 2;
          description "CNT2";
        }
      }
      description "SRv6 counter types";
    }

    typedef srv6-sid {
      type inet:ipv6-prefix;
      description
        "This type defines a SID value in SRv6";
    }

    typedef srv6-func-opcode {
      type uint32;
      description
        "This is a typedef for SID FUNC's opcode type";
    }

    typedef srv6-func-opcode-reserved {
      type uint32 {
        range "1 .. 63";
      }
      description
        "This is a typedef for SID FUNC's reserved opcode type";
    }

    typedef srv6-func-opcode-unreserved {
      type uint32 {
        range "64 .. max";
      }
      description
        "This is a typedef for SID FUNC's allocatable (unreserved) opcode type";
    }

    typedef srv6-func-opcode-reserved-type {
      type enumeration {
        enum "invalid" {
          value 0;
          description "Invalid opcode";
        }
        enum "default-end-psp" {
          value 1;
          description
            "Opcode for Default End/PSP funcion";
        }
        enum "default-end-usp" {
          value 2;
          description
            "Opcode for Default End/USP funcion";
        }
      }
      description
        "SRv6 SID FUNC Reserved Opcodes";
    }

    typedef srv6-locator-len {
      type uint8 {
        range "32 .. 96";
      }
      description
        "This type defines an SRv6 locator len with range constraints";
    }

    typedef srv6-sid-pfxlen {
      type uint8 {
        range "33 .. 128";
      }
      default '128';
      description
        "This type defines a SID prefixlen with range constraints";
    }

    typedef sid-alloc-type {
      type enumeration {
        enum "Dynamic" {
          value 0;
          description
            "SID allocated dynamically.";
        }
        enum "Explicit" {
          value 1;
          description
            "SID allocated with explicit (static) value";
        }
      }
      description
        "Types of sid allocation used.";
    }

    typedef srv6-sid-owner-type {
      type enumeration {
        enum "isis" {
          value 1;
          description "ISIS";
        }
        enum "ospfv3" {
          value 2;
          description "OSPFv3";
        }
        enum "bgp" {
          value 3;
          description "BGP";
        }
        enum "evpn" {
          value 4;
          description "EVPN";
        }
        enum "sr-policy" {
          value 5;
          description "SR Policy";
        }
        enum "service-chain" {
          value 6;
          description "Service-Chaining";
        }
      }
      description "SID Client types.";
    }

    typedef table-id {
      type uint32;
      description "Routing Table Id";
    }

    typedef srv6-status-type {
      type enumeration {
        enum "up" {
          value 1;
          description "State is Up";
        }
        enum "down" {
          value 2;
          description "State is Down";
        }
      }
      description "Status type";
    }

    typedef srv6-nexthop-type {
      type enumeration {
        enum "ipv4" {
          value 1;
          description "IPv4 next-hop";
        }
        enum "ipv6" {
          value 2;
          description "IPv6 next-hop";
        }
        enum "mpls" {
          value 3;
          description "MPLS next-hop";
        }
        enum "l2" {
          value 4;
          description "L2 next-hop";
        }
      }
      description "Forwarding Next-hop type";
    }
  }  // module ietf-srv6-types