blob: 14392241f0ed8cb3e061b6e46ee00b28166062f4 [file] [log] [blame]
module ietf-dmm-threegpp {
namespace "urn:ietf:params:xml:ns:yang:threegpp";
prefix threegpp;
import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
import ietf-traffic-selector-types { prefix traffic-selectors; revision-date 2016-01-14; }
import ietf-pmip-qos { prefix pmipqos; revision-date 2016-02-10; }
organization "IETF DMM Working Group";
contact "Satoru Matsushima <satoru.matsushima@g.softbank.co.jp>";
description
"This module contains YANG definition for
3GPP Related Mobility Structures";
revision 2016-08-03 {
description "Initial";
reference "draft-ietf-dmm-fpc-cpdp-04";
}
// Tunnel Types
identity threeGPP-tunnel-type {
description "Base Tunnel Type";
}
identity gtpv1 {
base "threegpp:threeGPP-tunnel-type";
}
identity gtpv2 {
base "threegpp:threeGPP-tunnel-type";
}
grouping teid-value {
leaf tunnel-identifier {
description "TEID";
type uint32;
}
}
grouping threeGPP-tunnel {
leaf tunnel-type {
type identityref {
base "threegpp:threeGPP-tunnel-type";
}
}
uses threegpp:teid-value;
}
// QoS Profile
typedef fpc-qos-class-identifier {
type uint8 {
range "1..9";
}
description "QCI";
}
grouping threeGPP-QoS {
leaf qci {
type fpc-qos-class-identifier;
}
leaf gbr {
type uint32;
}
leaf mbr {
type uint32;
}
leaf apn-ambr {
type uint32;
}
leaf ue-ambr {
type uint32;
}
container arp {
uses pmipqos:Allocation-Retention-Priority-Value;
}
}
typedef ebi-type {
type uint8 {
range "0..15";
}
}
// From 3GPP TS 24.008 version 13.5.0 Release 13
typedef component-type-enum {
type enumeration {
enum ipv4RemoteAddress { value 16; }
enum ipv4LocalAddress { value 17; }
enum ipv6RemoteAddress { value 32; }
enum ipv6RemoteAddressPrefix { value 33; }
enum ipv6LocalAddressPrefix { value 35; }
enum protocolNextHeader { value 48; }
enum localPort { value 64; }
enum localPortRange { value 65; }
enum reomotePort { value 80; }
enum remotePortRange { value 81; }
enum secParamIndex { value 96; }
enum tosTraffClass { value 112; }
enum flowLabel { value 128; }
}
}
typedef packet-filter-direction {
type enumeration {
enum preRel7Tft { value 0; }
enum uplink { value 1; }
enum downlink { value 2; }
enum bidirectional { value 3; }
}
}
typedef component-type-id {
type uint8 {
range "16 | 17 | 32 | 33 | 35 | 48 | 64 | 65 | 80 | 81 | 96 | 112 | 128";
}
}
typedef sponsor-identity-type {
type string;
}
grouping packet-filter {
leaf direction {
type threegpp:packet-filter-direction;
}
leaf identifier {
type uint8 {
range "1..15";
}
}
leaf evaluation-precedence {
type uint8;
}
list contents {
key component-type-identifier;
leaf component-type-identifier {
type threegpp:component-type-id;
}
choice value {
case ipv4-local {
leaf ipv4-local {
type inet:ipv4-address;
}
leaf ipv4-local-mask {
type inet:ipv4-address;
}
}
case ipv6-address-local {
leaf ipv6-address-local {
type inet:ipv6-prefix;
}
leaf ipv6-address-local-mask {
type inet:ipv6-prefix;
}
}
case ipv6-prefix-local {
leaf ipv6-prefix-local {
type inet:ipv6-prefix;
}
}
case ipv4-ipv6-remote {
leaf ipv4-ipv6-remote {
type inet:ip-address;
}
leaf ipv4-ipv6-remote-mask {
type inet:ip-address;
}
}
case ipv4-remote {
leaf ipv4-remote {
type inet:ipv4-address;
}
leaf ipv4-remote-mask {
type inet:ipv4-address;
}
}
case ipv6-address-remote {
leaf ipv6-address-remote {
type inet:ipv6-prefix;
}
leaf ipv6-address-remote-mask {
type inet:ipv6-prefix;
}
}
case ipv6-prefix-remote {
leaf ipv6-prefix-remote {
type inet:ipv6-prefix;
}
}
case protocol-next-header {
leaf next-header {
type uint8;
}
}
case local-port {
leaf local-port {
type inet:port-number;
}
}
case local-port-range {
leaf local-port-lo {
type inet:port-number;
}
leaf local-port-hi {
type inet:port-number;
}
}
case remote-port {
leaf remote-port {
type inet:port-number;
}
}
case remote-port-range {
leaf remote-port-lo {
type inet:port-number;
}
leaf remote-port-hi {
type inet:port-number;
}
}
case ipsec-index {
leaf ipsec-index {
type traffic-selectors:ipsec-spi;
}
}
case traffic-class {
leaf traffic-class {
type inet:dscp;
}
}
case traffic-class-range {
leaf traffic-class-lo {
type inet:dscp;
}
leaf traffic-class-hi {
type inet:dscp;
}
}
case flow-label-type {
leaf-list flow-label-type {
type inet:ipv6-flow-label;
}
}
}
}
}
grouping tft {
list packet-filters {
key identifier;
uses threegpp:packet-filter;
}
}
typedef imsi-type {
type uint64;
}
typedef threegpp-instr {
description "Instruction Set for 3GPP R11";
type bits {
bit assign-ip {
position 0;
}
bit assign-fteid-ip {
position 1;
}
bit assign-fteid-teid {
position 2;
}
bit session {
position 3;
}
bit uplink {
position 4;
}
bit downlink {
position 5;
}
bit assign-dpn {
position 6;
}
bit indirect-forward {
position 7;
}
bit create_new_tft {
position 8;
}
bit delete_existing_tft {
position 9;
}
bit add_filters_to_existing_tft {
position 10;
}
bit replace_filters_in_existing_tft {
position 11;
}
bit delete_filters_from_existing_tft {
position 12;
}
bit no_tft_op {
position 13;
}
}
}
grouping threegpp-properties {
leaf imsi {
type threegpp:imsi-type;
}
leaf ebi {
type threegpp:ebi-type;
}
leaf lbi {
type threegpp:ebi-type;
}
}
grouping threegpp-commandset {
leaf instr-3gpp-mob {
type threegpp:threegpp-instr;
}
}
}