netconfcentral logo

openconfig-packet-match-types@2017-05-26



  module openconfig-packet-match-types {

    yang-version 1;

    namespace
      "http://openconfig.net/yang/packet-match-types";

    prefix oc-pkt-match-types;

    import openconfig-inet-types {
      prefix oc-inet;
    }
    import openconfig-extensions {
      prefix oc-ext;
    }

    organization "OpenConfig working group";

    contact
      "OpenConfig working group
    www.openconfig.net";

    description
      "This module defines common types for use in models requiring
    data definitions related to packet matches.";

    revision "2017-05-26" {
      description
        "Separated IP matches into AFs";
      reference
        "1.0.0";

    }

    revision "2016-08-08" {
      description
        "OpenConfig public release";
      reference
        "0.2.0";

    }

    revision "2016-04-27" {
      description "Initial revision";
      reference
        "TBD";

    }

    oc-ext:openconfig-version "1.0.0";

    identity ETHERTYPE {
      base 
      description
        "Base identity for commonly used Ethertype values used
      in packet header matches on Ethernet frames.  The Ethertype
      indicates which protocol is encapsulated in the Ethernet
      payload.";
      reference
        "IEEE 802.3";

    }

    identity ETHERTYPE_IPV4 {
      base ETHERTYPE;
      description "IPv4 protocol (0x0800)";
    }

    identity ETHERTYPE_ARP {
      base ETHERTYPE;
      description
        "Address resolution protocol (0x0806)";
    }

    identity ETHERTYPE_VLAN {
      base ETHERTYPE;
      description
        "VLAN-tagged frame (as defined by IEEE 802.1q) (0x8100). Note
      that this value is also used to represent Shortest Path
      Bridging (IEEE 801.1aq) frames.";
    }

    identity ETHERTYPE_IPV6 {
      base ETHERTYPE;
      description "IPv6 protocol (0x86DD)";
    }

    identity ETHERTYPE_MPLS {
      base ETHERTYPE;
      description "MPLS unicast (0x8847)";
    }

    identity ETHERTYPE_LLDP {
      base ETHERTYPE;
      description
        "Link Layer Discovery Protocol (0x88CC)";
    }

    identity ETHERTYPE_ROCE {
      base ETHERTYPE;
      description
        "RDMA over Converged Ethernet (0x8915)";
    }

    identity IP_PROTOCOL {
      base 
      description
        "Base identity for commonly used IP protocols used in
      packet header matches";
      reference
        "IANA Assigned Internet Protocol Numbers";

    }

    identity IP_TCP {
      base IP_PROTOCOL;
      description
        "Transmission Control Protocol (6)";
    }

    identity IP_UDP {
      base IP_PROTOCOL;
      description
        "User Datagram Protocol (17)";
    }

    identity IP_ICMP {
      base IP_PROTOCOL;
      description
        "Internet Control Message Protocol (1)";
    }

    identity IP_IGMP {
      base IP_PROTOCOL;
      description
        "Internet Group Membership Protocol (2)";
    }

    identity IP_PIM {
      base IP_PROTOCOL;
      description
        "Protocol Independent Multicast (103)";
    }

    identity IP_RSVP {
      base IP_PROTOCOL;
      description
        "Resource Reservation Protocol (46)";
    }

    identity IP_GRE {
      base IP_PROTOCOL;
      description
        "Generic Routing Encapsulation (47)";
    }

    identity IP_AUTH {
      base IP_PROTOCOL;
      description
        "Authentication header, e.g., for IPSEC (51)";
    }

    identity IP_L2TP {
      base IP_PROTOCOL;
      description
        "Layer Two Tunneling Protocol v.3 (115)";
    }

    identity TCP_FLAGS {
      base 
      description
        "Common TCP flags used in packet header matches";
      reference
        "IETF RFC 793 - Transmission Control Protocol
        IETF RFC 3168 - The Addition of Explicit Congestion
        Notification (ECN) to IP";

    }

    identity TCP_SYN {
      base TCP_FLAGS;
      description "TCP SYN flag";
    }

    identity TCP_FIN {
      base TCP_FLAGS;
      description "TCP FIN flag";
    }

    identity TCP_RST {
      base TCP_FLAGS;
      description "TCP RST flag";
    }

    identity TCP_PSH {
      base TCP_FLAGS;
      description "TCP push flag";
    }

    identity TCP_ACK {
      base TCP_FLAGS;
      description "TCP ACK flag";
    }

    identity TCP_URG {
      base TCP_FLAGS;
      description "TCP urgent flag";
    }

    identity TCP_ECE {
      base TCP_FLAGS;
      description
        "TCP ECN-Echo flag.  If the SYN flag is set, indicates that
      the TCP peer is ECN-capable, otherwise indicates that a
      packet with Congestion Experienced flag in the IP header
      is set";
    }

    identity TCP_CWR {
      base TCP_FLAGS;
      description
        "TCP Congestion Window Reduced flag";
    }

    typedef port-num-range {
      type union {
        type string {
          pattern
            '^(6[0-5][0-5][0-3][0-5]|[0-5]?[0-9]?[0-9]?[0-9]?'
              + '[0-9]?)\.\.(6[0-5][0-5][0-3][0-5]|[0-5]?[0-9]?[0-9]?'
              + '[0-9]?[0-9]?)$';
        }
        type oc-inet:port-number;
        type enumeration {
          enum "ANY" {
            value 0;
            description
              "Indicates any valid port number (e.g., wildcard)";
          }
        }
      }
      description
        "Port numbers may be represented as a single value,
      an inclusive range as <lower>..<higher>, or as ANY to
      indicate a wildcard.";
    }

    typedef ip-protocol-type {
      type union {
        type uint8 {
          range "0..254";
        }
        type identityref {
          base IP_PROTOCOL;
        }
      }
      description
        "The IP protocol number may be expressed as a valid protocol
      number (integer) or using a protocol type defined by the
      IP_PROTOCOL identity";
    }

    typedef ethertype-type {
      type union {
        type uint16 {
          range "1..65535";
        }
        type identityref {
          base ETHERTYPE;
        }
      }
      description
        "The Ethertype value may be expressed as a 16-bit number in
      hexadecimal notation, or using a type defined by the
      ETHERTYPE identity";
    }
  }  // module openconfig-packet-match-types