| module openconfig-packet-match-types { |
| |
| yang-version "1"; |
| |
| // namespace |
| namespace "http://openconfig.net/yang/packet-match-types"; |
| |
| prefix "oc-pkt-match-types"; |
| |
| // import some basic types |
| import openconfig-inet-types { prefix oc-inet; } |
| import openconfig-extensions { prefix oc-ext; } |
| |
| |
| // meta |
| 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."; |
| |
| oc-ext:openconfig-version "1.0.0"; |
| |
| 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"; |
| } |
| |
| // extension statements |
| |
| // feature statements |
| |
| // identity statements |
| |
| |
| //TODO: should replace this with an official IEEE module |
| // when available. Only a select number of types are |
| // defined in this identity. |
| identity ETHERTYPE { |
| 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)"; |
| } |
| |
| |
| //TODO: should replace this with an official IANA module when |
| //available. Only a select set of protocols are defined with |
| //this identity. |
| identity IP_PROTOCOL { |
| 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 { |
| 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 statements |
| |
| 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 { |
| 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 { |
| //Note range can only be expressed in decimal |
| //but value is expected in hex notation. |
| 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"; |
| } |
| |
| } |