junos-conf-unified-edge

Junos unified-edge configuration module

  • Version: 2019-01-01

    junos-conf-unified-edge@2019-01-01


    
      module junos-conf-unified-edge {
    
        yang-version 1;
    
        namespace
          "http://yang.juniper.net/junos/conf/unified-edge";
    
        prefix jc-unified-edge;
    
        import junos-common-ddl-extensions {
          prefix junos;
          revision-date "2019-01-01";
        }
        import junos-common-types {
          prefix jt;
          revision-date "2019-01-01";
        }
        import junos-conf-root {
          prefix jc;
          revision-date "2019-01-01";
        }
    
        organization "Juniper Networks, Inc.";
    
        contact "yang-support@juniper.net";
    
        description
          "Junos unified-edge configuration module";
    
        revision "2019-01-01" {
          description "Junos: 21.3R1.9";
        }
    
    
        augment /jc:configuration {
          uses unified-edge-group;
        }
    
        augment /jc:configuration/jc:groups {
          uses unified-edge-group;
        }
    
        grouping unified-edge-group {
          container unified-edge {
            description
              "Unified edge configuration";
            uses apply-advanced;
    
            container cos-cac {
              status deprecated;
              description
                "Unified Edge COS configuration";
              uses juniper-unified-edge-cos-options;
            }  // container cos-cac
    
            list local-policies {
              key "name";
              max-elements 8001;
              ordered-by user;
              status deprecated;
              description
                "Local policy profiles";
              leaf name {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Local policy profile name";
              }
    
              uses apply-advanced;
    
              leaf description {
                type string;
                description
                  "Text description of local policy";
              }
    
              leaf resource-threshold-profile {
                type string;
                description
                  "Resource threshold profile associated with the local policy";
              }
    
              leaf classifier-profile {
                type string;
                description
                  "QoS class profile associated with the local policy";
              }
    
              leaf cos-policy-profile {
                type string;
                description
                  "QoS policy profile associated with the local policy";
              }
    
              leaf roamer-classifier-profile {
                type string;
                description
                  "QoS classifier profile for roamers";
              }
    
              leaf roamer-cos-policy-profile {
                type string;
                description
                  "QoS policy profile for roamers";
              }
    
              leaf visitor-classifier-profile {
                type string;
                description
                  "QoS classifier profile for visitor";
              }
    
              leaf visitor-cos-policy-profile {
                type string;
                description
                  "QoS policy profile for visitor";
              }
    
              leaf traffic-class-qci-mapping-profile {
                type string {
                  length "1 .. 128";
                }
                description
                  "Traffic class to qci mapping profile";
              }
    
              leaf ul-bandwidth-pool {
                type string;
                description
                  "Bandwidth pool associated with the local policy";
              }
    
              leaf dl-bandwidth-pool {
                type string;
                description
                  "Bandwidth pool associated with the local policy";
              }
            }  // list local-policies
    
            container aaa {
              description "AAA configuration";
              uses apply-advanced;
    
              container traceoptions {
                uses aaa-traceoptions;
              }  // container traceoptions
    
              list profiles {
                key "name";
                ordered-by user;
                description
                  "AAA profile configuration";
                uses aaa-profile;
              }  // list profiles
            }  // container aaa
    
            container diameter-profiles {
              description
                "Unified Edge Diameter application configurations";
              uses mobile-diameter-profiles;
            }  // container diameter-profiles
    
            container gateways {
              junos:must "(!("system services subscriber-management enable"))";
              junos:must-message "unified-edge gateway is not allowed when subscriber-management is configured";
              description
                "Gateways configuration";
              uses apply-advanced;
    
              list ggsn-pgw {
                key "name";
                max-elements 16;
                ordered-by user;
                status deprecated;
                description
                  "GGSN-PGW Configuration";
                leaf name {
                  type string {
                    length "1 .. 63";
                  }
                  description "Gateway name";
                }
    
                uses apply-advanced;
    
                leaf service-mode {
                  type enumeration {
                    enum "maintenance" {
                      value 0;
                      description
                        "Maintenance mode";
                    }
                  }
                  description "Service mode";
                }
    
                leaf maximum-bearers {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "100000 .. 12000000";
                    }
                  }
                  description
                    "Maximum bearers for the GW";
                }
    
                leaf session-timeout-check-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "5 .. 600";
                    }
                  }
                  units "in minutes";
                  default "15";
                  description
                    "Session timeout checking interval in minutes";
                }
    
                leaf redirect-timeout {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "15 .. 120";
                    }
                  }
                  units "in seconds";
                  default "15";
                  description
                    "Delay before a redirected session is deleted";
                }
    
                leaf local-policy-profile {
                  type string;
                  description
                    "Local profile for the system level";
                }
    
                container pfes {
                  presence "enable pfes";
                  description
                    "PFE Configuration";
                  uses apply-advanced;
    
                  leaf guaranteed-bandwidth {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "10 .. 100";
                      }
                    }
                    units "gigabits per second";
                    default "40";
                    description
                      "PFE guaranteed bandwidth";
                  }
    
                  leaf maximum-bearers {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "100 .. 510";
                      }
                    }
                    units "in thousands";
                    default "510";
                    description
                      "PFE maximum bearers";
                  }
    
                  leaf default-bearers-percentage {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "10 .. 100";
                      }
                    }
                    units
                      "percentage of maximum pfe bearers";
                    default "100";
                    description
                      "PFE default bearer percentage";
                  }
    
                  leaf ipv4-nbm-prefixes {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "16 .. 128";
                      }
                    }
                    units
                      "number of prefixes in multiples of 1K";
                    default "64";
                    description
                      "PFE IPv4 prefixes limit for NBM";
                  }
    
                  leaf ipv6-nbm-prefixes {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "4 .. 128";
                      }
                    }
                    units
                      "number of prefixes in multiples of 1K";
                    default "16";
                    description
                      "PFE IPv6 prefixes limit for NBM";
                  }
    
                  leaf maximum-sdfs {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "100 .. 510";
                      }
                    }
                    units "in thousands";
                    default "510";
                    description
                      "PFE maximum SDFs";
                  }
                }  // container pfes
    
                leaf anchor-pfe-guaranteed-bandwidth {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "10 .. 100";
                    }
                  }
                  units "gigabits per second";
                  default "40";
                  status deprecated;
                  description
                    "PFE guaranteed bandwidth";
                }
    
                leaf anchor-pfe-maximum-bearers {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "100 .. 510";
                    }
                  }
                  units "in thousands";
                  default "510";
                  status deprecated;
                  description
                    "PFE maximum bearers";
                }
    
                leaf anchor-pfe-default-bearers-percentage {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "10 .. 100";
                    }
                  }
                  units
                    "percentage of maximum pfe bearers";
                  default "100";
                  status deprecated;
                  description
                    "PFE default bearer percentage";
                }
    
                leaf anchor-pfe-ipv4-nbm-prefixes {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "16 .. 128";
                    }
                  }
                  units
                    "number of prefixes in multiples of 1K";
                  default "64";
                  status deprecated;
                  description
                    "PFE IPv4 prefixes limit for NBM";
                }
    
                leaf anchor-pfe-ipv6-nbm-prefixes {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "4 .. 128";
                    }
                  }
                  units
                    "number of prefixes in multiples of 1K";
                  default "16";
                  status deprecated;
                  description
                    "PFE IPv6 prefixes limit for NBM";
                }
    
                container preemption {
                  presence "enable preemption";
                  description
                    "Pre-Emption configuration";
                  uses apply-advanced;
    
                  leaf enable {
                    type empty;
                    description
                      "Preemption-enabled - default is disabled";
                  }
    
                  leaf gtpv1-pvi-disable {
                    type empty;
                    description
                      "Preemption Vulnerability indicator disabled - default is Enabled";
                  }
    
                  leaf gtpv1-pci-disable {
                    type empty;
                    description
                      "Preemption Capability indicator disabled - default is Enabled";
                  }
                }  // container preemption
    
                container gtp {
                  description
                    "GTP configuration";
                  uses mobile-gateway-config-gtp;
                }  // container gtp
    
                container home-plmn {
                  description
                    "Configure home PLMN MCC MNC values";
                  uses apply-advanced;
    
                  list mcc {
                    key "mcc mnc";
                    ordered-by user;
                    description
                      "Enter MCC value";
                    leaf mcc {
                      type string {
                        junos:posix-pattern "^[0-9]*$";
                        length "3";
                      }
                      description
                        "Mobile country code";
                    }
    
                    leaf mnc {
                      type string {
                        junos:posix-pattern "^[0-9]*$";
                        length "2 .. 3";
                      }
                      description
                        "Mobile network code";
                    }
    
                    uses apply-advanced;
                  }  // list mcc
                }  // container home-plmn
    
                container traceoptions {
                  description
                    "Trace options related to mobile subscriber management";
                  uses mobile-smd-traceoptions;
                }  // container traceoptions
    
                container call-rate-statistics {
                  presence
                    "enable call-rate-statistics";
                  description
                    "Call-rate-statistics options";
                  uses apply-advanced;
    
                  leaf interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "5 .. 120";
                      }
                    }
                    units "minutes";
                    default "60";
                    description
                      "Time interval in minutes";
                  }
    
                  leaf history {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 20";
                      }
                    }
                    default "1";
                    description
                      "Number of intervals";
                  }
                }  // container call-rate-statistics
    
                list service-selection-profiles {
                  key "name";
                  ordered-by user;
                  description
                    "Profile definition";
                  leaf name {
                    type string {
                      length "1 .. 63";
                    }
                    description
                      "Name of service selection profile";
                  }
    
                  uses apply-advanced;
    
                  list term {
                    key "name";
                    max-elements 64;
                    ordered-by user;
                    description
                      "Define a selection term";
                    leaf name {
                      type string {
                        length "1 .. 63";
                      }
                      description "Term name";
                    }
    
                    uses apply-advanced;
    
                    container from {
                      description
                        "Define match criteria";
                      uses apply-advanced;
    
                      leaf imsi {
                        type string {
                          junos:posix-pattern "^[0-9]*$";
                          length "1 .. 15";
                        }
                        description "Match IMSI";
                      }
    
                      leaf msisdn {
                        type string {
                          junos:posix-pattern "^[0-9]*$";
                          length "1 .. 15";
                        }
                        description
                          "Match MSISDN";
                      }
    
                      leaf imei {
                        type string {
                          junos:posix-pattern "^[0-9]*$";
                          length "1 .. 16";
                        }
                        description "Match IMEI";
                      }
    
                      leaf anonymous-user {
                        type empty;
                        description
                          "Match anonymous users";
                      }
    
                      leaf domain-name {
                        type string {
                          length "1 .. 63";
                        }
                        description
                          "Match domain name";
                      }
    
                      leaf roaming-status {
                        type enumeration {
                          enum "home" {
                            value 0;
                            description
                              "Home subscribers";
                          }
                          enum "roamer" {
                            value 1;
                            description
                              "Roaming subscribers";
                          }
                          enum "visitor" {
                            value 2;
                            description
                              "Visiting subscribers";
                          }
                        }
                        description
                          "Match roaming status";
                      }
    
                      container plmn {
                        description
                          "Match PLMN MCC MNC values";
                        uses apply-advanced;
    
                        list mcc {
                          key "mcc mnc";
                          max-elements 8;
                          ordered-by user;
                          description
                            "Enter MCC value";
                          leaf mcc {
                            type string {
                              junos:posix-pattern "^[0-9]*$";
                              length "3";
                            }
                            description
                              "Mobile country code";
                          }
    
                          leaf mnc {
                            type string {
                              junos:posix-pattern "^[0-9]*$";
                              length "2 .. 3";
                            }
                            description
                              "Mobile network code";
                          }
    
                          uses apply-advanced;
                        }  // list mcc
    
                        leaf except {
                          junos:must "(".. mcc")";
                          junos:must-message "MCC-MNC should be defined";
                          type empty;
                          description
                            "Except the specified plmns";
                        }
                      }  // container plmn
    
                      leaf charging-characteristics {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range "1 .. 65535";
                          }
                        }
                        description
                          "Match charging characteristics";
                      }
    
                      leaf maximum-bearers {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range
                              "1 .. 10000000";
                          }
                        }
                        description
                          "Maximum bearers in the gateway";
                      }
    
                      leaf peer {
                        type jt:ipaddr;
                        description
                          "IP address of the peer creating the session";
                      }
    
                      leaf peer-routing-instance {
                        junos:must "("routing-instances $$")";
                        junos:must-message "Routing instance not present";
                        type string {
                          junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                          junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                        }
                        description
                          "Routing instance of the peer creating the session";
                      }
    
                      leaf pdn-type {
                        type enumeration {
                          enum "ipv4" {
                            value 0;
                            description
                              "IPv4 Data type";
                          }
                          enum "ipv6" {
                            value 1;
                            description
                              "IPv6 Data type";
                          }
                          enum "ipv4v6" {
                            value 2;
                            description
                              "IPv4v6 Data type";
                          }
                        }
                        description
                          "Match pdn type";
                      }
    
                      leaf rat-type {
                        type enumeration {
                          enum "geran" {
                            value 0;
                            description
                              "RAT type is GERAN";
                          }
                          enum "utran" {
                            value 1;
                            description
                              "RAT type is UTRAN";
                          }
                          enum "eutran" {
                            value 2;
                            description
                              "RAT type is EUTRAN";
                          }
                          enum "wlan" {
                            value 3;
                            description
                              "RAT type is WLAN";
                          }
                          enum "hspa" {
                            value 4;
                            description
                              "RAT type is HSPA";
                          }
                        }
                        description
                          "Radio Access Technology  Type";
                      }
                    }  // container from
    
                    container then {
                      description
                        "Action to take if the 'from' condition is matched";
                      uses apply-advanced;
    
                      list redirect-peer {
                        junos:must "((!(".. apn-name") && (!(".. pcef-profile") && !(".. charging-profile"))))";
                        junos:must-message "Redirect peer cannot be combined with other actions";
                        key "name";
                        max-elements 8;
                        ordered-by user;
                        description
                          "IP address of the redirect peer";
                        leaf name {
                          type jt:ipaddr;
                          description
                            "Peer IP address";
                        }
                      }  // list redirect-peer
    
                      leaf accept {
                        junos:must "((!(".. apn-name") && (!(".. redirect-peer") && (!(".. pcef-profile") && !(".. charging-profile")))))";
                        junos:must-message "Accept can not be combined with other actions";
                        type empty;
                        description
                          "Stop matching futher terms and accept";
                      }
    
                      leaf reject {
                        junos:must "((!(".. apn-name") && (!(".. redirect-peer") && (!(".. accept") && (!(".. pcef-profile") && !(".. charging-profile"))))))";
                        junos:must-message "Reject can not be combined with other actions";
                        type empty;
                        description
                          "Reject the connection attempt";
                      }
    
                      leaf apn-name {
                        junos:must "((".. .. .. .. apn-services apns $$" && (!(".. .. .. .. apn-services apns $$ apn-type virtual") && !(".. .. .. .. apn-services apns $$ apn-type virtual-pre-authenticate"))))";
                        junos:must-message "Referenced apn must be configured";
                        type string {
                          length "1 .. 100";
                        }
                        description
                          "Real APN name";
                      }
    
                      leaf pcef-profile {
                        junos:must "(".. .. .. .. .. .. pcef profiles $$")";
                        junos:must-message "Referenced PCEF profile must be defined";
                        type string {
                          length "1 .. 63";
                        }
                        description
                          "PCEF profile for service selection profile";
                      }
    
                      leaf charging-profile {
                        junos:must "(".. .. .. ..  charging charging-profiles $$")";
                        junos:must-message "Referenced Charging Profile must be defined";
                        type string {
                          length "1 .. 128";
                        }
                        description
                          "Charging profile for service selection profile";
                      }
                    }  // container then
                  }  // list term
                }  // list service-selection-profiles
    
                container apn-services {
                  description
                    "Apn services configuration";
                  uses ggsn-pgw-apn-services;
                }  // container apn-services
    
                container system {
                  description
                    "System parameters";
                  uses unified-edge-ggsn-pgw-system;
                }  // container system
    
                container diameter {
                  description
                    "Diameter protocol parameters specific to gateway";
                  uses unified-edge-gateway-diameter;
                }  // container diameter
    
                container charging {
                  presence "enable charging";
                  description
                    "PGW charging profile definitions";
                  uses apply-advanced;
    
                  container traceoptions {
                    description
                      "Charging trace options";
                    uses charging-traceoptions;
                  }  // container traceoptions
    
                  container charging-profiles {
                    description
                      "Charging profile";
                    uses apply-advanced;
    
                    list charging-profile {
                      key "name";
                      max-elements 255;
                      uses juniper-charging-profiles;
                    }  // list charging-profile
                  }  // container charging-profiles
    
                  container transport-profiles {
                    description
                      "Transport profile definition";
                    uses apply-advanced;
    
                    list transport-profile {
                      key "name";
                      max-elements 8;
                      uses juniper-transport-profiles;
                    }  // list transport-profile
                  }  // container transport-profiles
    
                  container cdr-profiles {
                    description
                      "CDR profiles definition";
                    uses apply-advanced;
    
                    list cdr-profile {
                      key "name";
                      max-elements 255;
                      description
                        "CDR profile definition";
                      uses juniper-cdr-profiles;
                    }  // list cdr-profile
                  }  // container cdr-profiles
    
                  container trigger-profiles {
                    description
                      "Trigger profile definition";
                    uses apply-advanced;
    
                    list trigger-profile {
                      key "name";
                      max-elements 16;
                      ordered-by user;
                      uses juniper-trigger-profiles;
                    }  // list trigger-profile
                  }  // container trigger-profiles
    
                  container local-persistent-storage-options {
                    description
                      "Local persistent storage configuration";
                    uses juniper-charged-configuraton;
                  }  // container local-persistent-storage-options
    
                  container gtpp {
                    description
                      "Configuration for GTPP protocol for charging";
                    uses apply-advanced;
    
                    container source-interface {
                      description
                        "Source interface from which GTPP packets will be sent";
                      leaf interface-name {
                        junos:must "("interfaces $$")";
                        junos:must-message "Interface must be defined";
                        type union {
                          type jt:interface-name;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Interface name";
                      }
    
                      leaf ipv4-address {
                        type jt:ipv4addr;
                        description
                          "Source IPv4 address to be used";
                      }
                    }  // container source-interface
    
                    leaf destination-port {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 65535";
                        }
                      }
                      description
                        "Destination port number of the CGF Server";
                    }
    
                    leaf n3-requests {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint16 {
                          range "1 .. 5";
                        }
                      }
                      default "3";
                      description
                        "Number of retries of GTPP messages upon timeout";
                    }
    
                    leaf transport-protocol {
                      type enumeration {
                        enum "udp" {
                          value 0;
                          description
                            "GTPP over udp";
                        }
                        enum "tcp" {
                          value 1;
                          description
                            "GTPP over tcp";
                        }
                      }
                      description
                        "Default Transport protocol(udp/tcp) used";
                    }
    
                    leaf version {
                      type enumeration {
                        enum "v0" {
                          value 0;
                          description
                            "GTPP version V0";
                        }
                        enum "v1" {
                          value 1;
                          description
                            "GTPP version V1";
                        }
                        enum "v2" {
                          value 2;
                          description
                            "GTPP version V2";
                        }
                      }
                      description
                        "GTPP version V0|V1|V2";
                    }
    
                    leaf echo-interval {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "60 .. 255";
                        }
                      }
                      units "seconds";
                      default "60";
                      description
                        "GTPP echo-interval in seconds";
                    }
    
                    leaf no-path-management {
                      junos:must "(!(".. echo-interval"))";
                      junos:must-message "no-path-management option can not be used with echo-interval";
                      type empty;
                      description
                        "Disables path management";
                    }
    
                    leaf t3-response {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint16 {
                          range "1 .. 5";
                        }
                      }
                      units "seconds";
                      default "5";
                      description
                        "Response timeout value for GTPP request message";
                    }
    
                    leaf header-type {
                      type enumeration {
                        enum "short" {
                          value 0;
                          description
                            "GTPP short header";
                        }
                        enum "long" {
                          value 1;
                          description
                            "GTPP long (20-byte) header";
                        }
                      }
                      description
                        "GTPP protocol header type short|long";
                    }
    
                    leaf pending-queue-size {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 4096";
                        }
                      }
                      default "1024";
                      description
                        "Maximum number of DRT messages awaiting an ack";
                    }
    
                    leaf down-detect-time {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 255";
                        }
                      }
                      units "seconds";
                      default "10";
                      description
                        "Time (in sec) to wait before declaring a CGF as Down";
                    }
    
                    leaf reconnect-time {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "60 .. 255";
                        }
                      }
                      units "seconds";
                      default "60";
                      description
                        "Time (in sec) after which connection to the CGF server should be retried";
                    }
    
                    list peer {
                      key "name";
                      max-elements 24;
                      description
                        "GTPP peer object";
                      uses gtpp-peer;
                    }  // list peer
                  }  // container gtpp
                }  // container charging
    
                container ip-reassembly-profile {
                  description
                    "IP reassembly profile for mobile gateways";
                  uses apply-advanced;
    
                  leaf profile-name {
                    junos:must "("services ip-reassembly profile $$")";
                    junos:must-message "Referenced profile must be defined";
                    type string {
                      length "1 .. 32";
                    }
                    description
                      "IP reassembly profile name";
                  }
                }  // container ip-reassembly-profile
    
                container ipv6-router-advertisement {
                  presence
                    "enable ipv6-router-advertisement";
                  description
                    "IPv6 router advertisement configuration for GGSN/PGW";
                  uses mobile-gateways-ipv6-router-advertisement;
                }  // container ipv6-router-advertisement
    
                container software-datapath {
                  presence
                    "enable software-datapath";
                  description
                    "Mobility software datapath options";
                  uses apply-advanced;
    
                  container traceoptions {
                    description
                      "Mobility software datapath trace options";
                    uses software-datapath-traceoptions;
                  }  // container traceoptions
                }  // container software-datapath
    
                container inline-services {
                  description "Inline services";
                  uses apply-advanced;
    
                  container ip-reassembly {
                    presence
                      "enable ip-reassembly";
                    description "IP reassembly";
                    uses apply-advanced;
    
                    container service-set {
                      description
                        "Inline IP reassembly service set for mobile gateways";
                      uses apply-advanced;
    
                      leaf service-set-name {
                        junos:must "("services service-set $$")";
                        junos:must-message "Service set name must be defined in the [edit services service-set] hierarchy";
                        type string {
                          length "1 .. 63";
                        }
                        description
                          "Inline IP reassembly service-set name";
                      }
                    }  // container service-set
                  }  // container ip-reassembly
                }  // container inline-services
              }  // list ggsn-pgw
    
              list sgw {
                key "name";
                max-elements 16;
                ordered-by user;
                status deprecated;
                description
                  "Serving Gateway Configuration";
                leaf name {
                  type string {
                    length "1 .. 63";
                  }
                  description "Gateway name";
                }
    
                uses apply-advanced;
    
                leaf service-mode {
                  type enumeration {
                    enum "maintenance" {
                      value 0;
                      description
                        "Maintenance mode";
                    }
                  }
                  description "Service mode";
                }
    
                leaf maximum-bearers {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "100000 .. 12000000";
                    }
                  }
                  description
                    "Maximum bearers for the GW";
                }
    
                leaf local-policy-profile {
                  type string;
                  description
                    "Local profile for the system level";
                }
    
                container pfes {
                  presence "enable pfes";
                  description
                    "PFE Configuration";
                  uses apply-advanced;
    
                  leaf guaranteed-bandwidth {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "10 .. 100";
                      }
                    }
                    units "gigabits per second";
                    default "40";
                    description
                      "PFE guaranteed bandwidth";
                  }
    
                  leaf maximum-bearers {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "100 .. 510";
                      }
                    }
                    units "in thousands";
                    default "510";
                    description
                      "PFE maximum bearers";
                  }
    
                  leaf default-bearers-percentage {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "10 .. 100";
                      }
                    }
                    units
                      "percentage of maximum pfe bearers";
                    default "100";
                    description
                      "PFE default bearer percentage";
                  }
                }  // container pfes
    
                leaf anchor-pfe-guaranteed-bandwidth {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "10 .. 100";
                    }
                  }
                  units "gigabits per second";
                  default "40";
                  status deprecated;
                  description
                    "PFE guaranteed bandwidth";
                }
    
                leaf anchor-pfe-maximum-bearers {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "100 .. 510";
                    }
                  }
                  units "in thousands";
                  default "510";
                  status deprecated;
                  description
                    "PFE maximum bearers";
                }
    
                leaf anchor-pfe-default-bearers-percentage {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "10 .. 100";
                    }
                  }
                  units
                    "percentage of maximum pfe bearers";
                  default "100";
                  status deprecated;
                  description
                    "PFE default bearer percentage";
                }
    
                container preemption {
                  presence "enable preemption";
                  description
                    "Pre-Emption configuration";
                  uses apply-advanced;
    
                  leaf enable {
                    type empty;
                    description
                      "Preemption-enabled - default is disabled";
                  }
                }  // container preemption
    
                leaf remote-delete-on-peer-fail {
                  type empty;
                  description
                    "Send delete towards remote peer if other peer fails";
                }
    
                container gtp {
                  description
                    "GTP configuration";
                  uses sgw-config-gtp;
                }  // container gtp
    
                container home-plmn {
                  description
                    "Configure home PLMN MCC MNC values";
                  uses apply-advanced;
    
                  list mcc {
                    key "mcc mnc";
                    ordered-by user;
                    description
                      "Enter MCC value";
                    leaf mcc {
                      type string {
                        junos:posix-pattern "^[0-9]*$";
                        length "3";
                      }
                      description
                        "Mobile country code";
                    }
    
                    leaf mnc {
                      type string {
                        junos:posix-pattern "^[0-9]*$";
                        length "2 .. 3";
                      }
                      description
                        "Mobile network code";
                    }
    
                    uses apply-advanced;
                  }  // list mcc
                }  // container home-plmn
    
                container traceoptions {
                  description
                    "Trace options related to mobile subscriber management";
                  uses mobile-smd-traceoptions;
                }  // container traceoptions
    
                container call-rate-statistics {
                  presence
                    "enable call-rate-statistics";
                  description
                    "Call rate statistics options";
                  uses apply-advanced;
    
                  leaf interval {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "5 .. 120";
                      }
                    }
                    units "minutes";
                    default "60";
                    description
                      "Time interval in minutes";
                  }
    
                  leaf history {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 20";
                      }
                    }
                    default "1";
                    description
                      "Number of intervals";
                  }
                }  // container call-rate-statistics
    
                container system {
                  description
                    "System parameters";
                  uses unified-edge-sgw-system;
                }  // container system
    
                container charging {
                  presence "enable charging";
                  description
                    "SGW charging profile definitions";
                  uses apply-advanced;
    
                  container traceoptions {
                    description
                      "Charging trace options";
                    uses charging-traceoptions;
                  }  // container traceoptions
    
                  container charging-profiles {
                    description
                      "Charging profile";
                    uses apply-advanced;
    
                    list charging-profile {
                      key "name";
                      max-elements 255;
                      uses juniper-charging-profiles;
                    }  // list charging-profile
                  }  // container charging-profiles
    
                  container transport-profiles {
                    description
                      "Transport profile definition";
                    uses apply-advanced;
    
                    list transport-profile {
                      key "name";
                      max-elements 8;
                      uses juniper-transport-profiles;
                    }  // list transport-profile
                  }  // container transport-profiles
    
                  container cdr-profiles {
                    description
                      "CDR profiles definition";
                    uses apply-advanced;
    
                    list cdr-profile {
                      key "name";
                      max-elements 255;
                      description
                        "CDR profile definition";
                      uses juniper-cdr-profiles;
                    }  // list cdr-profile
                  }  // container cdr-profiles
    
                  container trigger-profiles {
                    description
                      "Trigger profile definition";
                    uses apply-advanced;
    
                    list trigger-profile {
                      key "name";
                      max-elements 16;
                      ordered-by user;
                      uses juniper-trigger-profiles;
                    }  // list trigger-profile
                  }  // container trigger-profiles
    
                  container local-persistent-storage-options {
                    description
                      "Local persistent storage configuration";
                    uses juniper-charged-configuraton;
                  }  // container local-persistent-storage-options
    
                  container gtpp {
                    description
                      "Configuration for GTPP protocol for charging";
                    uses apply-advanced;
    
                    container source-interface {
                      description
                        "Source interface from which GTPP packets will be sent";
                      leaf interface-name {
                        junos:must "("interfaces $$")";
                        junos:must-message "Interface must be defined";
                        type union {
                          type jt:interface-name;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Interface name";
                      }
    
                      leaf ipv4-address {
                        type jt:ipv4addr;
                        description
                          "Source IPv4 address to be used";
                      }
                    }  // container source-interface
    
                    leaf destination-port {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 65535";
                        }
                      }
                      description
                        "Destination port number of the CGF Server";
                    }
    
                    leaf n3-requests {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint16 {
                          range "1 .. 5";
                        }
                      }
                      default "3";
                      description
                        "Number of retries of GTPP messages upon timeout";
                    }
    
                    leaf transport-protocol {
                      type enumeration {
                        enum "udp" {
                          value 0;
                          description
                            "GTPP over udp";
                        }
                        enum "tcp" {
                          value 1;
                          description
                            "GTPP over tcp";
                        }
                      }
                      description
                        "Default Transport protocol(udp/tcp) used";
                    }
    
                    leaf version {
                      type enumeration {
                        enum "v0" {
                          value 0;
                          description
                            "GTPP version V0";
                        }
                        enum "v1" {
                          value 1;
                          description
                            "GTPP version V1";
                        }
                        enum "v2" {
                          value 2;
                          description
                            "GTPP version V2";
                        }
                      }
                      description
                        "GTPP version V0|V1|V2";
                    }
    
                    leaf echo-interval {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "60 .. 255";
                        }
                      }
                      units "seconds";
                      default "60";
                      description
                        "GTPP echo-interval in seconds";
                    }
    
                    leaf no-path-management {
                      junos:must "(!(".. echo-interval"))";
                      junos:must-message "no-path-management option can not be used with echo-interval";
                      type empty;
                      description
                        "Disables path management";
                    }
    
                    leaf t3-response {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint16 {
                          range "1 .. 5";
                        }
                      }
                      units "seconds";
                      default "5";
                      description
                        "Response timeout value for GTPP request message";
                    }
    
                    leaf header-type {
                      type enumeration {
                        enum "short" {
                          value 0;
                          description
                            "GTPP short header";
                        }
                        enum "long" {
                          value 1;
                          description
                            "GTPP long (20-byte) header";
                        }
                      }
                      description
                        "GTPP protocol header type short|long";
                    }
    
                    leaf pending-queue-size {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "1 .. 4096";
                        }
                      }
                      default "1024";
                      description
                        "Maximum number of DRT messages awaiting an ack";
                    }
    
                    leaf down-detect-time {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "0 .. 255";
                        }
                      }
                      units "seconds";
                      default "10";
                      description
                        "Time (in sec) to wait before declaring a CGF as Down";
                    }
    
                    leaf reconnect-time {
                      type union {
                        type string {
                          pattern "<.*>|$.*";
                        }
                        type uint32 {
                          range "60 .. 255";
                        }
                      }
                      units "seconds";
                      default "60";
                      description
                        "Time (in sec) after which connection to the CGF server should be retried";
                    }
    
                    list peer {
                      key "name";
                      max-elements 24;
                      description
                        "GTPP peer object";
                      uses gtpp-peer;
                    }  // list peer
                  }  // container gtpp
    
                  container global-profile {
                    description
                      "Global charging profiles";
                    uses apply-advanced;
    
                    leaf default-profile {
                      junos:must "("unified-edge gateways sgw ${sgw} charging charging-profiles $$")";
                      junos:must-message "Charging profile must be defined before it can be used";
                      type string;
                      description
                        "Global charging profile for SGW";
                    }
    
                    leaf home-profile {
                      junos:must "("unified-edge gateways sgw ${sgw} charging charging-profiles $$")";
                      junos:must-message "Charging profile must be defined before it can be used";
                      type string;
                      description
                        "Global home profile for SGW";
                    }
    
                    leaf roamer-profile {
                      junos:must "("unified-edge gateways sgw ${sgw} charging charging-profiles $$")";
                      junos:must-message "Charging profile must be defined before it can be used";
                      type string;
                      description
                        "Global roamer profile for SGW";
                    }
    
                    leaf visitor-profile {
                      junos:must "("unified-edge gateways sgw ${sgw} charging charging-profiles $$")";
                      junos:must-message "Charging profile must be defined before it can be used";
                      type string;
                      description
                        "Global visitor profile for SGW";
                    }
    
                    leaf-list profile-selection-order {
                      type enumeration {
                        enum "static" {
                          value 0;
                          description
                            "Select charging profile locally configured";
                        }
                        enum "serving" {
                          value 1;
                          description
                            "Select charging profile sent by MME";
                        }
                        enum "pgw-cg-addr" {
                          value 2;
                          description
                            "Select charging profile based on PGW's CG Address";
                        }
                      }
                      ordered-by user;
                      description
                        "Global charging profile selection order";
                    }
                  }  // container global-profile
                }  // container charging
    
                container ip-reassembly-profile {
                  description
                    "IP reassembly profile for mobile gateways";
                  uses apply-advanced;
    
                  leaf profile-name {
                    junos:must "("services ip-reassembly profile $$")";
                    junos:must-message "Referenced profile must be defined";
                    type string {
                      length "1 .. 32";
                    }
                    description
                      "IP reassembly profile name";
                  }
                }  // container ip-reassembly-profile
    
                container idle-mode-buffering {
                  description
                    "Idle mode buffering";
                  uses sgw-idle-mode-buffering;
                }  // container idle-mode-buffering
    
                container software-datapath {
                  presence
                    "enable software-datapath";
                  description
                    "Mobility software datapath options";
                  uses apply-advanced;
    
                  container traceoptions {
                    description
                      "Mobility software datapath trace options";
                    uses software-datapath-traceoptions;
                  }  // container traceoptions
                }  // container software-datapath
    
                container inline-services {
                  description "Inline services";
                  uses apply-advanced;
    
                  container ip-reassembly {
                    presence
                      "enable ip-reassembly";
                    description "IP reassembly";
                    uses apply-advanced;
    
                    container service-set {
                      description
                        "Inline IP reassembly service set for mobile gateways";
                      uses apply-advanced;
    
                      leaf service-set-name {
                        junos:must "("services service-set $$")";
                        junos:must-message "Service set name must be defined in the [edit services service-set] hierarchy";
                        type string {
                          length "1 .. 63";
                        }
                        description
                          "Inline IP reassembly service-set name";
                      }
                    }  // container service-set
                  }  // container ip-reassembly
                }  // container inline-services
              }  // list sgw
    
              list tdf {
                key "name";
                max-elements 1;
                ordered-by user;
                description
                  "Traffic Detection Function Configuration";
                uses unified-edge-tdf;
              }  // list tdf
            }  // container gateways
    
            container mobile-options {
              description "Mobile options";
              uses unified-edge-mobile-options;
            }  // container mobile-options
    
            container pcef {
              junos:must "(!("system services subscriber-management enable"))";
              junos:must-message "unified-edge pcef is not allowed only when enhanced-ip is configured";
              description "PCEF configuration";
              uses unified-edge-pcef;
            }  // container pcef
    
            container resource-management {
              description
                "Configure Resource Mangement Packet Steering Daemon";
              uses apply-advanced;
    
              container server {
                description
                  "Configure Resource Mangement Packet Steering Daemon";
                uses apply-advanced;
    
                container traceoptions {
                  description
                    "Resource Management Packet Steering Daemon trace options";
                  uses rmpsd-traceoptions-type;
                }  // container traceoptions
              }  // container server
    
              container client {
                description
                  "Configure Resource Mangement Packet Steering Client";
                uses apply-advanced;
    
                container traceoptions {
                  description
                    "Resource Management Packet Steering Client trace options";
                  uses rmps-clnt-traceoptions-type;
                }  // container traceoptions
              }  // container client
            }  // container resource-management
          }  // container unified-edge
        }  // grouping unified-edge-group
    
        grouping aaa-profile {
          description
            "AAA profile configuration";
          leaf name {
            type string {
              length "1 .. 32";
            }
            description "AAA profile name";
          }
    
          uses apply-advanced;
    
          container radius {
            junos:must "((".. radius authentication network-element" || (".. radius accounting network-element" || ".. radius accounting network-element-group")))";
            junos:must-message "authentication or accounting network element or network element group must be defined";
            description "Specify RADIUS options";
            uses aaa-profile-radius;
          }  // container radius
        }  // grouping aaa-profile
    
        grouping aaa-profile-radius {
          uses apply-advanced;
    
          container authentication {
            description
              "Specify RADIUS authentication parameters";
            uses apply-advanced;
    
            leaf network-element {
              junos:must "("access radius network-elements $$")";
              junos:must-message "referenced network-element must be defined";
              type string {
                length "1 .. 31";
              }
              description
                "The network-element used for authentication";
            }
          }  // container authentication
    
          container accounting {
            description
              "Specify RADIUS accounting parameters";
            uses apply-advanced;
    
            leaf network-element {
              junos:must "(!(".. network-element-group"))";
              junos:must-message "only one of accounting network-element or network-element-group can be specified";
              junos:must "("access radius network-elements $$")";
              junos:must-message "referenced network-element must be defined";
              type string {
                length "1 .. 31";
              }
              description
                "The network-element used for accounting";
            }
          }  // container accounting
    
          container policy {
            description
              "Specify RADIUS policy parameters";
            uses apply-advanced;
    
            container activation-attribute {
              description
                "Configure the attribute used for policy activation";
              uses apply-advanced;
    
              leaf code {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 255";
                  }
                }
                description "Attribute code";
              }
    
              leaf vendor-id {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 65534";
                  }
                }
                description
                  "Attribute vendor-id";
              }
            }  // container activation-attribute
    
            container deactivation-attribute {
              description
                "Configure the attribute used for policy deactivation";
              uses apply-advanced;
    
              leaf code {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 255";
                  }
                }
                description "Attribute code";
              }
    
              leaf vendor-id {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "0 .. 65534";
                  }
                }
                description
                  "Attribute vendor-id";
              }
            }  // container deactivation-attribute
    
            leaf coa-accounting {
              type enumeration {
                enum "allow" {
                  junos:must "(".. .. accounting network-element")";
                  junos:must-message "Accounting network-element must be configured";
                  value 0;
                  description
                    "Enable accounting to the CoA server";
                }
                enum "disallow" {
                  value 1;
                  description
                    "Disable accounting to the CoA server";
                }
              }
              description
                "Allow/disallow accounting to the CoA server";
            }
          }  // container policy
        }  // grouping aaa-profile-radius
    
        grouping aaa-traceoptions {
          description
            "Trace options related to AAA operation";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "init" {
                  value 0;
                  description
                    "Trace initialization events";
                }
                enum "config" {
                  value 1;
                  description
                    "Trace configuration events";
                }
                enum "general" {
                  value 2;
                  description
                    "Trace general events";
                }
                enum "request" {
                  value 3;
                  description "Trace requests";
                }
                enum "response" {
                  value 4;
                  description "Trace response";
                }
                enum "high-availability" {
                  value 5;
                  description
                    "Trace high availability events";
                }
                enum "debug" {
                  value 6;
                  description
                    "Trace debug internal events";
                }
                enum "request-in" {
                  value 7;
                  description
                    "Trace Incoming Diameter request events";
                }
                enum "request-out" {
                  value 8;
                  description
                    "Trace Outgoing Diameter request events";
                }
                enum "response-in" {
                  value 9;
                  description
                    "Trace Incoming Radius Client response events";
                }
                enum "response-out" {
                  value 10;
                  description
                    "Trace Outgoing Radius Client response events";
                }
                enum "client-request-in" {
                  value 11;
                  description
                    "Trace Incoming Radius Client request events";
                }
                enum "client-request-out" {
                  value 12;
                  description
                    "Trace Outgoing Radius Client request events";
                }
                enum "all" {
                  value 13;
                  description "Trace everything";
                }
              }
            }
          }  // list flag
    
          list protocol {
            key "name";
            ordered-by user;
            description "AAA Protocol to trace";
            leaf name {
              type enumeration {
                enum "radius" {
                  value 0;
                  description
                    "Trace radius protocols only";
                }
                enum "diameter" {
                  value 1;
                  description
                    "Trace diameter protocols only";
                }
                enum "all" {
                  value 2;
                  description
                    "Trace both radius and protocols";
                }
              }
            }
          }  // list protocol
        }  // grouping aaa-traceoptions
    
        grouping apply-advanced {
          description
            "Apply advanced configuration logic";
          leaf-list apply-groups {
            type string;
            ordered-by user;
            description
              "Groups from which to inherit configuration data";
          }
    
          leaf-list apply-groups-except {
            type string;
            ordered-by user;
            description
              "Don't inherit configuration data from these groups";
          }
    
          list apply-macro {
            key "name";
            ordered-by user;
            description
              "Macro and parameters for commit script expansion";
            uses apply-macro-type;
          }  // list apply-macro
        }  // grouping apply-advanced
    
        grouping apply-macro-type {
          description
            "Macro data for commit-script expansion";
          leaf name {
            type string;
            description
              "Name of the macro to be expanded";
          }
    
          list data {
            key "name";
            uses macro-data-type;
          }  // list data
        }  // grouping apply-macro-type
    
        grouping charging-traceoptions {
          description
            "Trace options related to charging operation";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
          }  // container file
    
          leaf level {
            type enumeration {
              enum "critical" {
                value 0;
                description
                  "Match critical error conditions";
              }
              enum "error" {
                value 1;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 2;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 3;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 4;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 5;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 6;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "init" {
                  value 0;
                  description
                    "Trace initialization events";
                }
                enum "config" {
                  value 1;
                  description
                    "Trace configuration events";
                }
                enum "general" {
                  value 2;
                  description
                    "Trace general events";
                }
                enum "triggers" {
                  value 3;
                  description
                    "Trace trigger information";
                }
                enum "cdr-encoding" {
                  value 4;
                  description
                    "Trace CDR encoding";
                }
                enum "transport" {
                  value 5;
                  description
                    "Trace transport group";
                }
                enum "path-management" {
                  value 6;
                  description
                    "Trace path management module";
                }
                enum "fsm" {
                  value 7;
                  description "Trace FSM";
                }
                enum "ipc" {
                  value 8;
                  description "Trace IPC";
                }
                enum "resource" {
                  value 9;
                  description "Trace resources";
                }
                enum "group-fsm" {
                  value 10;
                  description "Trace group FSM";
                }
                enum "client-fsm" {
                  value 11;
                  description "Trace client FSM";
                }
                enum "timers" {
                  value 12;
                  description "Trace resources";
                }
                enum "online" {
                  value 13;
                  description
                    "Trace Gy ASM module";
                }
                enum "tpm" {
                  value 14;
                  description
                    "Trace online processing module";
                }
                enum "all" {
                  value 15;
                  description "Trace everything";
                }
              }
            }
          }  // list flag
        }  // grouping charging-traceoptions
    
        grouping ggsn-pgw-apn-services {
          description
            "Apn services configuration";
          uses apply-advanced;
    
          container apns {
            description "Apn configuration";
            uses apply-advanced;
    
            list apn {
              key "name";
              uses ggsn-pgw-apn;
            }  // list apn
          }  // container apns
        }  // grouping ggsn-pgw-apn-services
    
        grouping ggsn-pgw-apn {
          description
            "Configure Access Point Names for ggsn and pgw";
          leaf name {
            type string {
              junos:posix-pattern "^[.0-9A-Za-z-]{1,100}$";
              junos:pattern-message "Must be a string of 100 or fewer characters and may contain letters, numbers, decimals and dashes.";
            }
            description "Access Point Name";
          }
    
          uses apply-advanced;
    
          leaf maximum-bearers {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "100000 .. 12000000";
              }
            }
            description
              "Maximum bearers for the APN";
          }
    
          leaf wait-accounting {
            type empty;
            description
              "Wait for accounting response for session creation";
          }
    
          leaf block-visitors {
            type empty;
            description
              "Do not allow visitors connect to the APN";
          }
    
          leaf allow-network-behind-mobile {
            type empty;
            description
              "Allow routing behind MS";
          }
    
          leaf local-policy-profile {
            type string;
            description
              "Local profile for the apn";
          }
    
          leaf apn-type {
            type enumeration {
              enum "real" {
                junos:must "(".. address-assignment")";
                junos:must-message "address-assignment must be specified for a real apn-type";
                junos:must "(".. mobile-interface")";
                junos:must-message "mobile-interface must be specified for a real apn-type";
                value 0;
                description "Real APN";
              }
              enum "virtual" {
                value 1;
                description "Virtual APN";
              }
              enum "virtual-pre-authenticate" {
                value 2;
                description
                  "Virtual APN pre authenticate";
              }
            }
            default "real";
            description "Specify APN type";
          }
    
          leaf description {
            type string {
              junos:posix-pattern "^.{1,80}$";
              junos:pattern-message "Must be 80 characters or less";
            }
            description
              "Text description of APN";
          }
    
          leaf apn-data-type {
            type enumeration {
              enum "ipv4" {
                value 0;
                description "IPv4 Data type";
              }
              enum "ipv6" {
                value 1;
                description "IPv6 Data type";
              }
              enum "ipv4v6" {
                value 2;
                description "IPv4v6 Data type";
              }
            }
            default "ipv4";
            description "Specify APN data type";
          }
    
          leaf mobile-interface {
            junos:must "("interfaces $$")";
            junos:must-message "referenced mif interface must be defined in the interfaces hierarchy";
            junos:must "(!(".. apn-type virtual-pre-authenticate"))";
            junos:must-message "mobile-interface cannot be specified for a virtual-pre-authenticate apn-type";
            junos:must "(!(".. apn-type virtual"))";
            junos:must-message "mobile-interface cannot be specified for a virtual apn-type";
            type union {
              type jt:interface-unit;
              type string {
                pattern "<.*>|$.*";
              }
            }
          }
    
          container address-assignment {
            junos:must "(!(".. apn-type virtual-pre-authenticate"))";
            junos:must-message "address-assignment cannot be specified for a virtual-pre-authenticate apn-type";
            junos:must "(!(".. apn-type virtual"))";
            junos:must-message "address-assignment cannot be specified for a virtual apn-type";
            presence "enable address-assignment";
            description
              "Specify address assignment options";
            uses apply-advanced;
    
            choice address-assignment-choice {
              leaf aaa {
                junos:must "(".. .. aaa-profile")";
                junos:must-message "AAA address assignment method is allowed only if AAA profile is configured under this APN";
                type empty;
                description
                  "AAA assigns addresses";
              }
              container local {
                presence "enable local";
                description
                  "Gateway assigns addresses locally";
                uses apply-advanced;
    
                leaf aaa-override {
                  type empty;
                  description
                    "Override local address by address from AAA";
                }
              }  // container local
              container dhcp-proxy-client {
                presence
                  "enable dhcp-proxy-client";
                description
                  "Gateway assigns address received when acting as DHCP proxy client";
                uses apply-advanced;
    
                leaf aaa-override {
                  type empty;
                  description
                    "Override address received from DHCP proxy client mechanism by address from AAA";
                }
              }  // container dhcp-proxy-client
            }  // choice address-assignment-choice
    
            container inet-pool {
              junos:must "((!(".. dhcp-proxy-client") || ".. dhcp-proxy-client aaa-override"))";
              junos:must-message "inet-pool can be configured with dhcp-proxy-client only if aaa-override is configured";
              description
                "Specify address group name or pool name for IPv4";
              uses apply-advanced;
    
              leaf group {
                junos:must "(!(".. pool"))";
                junos:must-message "only one of pool or group can be specified";
                type string {
                  length "1 .. 64";
                }
              }
    
              leaf pool {
                junos:must "(!(".. group"))";
                junos:must-message "only one of pool or group can be specified";
                type string {
                  length "1 .. 64";
                }
              }
    
              leaf-list exclude-pools {
                junos:must "(".. group")";
                junos:must-message "exclude-pools can be configured only if group is configured";
                type string {
                  length "1 .. 64";
                }
                ordered-by user;
                description
                  "Names of pool to exclude";
              }
            }  // container inet-pool
    
            container inet6-pool {
              junos:must "((!(".. dhcp-proxy-client") || ".. dhcp-proxy-client aaa-override"))";
              junos:must-message "inet6-pool can be configured with dhcp-proxy-client only if aaa-override is configured";
              description
                "Specify address group name or pool name for IPv6";
              uses apply-advanced;
    
              leaf group {
                junos:must "(!(".. pool"))";
                junos:must-message "only one of pool or group can be specified";
                type string {
                  length "1 .. 64";
                }
              }
    
              leaf pool {
                junos:must "(!(".. group"))";
                junos:must-message "only one of pool or group can be specified";
                type string {
                  length "1 .. 64";
                }
              }
    
              leaf-list exclude-v6pools {
                junos:must "(".. group")";
                junos:must-message "exclude-v6pools can be configured only if group is configured";
                type string {
                  length "1 .. 64";
                }
                ordered-by user;
                description
                  "Names of pool to exclude";
              }
            }  // container inet6-pool
    
            container dhcpv4-proxy-client-profile {
              junos:must "(".. dhcp-proxy-client")";
              junos:must-message "dhcpv4-proxy-client-profile can only be configured if address-assignment option is dhcp-proxy-client";
              presence
                "enable dhcpv4-proxy-client-profile";
              description
                "DHCPv4 proxy client profile for this APN";
              uses apply-advanced;
    
              leaf logical-system {
                type string {
                  junos:posix-pattern "^[a-zA-Z0-9_-]{1,63}$";
                  junos:pattern-message "Logical-system name is a string consisting of up to 63 letters, numbers, dashes and underscores";
                }
                default "default";
                description
                  "Logical system where this DHCP proxy client profile is defined. If this option is not specified, default logical-system will be used";
              }
    
              leaf routing-instance {
                type string {
                  junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                  junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                }
                default "default";
                description
                  "Routing-instance where this DHCP proxy client profile is defined. If this option is not specified, default routing-instance will be used";
              }
    
              leaf profile-name {
                type string {
                  length "1 .. 63";
                }
                description
                  "Name of DHCP proxy client profile";
              }
    
              leaf pool-name {
                type string {
                  length "1 .. 63";
                }
                description
                  "Name of the pool to be sent to DHCP server. It is optional";
              }
            }  // container dhcpv4-proxy-client-profile
    
            container dhcpv6-proxy-client-profile {
              junos:must "(".. dhcp-proxy-client")";
              junos:must-message "dhcpv6-proxy-client-profile can only be configured if address-assignment option is dhcp-proxy-client";
              presence
                "enable dhcpv6-proxy-client-profile";
              description
                "DHCPv6 proxy client profile for this APN";
              uses apply-advanced;
    
              leaf logical-system {
                type string {
                  junos:posix-pattern "^[a-zA-Z0-9_-]{1,63}$";
                  junos:pattern-message "Logical-system name is a string consisting of up to 63 letters, numbers, dashes and underscores";
                }
                default "default";
                description
                  "Logical system where this DHCP proxy client profile is defined. If this option is not specified, default logical-system will be used";
              }
    
              leaf routing-instance {
                type string {
                  junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                  junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                }
                default "default";
                description
                  "Routing-instance where this DHCP proxy client profile is defined. If this option is not specified, default routing-instance will be used";
              }
    
              leaf profile-name {
                type string {
                  length "1 .. 63";
                }
                description
                  "Name of DHCP proxy client profile";
              }
    
              leaf pool-name {
                type string {
                  length "1 .. 63";
                }
                description
                  "Name of the pool to be sent to DHCP server. It is optional";
              }
            }  // container dhcpv6-proxy-client-profile
    
            container allow-static-ip-address {
              presence
                "enable allow-static-ip-address";
              description
                "Allow user equipment provided static address";
              uses apply-advanced;
    
              leaf no-aaa-verify {
                type empty;
                description
                  "Do not verify the address provided by user equipment through AAA";
              }
            }  // container allow-static-ip-address
          }  // container address-assignment
    
          leaf session-timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 720";
              }
            }
            units "hours";
            default "0";
            description "Session timeout value";
          }
    
          leaf idle-timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 300";
              }
            }
            units "minutes";
            default "0";
            description "Idle timeout value";
          }
    
          leaf idle-timeout-direction {
            type enumeration {
              enum "uplink" {
                value 0;
                description
                  "Enable idle timeout for data traffic flowing in uplink only";
              }
              enum "both" {
                value 1;
                description
                  "Enable idle timeout for data traffic flowing in both directions";
              }
            }
            description
              "Specific idle timeout direction";
          }
    
          leaf restriction-value {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 4";
              }
            }
            default "0";
            description "Restriction value";
          }
    
          leaf aaa-profile {
            junos:must "("unified-edge aaa mobile-profiles $$")";
            junos:must-message "referenced AAA name must be defined";
            type string {
              length "1 .. 32";
            }
            description
              "Specify AAA profile for Authorization and Accounting";
          }
    
          container user-options {
            description "Specify user options";
            uses apply-advanced;
    
            choice user-name-choice {
              leaf user-name {
                type string {
                  junos:posix-pattern "^[A-Za-z.0-9_@-]{1,63}$";
                  junos:pattern-message "Must be in the form user or user@foo.com consisting up to 63 letters, numbers, periods underscores and dashes";
                }
                description
                  "Default user name for user authentication";
              }
              leaf use-msisdn {
                type empty;
                description
                  "Use msisdn for user authentication";
              }
              leaf use-imsi {
                type empty;
                description
                  "Use imsi for user authentication";
              }
              leaf use-apnname {
                type empty;
                description
                  "Use APN name for user authentication";
              }
            }  // choice user-name-choice
    
            leaf password {
              type jt:unreadable;
              description
                "Default user password for user authentication";
            }
    
            leaf override-pco {
              junos:must "(((".. user-name" || (".. use-imsi" || (".. use-msisdn" || ".. use-apnname"))) && ".. password"))";
              junos:must-message "Overriding PCO is only possible if default username and password is set";
              type empty;
              description
                "Override the username and password received in PCO";
            }
          }  // container user-options
    
          container charging {
            description
              "Default charging profiles";
            uses apply-advanced;
    
            leaf default-profile {
              junos:must "(".. .. .. .. ..  charging charging-profiles $$")";
              junos:must-message "Charging profile must be defined";
              type string;
              description
                "Default charging profile for the APN";
            }
    
            leaf home-profile {
              junos:must "(".. .. .. .. ..  charging charging-profiles $$")";
              junos:must-message "Charging profile must be defined";
              type string;
              description
                "Default home profile for the APN";
            }
    
            leaf roamer-profile {
              junos:must "(".. .. .. .. ..  charging charging-profiles $$")";
              junos:must-message "Charging profile must be defined";
              type string;
              description
                "Default roamer profile for the APN";
            }
    
            leaf visitor-profile {
              junos:must "(".. .. .. .. ..  charging charging-profiles $$")";
              junos:must-message "Charging profile must be defined";
              type string;
              description
                "Default visitor profile for the APN";
            }
    
            leaf-list profile-selection-order {
              type enumeration {
                enum "radius" {
                  value 0;
                  description
                    "Select charging profile sent by RADIUS";
                }
                enum "static" {
                  value 1;
                  description
                    "Select charging profile locally configured";
                }
                enum "serving" {
                  value 2;
                  description
                    "Select charging profile sent by SGSN or SGW";
                }
              }
              ordered-by user;
              description
                "Default charging profile selection order";
            }
          }  // container charging
    
          container dns-server {
            presence "enable dns-server";
            description "Specify DNS servers ";
            uses apply-advanced;
    
            leaf primary-v4 {
              type jt:ipv4addr;
              description
                "Primary IPv4 DNS server address";
            }
    
            leaf secondary-v4 {
              type jt:ipv4addr;
              description
                "Secondary IPv4 DNS server address";
            }
    
            leaf primary-v6 {
              type jt:ipv6addr;
              description
                "Primary IPv6 DNS server address";
            }
    
            leaf secondary-v6 {
              type jt:ipv6addr;
              description
                "Secondary IPv6 DNS server address";
            }
          }  // container dns-server
    
          container nbns-server {
            presence "enable nbns-server";
            description "Specify NBNS servers ";
            uses apply-advanced;
    
            leaf primary-v4 {
              type jt:ipv4addr;
              description
                "Primary IPv4 NBNS server address";
            }
    
            leaf secondary-v4 {
              type jt:ipv4addr;
              description
                "Secondary IPv4 NBNS server address";
            }
          }  // container nbns-server
    
          list p-cscf {
            key "name";
            max-elements 4;
            ordered-by user;
            description
              "Specify IPv4 or IPv6 P-CSCF server";
            leaf name {
              type jt:ipaddr;
              description
                "IPv4 or IPv6 P-CSCF server address";
            }
    
            uses apply-advanced;
          }  // list p-cscf
    
          container selection-mode {
            presence "enable selection-mode";
            description
              "Specify APN access options";
            uses apply-advanced;
    
            leaf no-subscribed {
              type empty;
              description
                "Reject subscribed verified Users";
            }
    
            leaf from-ms {
              type empty;
              description
                "Admit MS provided APN, subscription not verified";
            }
    
            leaf from-sgsn {
              type empty;
              description
                "Admit Network provided APN, subscription not verified";
            }
          }  // container selection-mode
    
          leaf service-selection-profile {
            junos:must "(".. .. .. .. service-selection-profiles $$")";
            junos:must-message "Referenced service selection profile must be configured";
            type string {
              length "1 .. 100";
            }
            description
              "Service selection profile for this APN";
          }
    
          container network-behind-mobile {
            description
              "Specify IMSI nbm-address ";
            uses apply-advanced;
    
            list imsi {
              key "name";
              ordered-by user;
              description
                "Prefixes for a given IMSI";
              leaf name {
                type string {
                  junos:posix-pattern "^[0-9]*$";
                  length "1 .. 15";
                }
                description "IMSI";
              }
    
              uses apply-advanced;
    
              leaf-list prefix-v4 {
                type jt:ipv4prefix;
                ordered-by user;
                description
                  "IPv4 Prefix Address";
              }
    
              leaf-list prefix-v6 {
                type jt:ipv6prefix;
                ordered-by user;
                description
                  "IPv6 Prefix Address";
              }
            }  // list imsi
          }  // container network-behind-mobile
    
          leaf service-mode {
            type enumeration {
              enum "maintenance" {
                value 0;
                description "Maintenance mode";
              }
            }
            description "Service mode";
          }
    
          container call-rate-statistics {
            presence
              "enable call-rate-statistics";
            description
              "Call-rate-statistics options";
            uses apply-advanced;
    
            leaf interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "5 .. 120";
                }
              }
              units "minutes";
              default "60";
              description
                "Time interval in minutes";
            }
    
            leaf history {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 20";
                }
              }
              default "1";
              description "Number of intervals";
            }
          }  // container call-rate-statistics
    
          leaf pcef-profile {
            junos:must "(".. .. .. .. .. .. pcef profiles $$")";
            junos:must-message "Referenced PCEF profile must be defined";
            type string {
              length "1 .. 63";
            }
            description
              "PCEF profile for the apn";
          }
    
          container verify-source-address {
            presence
              "enable verify-source-address";
            description
              "UE address verification - default is enabled";
            uses apply-advanced;
    
            leaf disable {
              type empty;
              description
                "Disable UE address verification";
            }
          }  // container verify-source-address
    
          container inter-mobile-traffic {
            description
              "Inter mobile traffic redirect options";
            uses apply-advanced;
    
            container redirect {
              presence "enable redirect";
              description "Redirect options";
              uses apply-advanced;
    
              leaf redirect-ip {
                junos:must "(!(".. .. deny"))";
                junos:must-message "redirect is not allowed when deny is present";
                type jt:ipv4addr;
                description
                  "Redirect destination address";
              }
    
              choice instance {
                leaf routing-instance {
                  junos:must "("routing-instances $$")";
                  junos:must-message "referenced routing instance must be defined";
                  type union {
                    type string {
                      pattern "default";
                    }
                    type string {
                      junos:posix-pattern "!^((__.*__)|(all)|(.*[ ].*)|("")|(.{129,}))$";
                      junos:pattern-message "Must be a non-reserved string of 128 characters or less with no spaces.";
                    }
                  }
                  description
                    "Routing instance used for redirect";
                }
              }  // choice instance
            }  // container redirect
    
            leaf deny {
              junos:must "(!(".. redirect"))";
              junos:must-message "deny is not allowed when redirect is present";
              type empty;
              description
                "Do not allow inter mobile traffic";
            }
          }  // container inter-mobile-traffic
        }  // grouping ggsn-pgw-apn
    
        grouping gtpp-peer {
          leaf name {
            type string;
            description "GTPP CGF name";
          }
    
          uses apply-advanced;
    
          leaf destination-ipv4-address {
            type jt:ipv4addr;
            description "CGF Server IP address";
          }
    
          container source-interface {
            description
              "Source interface from which GTPP packets will be sent";
            leaf interface-name {
              junos:must "("interfaces $$")";
              junos:must-message "Interface must be defined";
              type union {
                type jt:interface-name;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface name";
            }
    
            leaf ipv4-address {
              type jt:ipv4addr;
              description
                "Source IPv4 address to be used";
            }
          }  // container source-interface
    
          leaf destination-port {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 65535";
              }
            }
            description
              "Destination port number of the CGF Server";
          }
    
          leaf transport-protocol {
            type enumeration {
              enum "udp" {
                value 0;
                description "GTPP over udp";
              }
              enum "tcp" {
                value 1;
                description "GTPP over tcp";
              }
            }
            description
              "Default Transport protocol(udp/tcp) used";
          }
    
          leaf version {
            type enumeration {
              enum "v0" {
                value 0;
                description "GTPP version V0";
              }
              enum "v1" {
                value 1;
                description "GTPP version V1";
              }
              enum "v2" {
                value 2;
                description "GTPP version V2";
              }
            }
            description "GTPP version V0|V1|V2";
          }
    
          leaf echo-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "60 .. 255";
              }
            }
            units "seconds";
            default "60";
            description
              "GTPP echo-interval in seconds";
          }
    
          leaf n3-requests {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 5";
              }
            }
            default "3";
            description
              "Number of retries of GTPP messages upon timeout";
          }
    
          leaf t3-response {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 5";
              }
            }
            units "seconds";
            default "5";
            description
              "Response timeout value for GTPP request message";
          }
    
          leaf header-type {
            type enumeration {
              enum "short" {
                value 0;
                description "GTPP short header";
              }
              enum "long" {
                value 1;
                description
                  "GTPP long (20-byte) header";
              }
            }
            description
              "GTPP protocol header type short|long";
          }
    
          leaf pending-queue-size {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 4096";
              }
            }
            default "1024";
            description
              "Maximum number of DRT messages awaiting an ack";
          }
    
          leaf down-detect-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 255";
              }
            }
            units "seconds";
            default "10";
            description
              "Time (in sec) to wait before declaring a CGF as Down";
          }
    
          leaf reconnect-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "60 .. 255";
              }
            }
            units "seconds";
            default "60";
            description
              "Time (in sec) after which connection to the CGF server should be retried";
          }
    
          leaf no-path-management {
            junos:must "(!(".. echo-interval"))";
            junos:must-message "no-path-management option can not be used with echo-interval";
            type empty;
            description
              "Disables path management";
          }
        }  // grouping gtpp-peer
    
        grouping juniper-cdr-profiles {
          description "CDR profiles";
          leaf name {
            type string {
              length "1 .. 128";
            }
            description "CDR profile name";
          }
    
          uses apply-advanced;
    
          leaf description {
            type string;
            description
              "Text description of this profile";
          }
    
          leaf enable-reduced-partial-cdrs {
            type empty;
            description
              "Enable reduced partial CDR's";
          }
    
          leaf report-requested-apn {
            type empty;
            description
              "Report requested/virtual APN in CDR's";
          }
    
          container exclude-attributes {
            description
              "Specify excluded IE options in CDRs";
            uses apply-advanced;
    
            leaf apn-ni {
              type empty;
              description
                "Exclude APN network identifier IE in the CDR";
            }
    
            leaf apn-selection-mode {
              type empty;
              description
                "Exclude APN selection mode IE in the CDR";
            }
    
            leaf cc-selection-mode {
              type empty;
              description
                "Exclude charging characteristic selection mode IE in the CDR";
            }
    
            leaf dynamic-address {
              type empty;
              description
                "Exclude dynamic address IE in the CDR";
            }
    
            leaf pgw-plmn-identifier {
              type empty;
              description
                "Exclude PGW PLMN identifier IE in the CDR";
            }
    
            leaf list-of-traffic-volumes {
              type empty;
              description
                "Exclude list of traffic volumes in the CDR";
            }
    
            leaf list-of-service-data {
              type empty;
              description
                "Exclude list of service data in the CDR";
            }
    
            leaf lrsn {
              type empty;
              description
                "Exclude local record sequece number IE in the CDR";
            }
    
            leaf ms-time-zone {
              type empty;
              description
                "Exclude MS time zone IE in the CDR";
            }
    
            leaf network-initiation {
              type empty;
              description
                "Exclude network initiation flag in the CDR";
            }
    
            leaf node-id {
              type empty;
              description
                "Exclude node ID IE in the CDR";
            }
    
            leaf pdn-connection-id {
              type empty;
              description
                "Exclude PDN connection ID IE in the CDR";
            }
    
            leaf pdppdn-type {
              type empty;
              description
                "Exclude PDP or PDN type IE in the CDR";
            }
    
            leaf rat-type {
              type empty;
              description
                "Exclude RAT type IE in the CDR";
            }
    
            leaf record-sequence-number {
              type empty;
              description
                "Exclude record sequence number IE in the CDR";
            }
    
            leaf served-imeisv {
              type empty;
              description
                "Exclude served IMEI IE in the CDR";
            }
    
            leaf served-msisdn {
              type empty;
              description
                "Exclude served MSISDN IE in the CDR";
            }
    
            leaf served-pdppdn-address {
              type empty;
              description
                "Exclude served PDP context or IP CAN bearer address IE in the CDR";
            }
    
            leaf serving-node-plmn-identifier {
              type empty;
              description
                "Exclude serving node PLMN identifier IE in the CDR";
            }
    
            leaf start-time {
              type empty;
              description
                "Exclude start time IE in the CDR";
            }
    
            leaf stop-time {
              type empty;
              description
                "Exclude stop time IE in the CDR";
            }
    
            leaf user-location-information {
              type empty;
              description
                "Exclude user location IE in the CDR";
            }
    
            leaf sgw-change {
              type empty;
              description
                "S-GW specific: Exclude S-GW change IE in the CDR";
            }
    
            leaf pgw-address-used {
              type empty;
              description
                "S-GW specific: Exclude P-GW address used IE in the CDR";
            }
    
            leaf ps-furnish-info {
              type empty;
              description
                "Exclude PS Furnish charging info ";
            }
    
            leaf served-pdp-address-extension {
              type empty;
              description
                "Exclude served pdp pdn address extension ";
            }
          }  // container exclude-attributes
    
          leaf node-id {
            type enumeration {
              enum "hostname" {
                value 0;
                description "Use host name";
              }
              enum "hostname-spic" {
                value 1;
                description
                  "Use host name and SPIC id";
              }
              enum "ipaddress-spic" {
                value 2;
                description
                  "Use IP address and SPIC id ";
              }
            }
            default "ipaddress-spic";
            description
              "Default node identifier";
          }
        }  // grouping juniper-cdr-profiles
    
        grouping juniper-charged-configuraton {
          description
            "Local persistent storage configuration";
          uses apply-advanced;
    
          container file-age {
            presence "enable file-age";
            description "Configures file age";
            leaf age {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "20 .. 7200";
                }
              }
              units "minutes";
              default "120";
              description "File age";
            }
    
            leaf disable {
              type empty;
              description
                "Disable file age trigger";
            }
          }  // container file-age
    
          container file-size {
            presence "enable file-size";
            description "Configures file size";
            leaf size {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 1024";
                }
              }
              units "megabytes";
              default "10";
              description "File size";
            }
    
            leaf disable {
              type empty;
              description
                "Disable file size trigger";
            }
          }  // container file-size
    
          leaf cdrs-per-file {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "5000 .. 1000000";
              }
            }
            description
              "Number of CDRs per file";
          }
    
          leaf user-name {
            type string {
              length "1 .. 32";
            }
            description
              "User authorized to access the files";
          }
    
          leaf disable-replication {
            type empty;
            description
              "Disable replication of CDR log files to standby RE";
          }
    
          leaf world-readable {
            type empty;
            description
              "CDR log files can be accessed by all users";
          }
    
          leaf file-format {
            type enumeration {
              enum "3gpp" {
                value 0;
                description
                  "File data will be stored in 3gpp 32 297 format";
              }
              enum "raw-asn" {
                value 1;
                description
                  "File data will be stored in raw ASN1 format";
              }
            }
            default "3gpp";
            description "CDR file format";
          }
    
          leaf file-name-private-extension {
            type string {
              length "1 .. 16";
            }
            description
              "File name private extension";
          }
    
          leaf file-creation-policy {
            type enumeration {
              enum "shared-file" {
                value 0;
                description
                  "File is shared across all SP nodes for a charging group";
              }
              enum "unique-file" {
                value 1;
                description
                  "Unique file is created for charging group per SP node";
              }
            }
            default "shared-file";
            description
              "File creation policy (shared/unique)";
          }
    
          container disk-space-policy {
            presence "enable disk-space-policy";
            description
              "Policy on what should be done when disk runs out of space";
            uses apply-advanced;
    
            container water-mark-level1 {
              presence
                "enable water-mark-level1";
              description
                "Water mark level1 percentage and notification";
              uses apply-advanced;
    
              leaf percentage {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 100";
                  }
                }
                default "70";
                description
                  "The water mark level1 percentage, a value of 0 will disable it";
              }
    
              leaf notification-level {
                type enumeration {
                  enum "snmp-alarm" {
                    value 0;
                    description
                      "Generate an snmp alaram";
                  }
                  enum "syslog" {
                    value 1;
                    description
                      "Generate syslog";
                  }
                  enum "both" {
                    value 2;
                    description
                      "Generate both syslog and snmp-alarm";
                  }
                }
                default "syslog";
                description
                  "Notification when water-mark-level is reached";
              }
            }  // container water-mark-level1
    
            container water-mark-level2 {
              presence
                "enable water-mark-level2";
              description
                "Water mark level2 percentage and notification";
              uses apply-advanced;
    
              leaf percentage {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 100";
                  }
                }
                default "80";
                description
                  "The water mark level2 percentage, a value of 0 will disable it";
              }
    
              leaf notification-level {
                type enumeration {
                  enum "snmp-alarm" {
                    value 0;
                    description
                      "Generate an snmp alaram";
                  }
                  enum "syslog" {
                    value 1;
                    description
                      "Generate syslog";
                  }
                  enum "both" {
                    value 2;
                    description
                      "Generate both syslog and snmp-alarm";
                  }
                }
                default "syslog";
                description
                  "Notification when water-mark-leve2 is reached";
              }
            }  // container water-mark-level2
    
            container water-mark-level3 {
              presence
                "enable water-mark-level3";
              description
                "Water mark level3 percentage and notification";
              uses apply-advanced;
    
              leaf percentage {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 100";
                  }
                }
                default "90";
                description
                  "The water mark level3 percentage";
              }
    
              leaf notification-level {
                type enumeration {
                  enum "snmp-alarm" {
                    value 0;
                    description
                      "Generate an snmp alaram";
                  }
                  enum "syslog" {
                    value 1;
                    description
                      "Generate syslog";
                  }
                  enum "both" {
                    value 2;
                    description
                      "Generate both syslog and snmp-alarm";
                  }
                }
                default "syslog";
                description
                  "Notification when water-mark-level3 is reached";
              }
            }  // container water-mark-level3
          }  // container disk-space-policy
    
          container traceoptions {
            description
              "Charged persistent local-storage CDR trace options";
            uses charged_traceoptions_type;
          }  // container traceoptions
        }  // grouping juniper-charged-configuraton
    
        grouping charged_traceoptions_type {
          description
            "Trace options for charged persistent local-storage for CDRs";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "critical" {
                value 0;
                description
                  "Match critical error conditions";
              }
              enum "error" {
                value 1;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 2;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 3;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 4;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 5;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 6;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Charged operations to include in debugging trace";
            leaf name {
              type enumeration {
                enum "general" {
                  value 0;
                  description
                    "Charged miscellaneous operations";
                }
                enum "mirror" {
                  value 1;
                  description
                    "Charged mirroring operations";
                }
                enum "connection" {
                  value 2;
                  description
                    "Charged connection establishment with peers";
                }
                enum "file-operations" {
                  value 3;
                  description
                    "Charged file open/write/close operations";
                }
                enum "journaling" {
                  value 4;
                  description
                    "Charged file journaling operations";
                }
                enum "all" {
                  value 5;
                  description
                    "All charged operations";
                }
              }
            }
          }  // list flag
        }  // grouping charged_traceoptions_type
    
        grouping juniper-charging-profiles {
          description "Charging profiles";
          leaf name {
            type string {
              length "1 .. 128";
            }
            description "Charging profile name";
          }
    
          uses apply-advanced;
    
          leaf description {
            type string {
              junos:posix-pattern "^.{1,255}$";
              junos:pattern-message "Must be a string of 255 characters or less";
            }
            description
              "Text description of this profile";
          }
    
          leaf profile-id {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 65534";
              }
            }
            description
              "Profile id that is matched against GTP charging characteristic or  	     AAA charging profile number (applicable only in the case of ggsn-pgw)";
          }
    
          leaf default-service-id {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 4294967294";
              }
            }
            description
              "Default service ID to be used for charging, applicable for GGSN/P-GW only";
          }
    
          leaf default-rating-group {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 4294967294";
              }
            }
            description
              "Default rating group to be used for charging, applicable for GGSN/P-GW only";
          }
    
          leaf default-l7-rating-group {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 4294967294";
              }
            }
            description
              "Default rating group to be used for L7 charging";
          }
    
          container transport-profile {
            description
              "Transport profile referred by this charging profile";
            uses apply-advanced;
    
            leaf transport-profile-name {
              junos:must "(".. .. .. .. transport-profiles $$")";
              junos:must-message "Transport profile has not been defined";
              type string {
                length "1 .. 128";
              }
              description
                "Provide the transport profile name";
            }
          }  // container transport-profile
    
          container cdr-profile {
            description
              "Transport profile referred by this charging profile";
            uses apply-advanced;
    
            leaf cdr-profile-name {
              junos:must "(".. .. .. .. cdr-profiles $$")";
              junos:must-message "CDR profile should be defined before it can be used";
              type string {
                length "1 .. 128";
              }
              description
                "Provide the CDR profile name";
            }
          }  // container cdr-profile
    
          list trigger-profile {
            key "name";
            description
              "Trigger profile referred by this charging profile";
            leaf name {
              junos:must "(".. .. .. .. trigger-profiles $$")";
              junos:must-message "Trigger profile should be defined before it can be used";
              type string {
                length "1 .. 128";
              }
              description
                "Set the trigger profile name";
            }
    
            uses apply-advanced;
    
            leaf-list rating-group {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 4294967294";
                }
              }
              ordered-by user;
              description
                "Input rating-group identifier";
            }
          }  // list trigger-profile
    
          leaf service-mode {
            type enumeration {
              enum "maintenance" {
                value 0;
                description "Maintenance mode";
              }
            }
            description "Service mode";
          }
        }  // grouping juniper-charging-profiles
    
        grouping juniper-transport-profiles {
          description "Transport profiles";
          leaf name {
            type string {
              length "1 .. 128";
            }
            description "Transport profile name";
          }
    
          uses apply-advanced;
    
          leaf description {
            type string;
            description
              "Text description of this profile";
          }
    
          container online {
            presence "enable online";
            description
              "Online charging configuration in transport profile";
            uses apply-advanced;
    
            leaf tx-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 300";
                }
              }
              default "5";
              description
                "Timeout value waiting for response";
            }
    
            leaf session-failover-not-supported {
              type empty;
              description
                "Disable online charging sessions failover to alternate server";
            }
    
            leaf diameter-profile {
              junos:must "("unified-edge diameter-profiles gy-profile $$")";
              junos:must-message "Referenced DCCA profile must be defined";
              type string;
              description
                "Gy diameter profile name";
            }
    
            leaf service-context-id {
              type string {
                length "1 .. 100";
              }
              description
                "Service Context ID . If not configured, default service-context-id is 9.32251@3gpp.org";
            }
    
            leaf charging-function-name {
              type string {
                length "1 .. 256";
              }
              description
                "Charging Function Name corresponds to PCRF referred online charging function name ";
            }
    
            leaf single-mscc {
              type empty;
              description
                "Include only one MSCC AVP in CCR message";
            }
    
            leaf no-mscc-in-ccrt {
              type empty;
              description
                "Do not include MSCC AVP in CCR-T message";
            }
    
            leaf no-initiate-session-on-activation {
              type empty;
              description
                "Do not initiate diameter session on activation";
            }
    
            leaf quota-request-on-activation {
              type empty;
              description
                "Request quota only on activation";
            }
    
            leaf all-rgs-on-termination {
              type empty;
              description
                "Report all (active/non-active) RGs on termination to OCS";
            }
          }  // container online
    
          container offline {
            presence "enable offline";
            description
              "Offline charging in the transport profile";
            uses apply-advanced;
    
            container charging-gateways {
              presence
                "enable charging-gateways";
              description
                "Charging gateway group information";
              uses apply-advanced;
    
              leaf cdr-release {
                type enumeration {
                  enum "r99" {
                    value 0;
                    description
                      "CDR release R99";
                  }
                  enum "r7" {
                    value 1;
                    description "CDR release R7";
                  }
                  enum "r8" {
                    value 2;
                    description
                      "CDR release R8. For S-GW, R8 should only be configured";
                  }
                  enum "r9" {
                    value 3;
                    description
                      "CDR release R9. ";
                  }
                }
                description "CDR Release type";
              }
    
              container peer-order {
                presence "enable peer-order";
                description
                  "Charging servers order";
                uses apply-advanced;
    
                list peer {
                  key "name";
                  max-elements 3;
                  ordered-by user;
                  description
                    "Charging server name";
                  leaf name {
                    junos:must "(".. .. .. .. .. .. .. gtpp peer $$")";
                    junos:must-message "GTPP Peer should be defined";
                    type string {
                      length "1 .. 128";
                    }
                    description
                      "Name of the Charging Gateway Server";
                  }
    
                  uses apply-advanced;
                }  // list peer
              }  // container peer-order
    
              container persistent-storage-order {
                presence
                  "enable persistent-storage-order";
                description
                  "Offline charging persistent storage order";
                uses apply-advanced;
    
                leaf local-storage {
                  type empty;
                  description
                    "Local persistant storage";
                }
              }  // container persistent-storage-order
    
              leaf switch-back-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "0 .. 300";
                  }
                }
                units "seconds";
                default "10";
                description
                  "Switch back time interval value";
              }
    
              leaf cdr-aggregation-limit {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 16";
                  }
                }
                default "5";
                description
                  "The number of CDRs in one DRT message, default value is 5";
              }
    
              leaf mtu {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "300 .. 8000";
                  }
                }
                default "1500";
                description
                  "The MTU of the DRT message";
              }
            }  // container charging-gateways
    
            leaf charging-function-name {
              type string {
                length "1 .. 256";
              }
              description
                "Charging Function Name corresponds to PCRF referred offline charging function name ";
            }
    
            leaf container-limit {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 15";
                }
              }
              default "5";
              description
                "The maximum number of container in each CDR";
            }
    
            leaf sgsn-mme-change-limit {
              junos:must "(!("unified-edge gateways ggsn-pgw ${ggsn-pgw} charging trigger-profiles ${trigger-profiles} offline exclude sgsn-sgw-change"))";
              junos:must-message "Can not specify sgsn-mme-change-limit when sgsn-sgw-change is excluded in trigger profile";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 5";
                }
              }
              default "4";
              description
                "Number of SGSN or SGW changes before CDR is closed";
            }
          }  // container offline
    
          leaf service-mode {
            type enumeration {
              enum "maintenance" {
                value 0;
                description "Maintenance mode";
              }
            }
            description "Service mode";
          }
        }  // grouping juniper-transport-profiles
    
        grouping juniper-trigger-profiles {
          description "Trigger profiles";
          leaf name {
            type string {
              length "1 .. 128";
            }
            description "Trigger profile name";
          }
    
          uses apply-advanced;
    
          leaf description {
            type string;
            description
              "Text description of this profile";
          }
    
          list tariff-time-list {
            key "name";
            max-elements 24;
            description
              "Input a list of tariff time changes within a day in 15 minute increments (time in sec will be ignored)";
            leaf name {
              type jt:time-of-day;
              description
                "Local time (hh:mm) in 15 minute increments";
            }
    
            uses apply-advanced;
          }  // list tariff-time-list
    
          container offline {
            presence "enable offline";
            description
              "Offline charging in the trigger profile";
            uses apply-advanced;
    
            container volume-limit {
              presence "enable volume-limit";
              description
                "Specify volume limit trigger for container closing";
              leaf vlimit {
                type string;
                description
                  "Volume limit in bytes";
              }
    
              leaf direction {
                type enumeration {
                  enum "uplink" {
                    value 0;
                    description
                      "Enable volume trigger for data traffic flowing in uplink direction only";
                  }
                  enum "both" {
                    value 1;
                    description
                      "Enable volume trigger for data traffic flowing in both directions";
                  }
                }
                default "both";
                description
                  "Specific volume trigger traffic direction";
              }
            }  // container volume-limit
    
            leaf time-limit {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "600 .. 65535";
                }
              }
              units "seconds";
              description
                "The time-limit for container closure";
            }
    
            container exclude {
              description
                "Specify excluded signal triggers";
              uses apply-advanced;
    
              leaf plmn-change {
                type empty;
                description
                  "No charging data updates on PLMN change";
              }
    
              leaf qos-change {
                type empty;
                description
                  "No charging data updates on QOS change";
              }
    
              leaf rat-change {
                type empty;
                description
                  "No charging data updates on RAT change";
              }
    
              leaf sgsn-sgw-change {
                type empty;
                description
                  "No charging data updates on SGW change";
              }
    
              leaf user-location-change {
                type empty;
                description
                  "No charging data updates on user location information change";
              }
    
              leaf ms-timezone-change {
                type empty;
                description
                  "No charging data updates on MS-timezone change";
              }
    
              leaf dcca-events {
                type empty;
                description
                  "No CDR generation on dcca-events like quota-exhaustion, threshold, etc ";
              }
            }  // container exclude
          }  // container offline
    
          leaf charging-method {
            type enumeration {
              enum "none" {
                value 0;
                description "Use no charging";
              }
              enum "online" {
                value 1;
                description
                  "Use online charging method";
              }
              enum "offline" {
                value 2;
                description
                  "Use offline charging method";
              }
              enum "both" {
                value 3;
                description
                  "Use online and offline charging method";
              }
            }
            default "offline";
            description
              "Default charging method if not provided by PCEF";
          }
    
          container online {
            presence "enable online";
            uses apply-advanced;
    
            container reporting-level {
              presence "enable reporting-level";
              description
                "Default Reporting level for offline and online usage report";
              uses apply-advanced;
    
              choice rl-value {
                leaf rating-group {
                  type empty;
                  description
                    "Rating group level reporting";
                }
                leaf service-identifier {
                  type empty;
                  description
                    "Service identifier level reporting";
                }
              }  // choice rl-value
    
              leaf override {
                type empty;
                description
                  "Override reporting level provided by PCEF";
              }
            }  // container reporting-level
    
            leaf measurement-method {
              type enumeration {
                enum "none" {
                  value 0;
                  description
                    "No measurement method to be used by default";
                }
                enum "volume" {
                  value 1;
                  description
                    "Use volume based measurement method";
                }
                enum "time" {
                  value 2;
                  description
                    "Use time based measurement method";
                }
                enum "volume-and-time" {
                  value 3;
                  description
                    "Use volume and time based measurement method";
                }
              }
              default "volume-and-time";
              description
                "Default measurement method to use if not provided by PCEF";
            }
    
            container quota-threshold {
              presence "enable quota-threshold";
              description
                "Calculate quota threshold value as a percentage of total quota allocated";
              uses apply-advanced;
    
              leaf threshold {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "5 .. 95";
                  }
                }
                units "percent";
              }
    
              leaf override {
                type empty;
                description
                  "Override threshold value provided by OCS";
              }
            }  // container quota-threshold
    
            leaf quota-validity-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "30 .. 864000";
                }
              }
              units "seconds";
              description
                "Configure quota validity time if one is not provided by OCS";
            }
    
            leaf quota-holding-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "10 .. 864000";
                }
              }
              units "seconds";
              description
                "Configure quota holding time if one is not provided by OCS";
            }
    
            container grant-quota {
              presence "enable grant-quota";
              description
                "Configure grace-quota to be allocated in case of failure";
              uses apply-advanced;
    
              leaf cc-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "300 .. 4294967294";
                  }
                }
                units "seconds";
                description
                  "Configure time quota";
              }
    
              leaf cc-octet-uplink {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint64 {
                    range
                      "1048576 .. 18446744073709551614";
                  }
                }
                units "bytes";
                description
                  "Configure input volume quota";
              }
    
              leaf cc-octet-downlink {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint64 {
                    range
                      "1048576 .. 18446744073709551614";
                  }
                }
                units "bytes";
                description
                  "Configure output volume quota";
              }
    
              leaf cc-octet-both {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint64 {
                    range
                      "1048576 .. 18446744073709551614";
                  }
                }
                units "bytes";
                description
                  "Configure volume quota";
              }
            }  // container grant-quota
    
            container requested-service-unit {
              presence
                "enable requested-service-unit";
              description
                "Determine the requested service unit AVP behavior";
              uses apply-advanced;
    
              leaf include-quota-holding-time {
                type empty;
                description
                  "Include RSU when reporting reason is quota holding time";
              }
    
              leaf cc-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "300 .. 4294967294";
                  }
                }
                units "seconds";
                description
                  "Configure the time quota requested in CCR";
              }
    
              leaf cc-octet-uplink {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint64 {
                    range
                      "1048576 .. 18446744073709551614";
                  }
                }
                units "bytes";
                description
                  "Configure input volume quota";
              }
    
              leaf cc-octet-downlink {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint64 {
                    range
                      "1048576 .. 18446744073709551614";
                  }
                }
                units "bytes";
                description
                  "Configure output volume quota";
              }
    
              leaf cc-octet-both {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint64 {
                    range
                      "1048576 .. 18446744073709551614";
                  }
                }
                units "bytes";
                description
                  "Configure volume quota";
              }
            }  // container requested-service-unit
    
            container cc-failure-handling {
              description
                "Configure MobileNext handling during credit-control failure";
              uses apply-advanced;
    
              leaf block-traffic-pending-reauth-no-quota {
                type empty;
                description
                  "Block traffic for a RG pending re-auth during quota exhaustion";
              }
    
              leaf override {
                type empty;
                description
                  "Overrides charging failure-method provided by OCS";
              }
    
              container result-code-based-action {
                description
                  "Perform action based on diamter result-code AVP";
                uses apply-advanced;
    
                container authorization-rejected {
                  description
                    "Diameter-authorization-rejected - default Terminate";
                  uses apply-advanced;
    
                  choice cc-action {
                    container blacklist {
                      presence
                        "enable blacklist";
                      description
                        "Put rating-group in blacklist";
                      leaf retry-timer {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range
                              "120 .. 3866040";
                          }
                        }
                        units "seconds";
                        description
                          "Time limit to retry with OCS once RG is in blacklist";
                      }
                    }  // container blacklist
                  }  // choice cc-action
                }  // container authorization-rejected
    
                container credit-control-not-applicable {
                  description
                    "Diameter-credit-control-not-applicable - default disable online charging";
                  uses apply-advanced;
    
                  choice cc-action {
                    container convert-to-offline {
                      presence
                        "enable convert-to-offline";
                      description
                        "Convert to offline in case of failure";
                      uses apply-advanced;
    
                      leaf grant-grace-quota {
                        junos:must "(".. .. .. .. .. grant-quota")";
                        junos:must-message "Must configure grant-quota under online charging";
                        type empty;
                        description
                          "Use offline charging till grace quota period";
                      }
                    }  // container convert-to-offline
                  }  // choice cc-action
                }  // container credit-control-not-applicable
    
                container end-user-service-denied {
                  description
                    "Diameter-end-user-service-denied - default terminate";
                  uses apply-advanced;
    
                  choice cc-action {
                    leaf disable-online-charging {
                      type empty;
                      description
                        "Disable online charging. Continue to use offline charging if enabled otherwise no charging is applied";
                    }
                    container convert-to-offline {
                      presence
                        "enable convert-to-offline";
                      description
                        "Convert to offline in case of failure";
                      uses apply-advanced;
    
                      leaf grant-grace-quota {
                        junos:must "(".. .. .. .. .. grant-quota")";
                        junos:must-message "Must configure grant-quota under online charging";
                        type empty;
                        description
                          "Use offline charging till grace quota period";
                      }
                    }  // container convert-to-offline
                  }  // choice cc-action
                }  // container end-user-service-denied
    
                container user-unknown {
                  description
                    "User-unknown - default terminate";
                  uses apply-advanced;
    
                  choice cc-action {
                    leaf disable-online-charging {
                      type empty;
                      description
                        "Disable online charging. Continue to use offline charging if enabled otherwise no charging is applied";
                    }
                    container convert-to-offline {
                      presence
                        "enable convert-to-offline";
                      description
                        "Convert to offline in case of failure";
                      uses apply-advanced;
    
                      leaf grant-grace-quota {
                        junos:must "(".. .. .. .. .. grant-quota")";
                        junos:must-message "Must configure grant-quota under online charging";
                        type empty;
                        description
                          "Use offline charging till grace quota period";
                      }
                    }  // container convert-to-offline
                  }  // choice cc-action
                }  // container user-unknown
    
                container credit-limit-reached {
                  description
                    "Diameter-credit-limit-reached - default terminate";
                  uses apply-advanced;
    
                  choice cc-action {
                    container blacklist {
                      presence
                        "enable blacklist";
                      description
                        "Put rating-group in blacklist";
                      leaf retry-timer {
                        type union {
                          type string {
                            pattern "<.*>|$.*";
                          }
                          type uint32 {
                            range
                              "120 .. 3866040";
                          }
                        }
                        units "seconds";
                        description
                          "Time limit to retry with OCS once RG is in blacklist";
                      }
                    }  // container blacklist
                  }  // choice cc-action
                }  // container credit-limit-reached
              }  // container result-code-based-action
    
              container initial-request {
                presence
                  "enable initial-request";
                description
                  "Failure action for initial cc request - default terminate";
                uses apply-advanced;
    
                choice cc-action {
                  leaf grant-grace-quota {
                    junos:must "(".. .. .. grant-quota")";
                    junos:must-message "Must configure grant-quota under online charging";
                    type empty;
                    description
                      "Grant grace quota and continue online session";
                  }
                  leaf disable-online-charging {
                    type empty;
                    description
                      "Disable online charging. Continue to use offline charging if enabled otherwise no charging is applied";
                  }
                  container convert-to-offline {
                    presence
                      "enable convert-to-offline";
                    description
                      "Convert to offline in case of failure";
                    uses apply-advanced;
    
                    leaf grant-grace-quota {
                      junos:must "(".. .. .. .. grant-quota")";
                      junos:must-message "Must configure grant-quota under online charging";
                      type empty;
                      description
                        "Use offline charging till grace quota period";
                    }
                  }  // container convert-to-offline
                }  // choice cc-action
              }  // container initial-request
    
              container update-request {
                presence "enable update-request";
                description
                  "Failure action for  update cc request - default terminate";
                uses apply-advanced;
    
                choice cc-action {
                  leaf grant-grace-quota {
                    junos:must "(".. .. .. grant-quota")";
                    junos:must-message "Must configure grant-quota under online charging";
                    type empty;
                    description
                      "Grant grace quota and continue online session";
                  }
                  leaf disable-online-charging {
                    type empty;
                    description
                      "Disable online charging. Continue to use offline charging if enabled otherwise no charging is applied";
                  }
                  container convert-to-offline {
                    presence
                      "enable convert-to-offline";
                    description
                      "Convert to offline in case of failure";
                    uses apply-advanced;
    
                    leaf grant-grace-quota {
                      junos:must "(".. .. .. .. grant-quota")";
                      junos:must-message "Must configure grant-quota under online charging";
                      type empty;
                      description
                        "Use offline charging till grace quota period";
                    }
                  }  // container convert-to-offline
                }  // choice cc-action
              }  // container update-request
            }  // container cc-failure-handling
          }  // container online
        }  // grouping juniper-trigger-profiles
    
        grouping juniper-unified-edge-cos-options {
          uses apply-advanced;
    
          list classifier-profiles {
            key "name";
            max-elements 8001;
            ordered-by user;
            description
              "Classifier tables for mobile subscribers (UMTS/EPS)";
            leaf name {
              type string {
                junos:posix-pattern "^.{1,64}$";
                junos:pattern-message "Must be string of 64 characters or less";
              }
              description
                "Classification table name";
            }
    
            uses apply-advanced;
    
            leaf description {
              type string;
              description
                "Text description of classifier profile";
            }
    
            list qos-class-identifier {
              key "name";
              ordered-by user;
              description
                "QCI mapping to forwarding class and loss priority";
              leaf name {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 9";
                  }
                }
                description "Qci value";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description "Forwarding class";
              }
    
              leaf loss-priority {
                type enumeration {
                  enum "low" {
                    value 0;
                    description
                      "Loss priority low";
                  }
                  enum "high" {
                    value 1;
                    description
                      "Loss priority high";
                  }
                }
                description
                  "Loss priority value";
              }
            }  // list qos-class-identifier
          }  // list classifier-profiles
    
          list gbr-bandwidth-pools {
            key "name";
            max-elements 8001;
            ordered-by user;
            description
              "GBR bandwith pools configuration";
            leaf name {
              type string {
                junos:posix-pattern "^.{1,64}$";
                junos:pattern-message "Must be string of 64 characters or less";
              }
              description
                "GBR Bandwidth pool name";
            }
    
            uses apply-advanced;
    
            leaf maximum-bandwidth {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "50000 .. 500000";
                }
              }
              units "mega-bits per second";
              description "Bandwidth for pool";
            }
    
            leaf downgrade-gtp-v1-gbr-bearers {
              type empty;
              description
                "Downgrade GTPv1 GBR bearer traffic class to background traffic class";
            }
          }  // list gbr-bandwidth-pools
    
          list resource-threshold-profiles {
            key "name";
            max-elements 8001;
            ordered-by user;
            description
              "Resource threshold profiles";
            leaf name {
              type string {
                junos:posix-pattern "^.{1,64}$";
                junos:pattern-message "Must be string of 64 characters or less";
              }
              description
                "Resource threshold profile name";
            }
    
            uses apply-advanced;
    
            leaf description {
              type string;
              description
                "Text description of resource threshold profile";
            }
    
            container bearers-load {
              description
                "Number of bearers load configurations";
              uses apply-advanced;
    
              container low {
                description
                  "Low threshold configuration";
                uses apply-advanced;
    
                leaf percentage {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  units "Percentage";
                  description "Low threshold";
                }
    
                leaf priority-level {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 15";
                    }
                  }
                  default "10";
                  description
                    "Priority level - default 10";
                }
              }  // container low
    
              container high {
                description
                  "High threshold configuration";
                uses apply-advanced;
    
                leaf percentage {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  units "Percentage";
                  description "High threshold";
                }
    
                leaf priority-level {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 15";
                    }
                  }
                  default "5";
                  description
                    "Priority level - default 5";
                }
              }  // container high
            }  // container bearers-load
    
            container memory {
              description
                "Memory load configurations";
              uses apply-advanced;
    
              container low {
                description
                  "Low threshold configuration";
                uses apply-advanced;
    
                leaf percentage {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  units "Percentage";
                  description "Low threshold";
                }
    
                leaf priority-level {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 15";
                    }
                  }
                  default "10";
                  description
                    "Priority level - default 10";
                }
              }  // container low
    
              container high {
                description
                  "High threshold configuration";
                uses apply-advanced;
    
                leaf percentage {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  units "Percentage";
                  description "High threshold";
                }
    
                leaf priority-level {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 15";
                    }
                  }
                  default "5";
                  description
                    "Priority level - default 5";
                }
              }  // container high
            }  // container memory
    
            container cpu {
              description
                "CPU load configurations";
              uses apply-advanced;
    
              container low {
                description
                  "Low threshold configuration";
                uses apply-advanced;
    
                leaf percentage {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  units "Percentage";
                  description "Low threshold";
                }
    
                leaf priority-level {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 15";
                    }
                  }
                  default "10";
                  description
                    "Priority level - default 10";
                }
              }  // container low
    
              container high {
                description
                  "High threshold configuration";
                uses apply-advanced;
    
                leaf percentage {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 100";
                    }
                  }
                  units "Percentage";
                  description "High threshold";
                }
    
                leaf priority-level {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 15";
                    }
                  }
                  default "5";
                  description
                    "Priority level - default 5";
                }
              }  // container high
            }  // container cpu
          }  // list resource-threshold-profiles
    
          list cos-policy-profiles {
            key "name";
            max-elements 8001;
            ordered-by user;
            description "QoS policy profile";
            leaf name {
              type string {
                junos:posix-pattern "^.{1,64}$";
                junos:pattern-message "Must be string of 64 characters or less";
              }
              description
                "QoS policy profile name";
            }
    
            uses apply-advanced;
    
            leaf description {
              type string;
              description
                "Text description of cos policy";
            }
    
            container default-bearer-qci {
              description
                "Default bearer qci value";
              leaf qci-value {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "5 .. 9";
                  }
                }
                description
                  "Default bearer qci value";
              }
    
              leaf upgrade {
                type empty;
                description "Override qci value";
              }
    
              leaf reject {
                type empty;
                description
                  "Reject calls with numerially lower qci";
              }
            }  // container default-bearer-qci
    
            container allocation-retention-priority {
              description "ARP local policy";
              leaf priority-value {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 15";
                  }
                }
                description
                  "ARP policy configuration";
              }
    
              leaf reject {
                type empty;
                description
                  "Reject calls with higher priority value";
              }
            }  // container allocation-retention-priority
    
            container aggregated-qos-control {
              description
                "Aggregated qos control policy";
              uses apply-advanced;
    
              container maximum-bit-rate-uplink {
                description
                  "Maximum bit rate uplink";
                leaf mbr-uplink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 1000000";
                    }
                  }
                  units "kbps";
                }
    
                leaf upgrade {
                  type empty;
                  description
                    "Override maximum-bit-rate uplink value";
                }
    
                leaf reject {
                  type empty;
                  description
                    "Reject calls with higher uplink maximum-bit-rate";
                }
              }  // container maximum-bit-rate-uplink
    
              container maximum-bit-rate-downlink {
                description
                  "Maximum bit rate downlink";
                leaf mbr-downlink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 1000000";
                    }
                  }
                  units "kbps";
                }
    
                leaf upgrade {
                  type empty;
                  description
                    "Override maximum-bit-rate downlink value";
                }
    
                leaf reject {
                  type empty;
                  description
                    "Reject calls with higher downlink maximum-bit-rate";
                }
              }  // container maximum-bit-rate-downlink
            }  // container aggregated-qos-control
    
            container pdp-qos-control {
              description "PDP qos control";
              uses apply-advanced;
    
              container maximum-bit-rate-uplink {
                description
                  "Maximum bit rate uplink";
                leaf mbr-uplink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 10480000";
                    }
                  }
                  units "kbps";
                }
    
                leaf upgrade {
                  type empty;
                  description
                    "Override maximum-bit-rate uplink value";
                }
    
                leaf reject {
                  type empty;
                  description
                    "Reject calls with higher uplink maximum-bit-rate";
                }
              }  // container maximum-bit-rate-uplink
    
              container maximum-bit-rate-downlink {
                description
                  "Maximum bit rate downlink";
                leaf mbr-downlink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 10480000";
                    }
                  }
                  units "kbps";
                }
    
                leaf upgrade {
                  type empty;
                  description
                    "Override maximum-bit-rate downlink value";
                }
    
                leaf reject {
                  type empty;
                  description
                    "Reject calls with higher downlink maximum-bit-rate";
                }
              }  // container maximum-bit-rate-downlink
    
              container guaranteed-bit-rate-uplink {
                description
                  "Guaranteed bit rate uplink";
                leaf gbr-uplink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 10480000";
                    }
                  }
                  units "kbps";
                }
    
                leaf upgrade {
                  type empty;
                  description
                    "Override guaranteed-bit-rate uplink value";
                }
    
                leaf reject {
                  type empty;
                  description
                    "Reject calls with higher uplink guaranteed-bit-rate";
                }
              }  // container guaranteed-bit-rate-uplink
    
              container guaranteed-bit-rate-downlink {
                description
                  "Guaranteed bit rate downlink";
                leaf gbr-downlink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1 .. 10480000";
                    }
                  }
                  units "kbps";
                }
    
                leaf upgrade {
                  type empty;
                  description
                    "Override guaranteed-bit-rate downlink value";
                }
    
                leaf reject {
                  type empty;
                  description
                    "Reject calls with higher downlink guaranteed-bit-rate";
                }
              }  // container guaranteed-bit-rate-downlink
    
              list qci {
                key "name";
                ordered-by user;
                description
                  "PDP qos control per qci";
                leaf name {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint8 {
                      range "5 .. 9";
                    }
                  }
                }
    
                uses apply-advanced;
    
                container maximum-bit-rate-uplink {
                  description
                    "Maximum bit rate uplink";
                  leaf mbr-uplink {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 10480000";
                      }
                    }
                    units "kbps";
                  }
    
                  leaf upgrade {
                    type empty;
                    description
                      "Override maximum-bit-rate uplink value";
                  }
    
                  leaf reject {
                    type empty;
                    description
                      "Reject calls with higher uplink maximum-bit-rate";
                  }
                }  // container maximum-bit-rate-uplink
    
                container maximum-bit-rate-downlink {
                  description
                    "Maximum bit rate downlink";
                  leaf mbr-downlink {
                    type union {
                      type string {
                        pattern "<.*>|$.*";
                      }
                      type uint32 {
                        range "1 .. 10480000";
                      }
                    }
                    units "kbps";
                  }
    
                  leaf upgrade {
                    type empty;
                    description
                      "Override maximum-bit-rate downlink value";
                  }
    
                  leaf reject {
                    type empty;
                    description
                      "Reject calls with higher downlink maximum-bit-rate";
                  }
                }  // container maximum-bit-rate-downlink
              }  // list qci
            }  // container pdp-qos-control
    
            container policer-action {
              description "Policer actions";
              uses apply-advanced;
    
              container non-gbr-bearer {
                description
                  "Policer actions for non gbr bearers";
                uses apply-advanced;
    
                leaf violate-action {
                  type enumeration {
                    enum
                      "set-loss-priority-high" {
                      value 0;
                      description
                        "Violate action set loss priority high";
                    }
                    enum "transmit" {
                      value 1;
                      description
                        "Violate action transmit";
                    }
                  }
                  description
                    "PDP policer violate action";
                }
              }  // container non-gbr-bearer
    
              container gbr-bearer {
                description
                  "Policer actions for gbr bearers";
                uses apply-advanced;
    
                leaf exceed-action {
                  type enumeration {
                    enum "drop" {
                      value 0;
                      description
                        "Exceed action drop";
                    }
                    enum "transmit" {
                      value 1;
                      description
                        "Exceed action transmit";
                    }
                  }
                  description
                    "PDP policer exceed action";
                }
    
                leaf violate-action {
                  type enumeration {
                    enum
                      "set-loss-priority-high" {
                      value 0;
                      description
                        "Violate action set loss priority high";
                    }
                    enum "transmit" {
                      value 1;
                      description
                        "Violate action transmit";
                    }
                  }
                  description
                    "PDP policer violate action";
                }
              }  // container gbr-bearer
            }  // container policer-action
          }  // list cos-policy-profiles
        }  // grouping juniper-unified-edge-cos-options
    
        grouping macro-data-type {
          leaf name {
            type string;
            description
              "Keyword part of the keyword-value pair";
          }
    
          leaf value {
            type string;
            description
              "Value part of the keyword-value pair";
          }
        }  // grouping macro-data-type
    
        grouping mobile-diameter-profiles {
          uses apply-advanced;
    
          list gy-profile {
            key "name";
            ordered-by user;
            description
              "Diameter Gy application profile configuration";
            uses mobile-diameter-profile-type-gy;
          }  // list gy-profile
    
          list gx-profile {
            key "name";
            ordered-by user;
            description
              "Diameter Gx application profile configuration";
            uses mobile-diameter-profile-type-gx;
          }  // list gx-profile
        }  // grouping mobile-diameter-profiles
    
        grouping mobile-diameter-profile-type-gx {
          leaf name {
            type string {
              length "1 .. 63";
            }
            description "Diameter profile name";
          }
    
          uses apply-advanced;
    
          list targets {
            key "name";
            ordered-by user;
            description
              "Mobile diameter target configurations";
            uses mobile-diameter-target;
          }  // list targets
    
          leaf request-timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 65535";
              }
            }
            units "seconds";
            description
              "Profile request timeout";
          }
    
          container attributes {
            description
              "Diameter AVP attributes for Gx application";
            uses mobile-diameter-gx-profile-attr-type;
          }  // container attributes
        }  // grouping mobile-diameter-profile-type-gx
    
        grouping mobile-diameter-gx-profile-attr-type {
          uses apply-advanced;
    
          container include {
            description
              "Specify AVP options to be included";
            uses apply-advanced;
    
            leaf gx-capability-list {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description
                "Include Gx Capability list AVP";
            }
    
            leaf rule-suggestion {
              type string {
                length "1 .. 63";
              }
              description
                "Include Rule-suggestion AVP";
            }
    
            leaf rai {
              type empty;
              description "Include RAI AVP";
            }
    
            leaf qos-negotiation {
              type empty;
              description
                "Include QoS Negotiation AVP";
            }
    
            leaf qos-upgrade {
              type empty;
              description
                "Include QoS Upgrade AVP";
            }
          }  // container include
    
          container exclude {
            description
              "Specify AVP options to be excluded";
            uses apply-advanced;
    
            leaf packet-filter-information {
              type empty;
              description
                "Exclude Packet Filter Information AVP";
            }
    
            leaf packet-filter-operation {
              type empty;
              description
                "Exclude Packet Filter Operation AVP";
            }
    
            leaf rat-type {
              type empty;
              description "Exclude Rat-Type AVP";
            }
    
            leaf default-eps-bearer-qos {
              type empty;
              description
                "Exclude Default EPS Bearer QOS AVP";
            }
    
            leaf an-gw-address {
              type empty;
              description
                "Exclude AN-GW-Address AVP";
            }
    
            leaf network-request-support {
              type empty;
              description
                "Exclude Network Request Support AVP";
            }
    
            leaf event-trigger {
              type empty;
              description
                "Exclude Event Trigger AVP";
            }
    
            leaf threegpp-rat-type {
              type empty;
              description
                "Exclude 3GPP-RAT-Type AVP";
            }
    
            leaf offline {
              type empty;
              description "Exclude Offline AVP";
            }
    
            leaf qos-negotiation {
              type empty;
              description
                "Exclude QoS Negotiation AVP";
            }
    
            leaf qos-upgrade {
              type empty;
              description
                "Exclude QoS Upgrade AVP";
            }
          }  // container exclude
        }  // grouping mobile-diameter-gx-profile-attr-type
    
        grouping mobile-diameter-profile-type-gy {
          leaf name {
            type string {
              length "1 .. 63";
            }
            description "Diameter profile name";
          }
    
          uses apply-advanced;
    
          list targets {
            key "name";
            ordered-by user;
            description
              "Mobile diameter target configurations";
            uses mobile-diameter-target;
          }  // list targets
    
          leaf request-timeout {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 65535";
              }
            }
            units "seconds";
            description
              "Profile request timeout";
          }
    
          container attributes {
            description
              "Diameter AVP attributes for Gy application";
            uses mobile-diameter-gy-profile-attr-type;
          }  // container attributes
        }  // grouping mobile-diameter-profile-type-gy
    
        grouping mobile-diameter-gy-profile-attr-type {
          uses apply-advanced;
    
          container include {
            description
              "Specify AVP options to be included";
            uses apply-advanced;
    
            leaf cumulative-used-service-unit {
              type empty;
              description
                "Include cumulative-used-service-unit AVP";
            }
    
            leaf credit-instance-id {
              type empty;
              description
                "Include credit-instance-id AVP";
            }
    
            leaf service-start-timestamp {
              type empty;
              description
                "Include service-start-timestamp AVP";
            }
    
            leaf mscc-qos-information {
              type empty;
              description
                "Include mscc-qos-information AVP";
            }
    
            leaf framed-ip-address {
              type empty;
              description
                "Include framed ip address AVP";
            }
    
            leaf framed-ipv6-prefix {
              type empty;
              description
                "Include framed IPV6 Prefix AVP";
            }
    
            leaf gprs-negotiated-qos {
              type empty;
              description
                "Include GPRS negotiated QOS AVP";
            }
          }  // container include
    
          container exclude {
            description
              "Specify AVP options to be excluded";
            uses apply-advanced;
    
            leaf ps-information {
              type empty;
              description
                "Exclude PS Information AVP. If excluded, all the 3GPP AVPs will be sent at command level ";
            }
    
            leaf username {
              type empty;
              description "Exclude Username AVP";
            }
    
            leaf user-equipment-info {
              type empty;
              description
                "Exclude user equipment info AVP";
            }
    
            leaf all-3gpp-avps {
              type empty;
              description
                "Exclude all 3GPP AVPs";
            }
    
            leaf qos-information {
              type empty;
              description
                "Exclude QOS information AVP";
            }
    
            leaf pdn-connection-id {
              type empty;
              description
                "Exclude PDN connection id AVP";
            }
    
            leaf dynamic-address-flag {
              type empty;
              description
                "Exclude dynamic address flag AVP";
            }
    
            leaf serving-node-type {
              type empty;
              description
                "Exclude serving node type AVP";
            }
    
            leaf cc-selection-mode {
              type empty;
              description
                "Exclude charging characteristics selection mode AVP";
            }
    
            leaf start-time {
              type empty;
              description
                "Exclude start time AVP";
            }
    
            leaf stop-time {
              type empty;
              description
                "Exclude stop time AVP";
            }
    
            leaf user-location-information {
              type empty;
              description
                "Exclude user location information AVP";
            }
          }  // container exclude
        }  // grouping mobile-diameter-gy-profile-attr-type
    
        grouping mobile-diameter-target {
          description
            "Diameter target configuration";
          leaf name {
            type string {
              length "1 .. 31";
            }
            description "Diameter target name";
          }
    
          uses apply-advanced;
    
          leaf destination-realm {
            type string {
              length "1 .. 255";
            }
            description
              "Destination realm associated with this target";
          }
    
          leaf destination-host {
            type string {
              length "1 .. 255";
            }
            description
              "Destination host associated with this target";
          }
    
          leaf priority {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "1 .. 65535";
              }
            }
            description "Target priority";
          }
    
          leaf network-element {
            junos:must "("access diameter network-element $$")";
            junos:must-message "Referenced DNE must be defined";
            type string {
              length "1 .. 31";
            }
            description
              "Specify the diameter network element for this target";
          }
        }  // grouping mobile-diameter-target
    
        grouping mobile-gateway-config-gtp {
          description "GTP configuration";
          uses apply-advanced;
    
          leaf peer-history {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 1000";
              }
            }
            default "100";
            description
              "Maximum number of peer stats stored in history";
          }
    
          container interface {
            description
              "Interface name used for all 3GPP interface";
            leaf intf-name {
              junos:must "("interfaces $$-IFL family inet address")";
              junos:must-message "Family inet address should be configured on this interface";
              type union {
                type jt:interface-name;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface name";
            }
    
            leaf v4-address {
              type jt:ipv4addr;
              description
                "IPv4 address if multiple addresses configured on interface";
            }
          }  // container interface
    
          leaf echo-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "60 .. 65535";
              }
            }
            units "seconds";
            description
              "Echo Request interval value for path management";
          }
    
          leaf path-management {
            type enumeration {
              enum "enable" {
                value 0;
                description "Enable parameter";
              }
              enum "disable" {
                value 1;
                description "Disable parameter";
              }
            }
            description
              "Enable/disable path management";
          }
    
          leaf echo-n3-requests {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 8";
              }
            }
            description
              "Number of retries of GTP echo messages upon timeout";
          }
    
          leaf echo-t3-response {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 30";
              }
            }
            units "seconds";
            description
              "Response timeout value for GTP echo request message";
          }
    
          leaf path-failure {
            type enumeration {
              enum "enable" {
                value 0;
                description "Enable parameter";
              }
              enum "disable" {
                value 1;
                description "Disable parameter";
              }
            }
            description
              "Enable/disable path failure";
          }
    
          leaf number-of-msgs-for-response-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 65535";
              }
            }
            default "10000";
            description
              "Number of msgs used for calculating peer response times";
          }
    
          container control {
            description
              "Configure 3GPP GTP control plane options";
            uses apply-advanced;
    
            container interface {
              description
                "Interface name used for all 3GPP control interface";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            leaf forwarding-class {
              type string {
                junos:posix-pattern "^.{1,64}$";
                junos:pattern-message "Must be string of 64 characters or less";
              }
              description
                "Classification of host traffic to forwarding engine";
            }
    
            leaf n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 5";
                }
              }
              description
                "Number of retries of GTP messages upon timeout";
            }
    
            leaf t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP request message";
            }
    
            leaf dscp-code-point {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "0 .. 63";
                }
              }
              description
                "Static DSCP code point of egress host traffic";
            }
    
            leaf no-response-cache {
              type empty;
              description
                "Disable GTP response cache";
            }
    
            leaf response-cache-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "5 .. 20";
                }
              }
              units "seconds";
              default "15";
              description
                "GTP response cache timeout interval";
            }
    
            leaf no-piggyback-support {
              type empty;
              description
                "Disable GTPv2 piggyback support";
            }
          }  // container control
    
          container data {
            description
              "Configure 3GPP GTP data plane options";
            uses apply-advanced;
    
            container interface {
              description
                "Interface name used for all 3GPP data interface";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf error-indication-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 20";
                }
              }
              units "seconds";
              default "2";
              description
                "Error indication transmit interval per bearer ";
            }
          }  // container data
    
          container gn {
            description
              "Configure 3GPP Gn interface";
            uses apply-advanced;
    
            container interface {
              description "Interface name used";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            container control {
              description
                "Configure 3GPP control plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for control interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classification of host traffic to forwarding engine";
              }
    
              leaf n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 5";
                  }
                }
                description
                  "Number of retries of GTP messages upon timeout";
              }
    
              leaf t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP request message";
              }
    
              leaf dscp-code-point {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 63";
                  }
                }
                description
                  "Static DSCP code point of egress host traffic";
              }
            }  // container control
    
            container data {
              description
                "Configure 3GPP data plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for data interface";
                leaf echo-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "60 .. 65535";
                    }
                  }
                  units "seconds";
                  description
                    "Echo Request interval value for path management";
                }
    
                leaf path-management {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description
                        "Enable parameter";
                    }
                    enum "disable" {
                      value 1;
                      description
                        "Disable parameter";
                    }
                  }
                  description
                    "Enable/disable path management";
                }
    
                leaf echo-n3-requests {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 8";
                    }
                  }
                  description
                    "Number of retries of GTP echo messages upon timeout";
                }
    
                leaf echo-t3-response {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 30";
                    }
                  }
                  units "seconds";
                  description
                    "Response timeout value for GTP echo request message";
                }
    
                leaf path-failure {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description
                        "Enable parameter";
                    }
                    enum "disable" {
                      value 1;
                      description
                        "Disable parameter";
                    }
                  }
                  description
                    "Enable/disable path failure";
                }
    
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
            }  // container data
          }  // container gn
    
          container gp {
            description
              "Configure 3GPP Gp interface";
            uses apply-advanced;
    
            container interface {
              description "Interface name used";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            container control {
              description
                "Configure 3GPP control plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for control interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classification of host traffic to forwarding engine";
              }
    
              leaf n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 5";
                  }
                }
                description
                  "Number of retries of GTP messages upon timeout";
              }
    
              leaf t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP request message";
              }
    
              leaf dscp-code-point {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 63";
                  }
                }
                description
                  "Static DSCP code point of egress host traffic";
              }
            }  // container control
    
            container data {
              description
                "Configure 3GPP data plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for data interface";
                leaf echo-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "60 .. 65535";
                    }
                  }
                  units "seconds";
                  description
                    "Echo Request interval value for path management";
                }
    
                leaf path-management {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description
                        "Enable parameter";
                    }
                    enum "disable" {
                      value 1;
                      description
                        "Disable parameter";
                    }
                  }
                  description
                    "Enable/disable path management";
                }
    
                leaf echo-n3-requests {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 8";
                    }
                  }
                  description
                    "Number of retries of GTP echo messages upon timeout";
                }
    
                leaf echo-t3-response {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 30";
                    }
                  }
                  units "seconds";
                  description
                    "Response timeout value for GTP echo request message";
                }
    
                leaf path-failure {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description
                        "Enable parameter";
                    }
                    enum "disable" {
                      value 1;
                      description
                        "Disable parameter";
                    }
                  }
                  description
                    "Enable/disable path failure";
                }
    
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
            }  // container data
          }  // container gp
    
          container s5 {
            description
              "Configure 3GPP S5 interface";
            uses apply-advanced;
    
            container interface {
              description "Interface name used";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            container control {
              description
                "Configure 3GPP control plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for control interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classification of host traffic to forwarding engine";
              }
    
              leaf n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 5";
                  }
                }
                description
                  "Number of retries of GTP messages upon timeout";
              }
    
              leaf t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP request message";
              }
    
              leaf dscp-code-point {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 63";
                  }
                }
                description
                  "Static DSCP code point of egress host traffic";
              }
    
              leaf support-16-bit-sequence {
                type empty;
                description
                  "Enable 16 bit sequence number support";
              }
            }  // container control
    
            container data {
              description
                "Configure 3GPP data plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for data interface";
                leaf echo-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "60 .. 65535";
                    }
                  }
                  units "seconds";
                  description
                    "Echo Request interval value for path management";
                }
    
                leaf path-management {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description
                        "Enable parameter";
                    }
                    enum "disable" {
                      value 1;
                      description
                        "Disable parameter";
                    }
                  }
                  description
                    "Enable/disable path management";
                }
    
                leaf echo-n3-requests {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 8";
                    }
                  }
                  description
                    "Number of retries of GTP echo messages upon timeout";
                }
    
                leaf echo-t3-response {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 30";
                    }
                  }
                  units "seconds";
                  description
                    "Response timeout value for GTP echo request message";
                }
    
                leaf path-failure {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description
                        "Enable parameter";
                    }
                    enum "disable" {
                      value 1;
                      description
                        "Disable parameter";
                    }
                  }
                  description
                    "Enable/disable path failure";
                }
    
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
            }  // container data
          }  // container s5
    
          container s8 {
            description
              "Configure 3GPP S8 interface";
            uses apply-advanced;
    
            container interface {
              description "Interface name used";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            container control {
              description
                "Configure 3GPP control plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for control interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classification of host traffic to forwarding engine";
              }
    
              leaf n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 5";
                  }
                }
                description
                  "Number of retries of GTP messages upon timeout";
              }
    
              leaf t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP request message";
              }
    
              leaf dscp-code-point {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 63";
                  }
                }
                description
                  "Static DSCP code point of egress host traffic";
              }
    
              leaf support-16-bit-sequence {
                type empty;
                description
                  "Enable 16 bit sequence number support";
              }
            }  // container control
    
            container data {
              description
                "Configure 3GPP data plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for data interface";
                leaf echo-interval {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "60 .. 65535";
                    }
                  }
                  units "seconds";
                  description
                    "Echo Request interval value for path management";
                }
    
                leaf path-management {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description
                        "Enable parameter";
                    }
                    enum "disable" {
                      value 1;
                      description
                        "Disable parameter";
                    }
                  }
                  description
                    "Enable/disable path management";
                }
    
                leaf echo-n3-requests {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 8";
                    }
                  }
                  description
                    "Number of retries of GTP echo messages upon timeout";
                }
    
                leaf echo-t3-response {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint16 {
                      range "1 .. 30";
                    }
                  }
                  units "seconds";
                  description
                    "Response timeout value for GTP echo request message";
                }
    
                leaf path-failure {
                  type enumeration {
                    enum "enable" {
                      value 0;
                      description
                        "Enable parameter";
                    }
                    enum "disable" {
                      value 1;
                      description
                        "Disable parameter";
                    }
                  }
                  description
                    "Enable/disable path failure";
                }
    
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
            }  // container data
          }  // container s8
    
          list peer-group {
            key "name";
            ordered-by user;
            description
              "3GPP GTP peer group configuration";
            leaf name {
              type string {
                length "1 .. 64";
              }
              description "GTP peer group name";
            }
    
            uses apply-advanced;
    
            leaf routing-instance {
              type string;
              description
                "Routing instance of peer group";
            }
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            container control {
              description
                "3GPP GTP peer group control plane options";
              uses apply-advanced;
    
              leaf support-16-bit-sequence {
                type empty;
                description
                  "Enable 16 bit sequence number support";
              }
    
              leaf no-piggyback-support {
                type empty;
                description
                  "Disable GTPv2 piggyback support";
              }
            }  // container control
    
            container gn {
              description
                "3GPP GTP peer group Gn interface options";
              uses apply-advanced;
            }  // container gn
    
            container gp {
              description
                "3GPP GTP peer group Gp interface options";
              uses apply-advanced;
            }  // container gp
    
            list peer {
              key "name";
              ordered-by user;
              description
                "Peer IP address configuration";
              leaf name {
                type jt:ipprefix-mandatory;
                description
                  "Enter IP addr with prefix";
              }
            }  // list peer
          }  // list peer-group
    
          container traceoptions {
            description
              "Configure trace options";
            uses gtp-traceoptions;
          }  // container traceoptions
        }  // grouping mobile-gateway-config-gtp
    
        grouping gtp-traceoptions {
          description "Configure trace options";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "error" {
                  value 0;
                  description
                    "Trace internal and external errors";
                }
                enum "warning" {
                  value 1;
                  description "Trace warnings";
                }
                enum "debug" {
                  value 2;
                  description
                    "Trace debug information";
                }
                enum "encode" {
                  value 3;
                  description
                    "Trace encoding of transmitted packets";
                }
                enum "decode" {
                  value 4;
                  description
                    "Trace decoding of received packets";
                }
                enum "config" {
                  value 5;
                  description
                    "Trace configuration related";
                }
                enum "events" {
                  value 6;
                  description
                    "Trace all internal and external events";
                }
                enum "packet-io" {
                  value 7;
                  description
                    "Trace transmitted and received packets";
                }
                enum "tracker" {
                  value 8;
                  description
                    "Trace gtp tracker related events";
                }
                enum "peer" {
                  value 9;
                  description
                    "Trace gtp peer related events";
                }
                enum "pathfailure" {
                  value 10;
                  description
                    "Trace gtp peer path failure related events";
                }
                enum "all" {
                  value 11;
                  description "Trace everything";
                }
              }
            }
          }  // list flag
        }  // grouping gtp-traceoptions
    
        grouping mobile-gateways-ipv6-router-advertisement {
          uses apply-advanced;
    
          leaf disable {
            type empty;
            description
              "Disable IPv6 router advertisements - default is enable";
          }
    
          leaf maximum-advertisement-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "5400 .. 21600";
              }
            }
            units "seconds";
            default "21600";
            description
              "Maximum interval between router advertisements";
          }
    
          leaf minimum-advertisement-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "3600 .. 16200";
              }
            }
            units "seconds";
            default "16200";
            description
              "Minimum interval between router advertisements";
          }
    
          leaf maximum-initial-advertisement-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "10 .. 16";
              }
            }
            units "seconds";
            default "10";
            description
              "Maximum interval between initial router advertisements";
          }
    
          leaf maximum-initial-advertisements {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "2 .. 5";
              }
            }
            default "3";
            description
              "Maximum number of initial router advertisements";
          }
    
          leaf reachable-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 3600000";
              }
            }
            units "milliseconds";
            default "0";
            description
              "Value to be placed in reachable time field";
          }
    
          leaf retransmission-timer {
            type union {
              type uint32;
              type string {
                pattern "<.*>|$.*";
              }
            }
            units "milliseconds";
            default "0";
            description
              "Value to be placed in retransmit timer field";
          }
    
          leaf router-lifetime {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "5400 .. 21840";
              }
            }
            units "seconds";
            default "21840";
            description
              "Value to be placed in router lifetime field";
          }
    
          leaf current-hop-limit {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 3";
              }
            }
            default "0";
            description
              "Value to be placed in current hop limit field";
          }
        }  // grouping mobile-gateways-ipv6-router-advertisement
    
        grouping mobile-smd-traceoptions {
          description
            "Trace options related to mobile-smd";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
          }  // container file
    
          leaf level {
            type enumeration {
              enum "critical" {
                value 0;
                description
                  "Match critical conditions";
              }
              enum "error" {
                value 1;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 2;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 3;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 4;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 5;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 6;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "init" {
                  value 0;
                  description
                    "Trace initialization events";
                }
                enum "config" {
                  value 1;
                  description
                    "Trace configuration events";
                }
                enum "ctxt" {
                  value 2;
                  description
                    "Trace UE/PDN/Bearer ctxt events";
                }
                enum "svcpic" {
                  value 3;
                  description
                    "Trace service-PIC interface";
                }
                enum "fsm" {
                  value 4;
                  description "Trace FSM events";
                }
                enum "ha" {
                  value 5;
                  description
                    "Trace High Availability events";
                }
                enum "waitq" {
                  value 6;
                  description
                    "Trace waitq events";
                }
                enum "pfem" {
                  value 7;
                  description
                    "Trace PFE Manager events";
                }
                enum "stats" {
                  value 8;
                  description
                    "Trace stats events";
                }
                enum "bulkjob" {
                  value 9;
                  description "Trace resources";
                }
                enum "cos-cac" {
                  value 10;
                  description
                    "Trace cos and cac events";
                }
                enum "all" {
                  value 11;
                  description "Trace everything";
                }
              }
            }
          }  // list flag
        }  // grouping mobile-smd-traceoptions
    
        grouping rmps-clnt-traceoptions-type {
          description
            "Trace options for Resource Management and Packet Steering Client";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Resource Management Packet Steering Client to trace";
            leaf name {
              type enumeration {
                enum "infra" {
                  value 0;
                  description
                    "Trace FSM and Infra code";
                }
                enum "memory" {
                  value 1;
                  description
                    "Trace Memory Management Code";
                }
                enum "communication" {
                  value 2;
                  description "Trace IPC code";
                }
                enum "resource-tables" {
                  value 3;
                  description
                    "Trace Resource Table Code";
                }
                enum "info-tables" {
                  value 4;
                  description
                    "Trace Information Table Code";
                }
                enum "redundancy" {
                  value 5;
                  description "Trace GRES Code";
                }
                enum "all" {
                  value 6;
                  description
                    "Trace All Resource Client Code";
                }
              }
            }
          }  // list flag
        }  // grouping rmps-clnt-traceoptions-type
    
        grouping rmpsd-traceoptions-type {
          description
            "Trace options for Resource Management and Packet Steering Daemon";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description
              "Resource Management Packet Steering Area to trace";
            leaf name {
              type enumeration {
                enum "config" {
                  value 0;
                  description
                    "Trace configuration code";
                }
                enum "gres" {
                  value 1;
                  description "Trace GRES code";
                }
                enum "init" {
                  value 2;
                  description
                    "Trace initialization code";
                }
                enum "memory" {
                  value 3;
                  description
                    "Trace memory management code";
                }
                enum "communication" {
                  value 4;
                  description "Trace Infra code";
                }
                enum "license-management" {
                  value 5;
                  description
                    "Trace license management code";
                }
                enum "signal" {
                  value 6;
                  description
                    "Trace signal handling code";
                }
                enum "state" {
                  value 7;
                  description
                    "Trace state handling code";
                }
                enum "timer" {
                  value 8;
                  description "Trace timer code";
                }
                enum "ui" {
                  value 9;
                  description
                    "Trace user interface code";
                }
                enum "resource-manager" {
                  value 10;
                  description
                    "Trace Resource Management Code";
                }
                enum "info-manager" {
                  value 11;
                  description
                    "Trace Information Management Code";
                }
                enum "packet-steering" {
                  value 12;
                  description
                    "Trace packet-steering code";
                }
                enum "all" {
                  value 13;
                  description
                    "Trace all areas of code";
                }
              }
            }
          }  // list flag
        }  // grouping rmpsd-traceoptions-type
    
        grouping sgw-config-gtp {
          description "GTP configuration";
          uses apply-advanced;
    
          leaf peer-history {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 1000";
              }
            }
            description
              "Maximum number of peer stats stored in history";
          }
    
          container interface {
            description
              "Interface name used for all 3GPP interface";
            leaf intf-name {
              junos:must "("interfaces $$-IFL family inet address")";
              junos:must-message "Family inet address should be configured on this interface";
              type union {
                type jt:interface-name;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface name";
            }
    
            leaf v4-address {
              type jt:ipv4addr;
              description
                "IPv4 address if multiple addresses configured on interface";
            }
          }  // container interface
    
          leaf echo-interval {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "60 .. 65535";
              }
            }
            units "seconds";
            description
              "Echo Request interval value for path management";
          }
    
          leaf path-management {
            type enumeration {
              enum "enable" {
                value 0;
                description "Enable parameter";
              }
              enum "disable" {
                value 1;
                description "Disable parameter";
              }
            }
            description
              "Enable/disable path management";
          }
    
          leaf echo-n3-requests {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 8";
              }
            }
            description
              "Number of retries of GTP echo messages upon timeout";
          }
    
          leaf echo-t3-response {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 30";
              }
            }
            units "seconds";
            description
              "Response timeout value for GTP echo request message";
          }
    
          leaf path-failure {
            type enumeration {
              enum "enable" {
                value 0;
                description "Enable parameter";
              }
              enum "disable" {
                value 1;
                description "Disable parameter";
              }
            }
            description
              "Enable/disable path failure";
          }
    
          leaf number-of-msgs-for-response-time {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 65535";
              }
            }
            default "10000";
            description
              "Number of msgs used for calculating peer response times";
          }
    
          container control {
            description
              "Configure 3GPP GTP control plane options";
            uses apply-advanced;
    
            container interface {
              description
                "Interface name used for all 3GPP control interface";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            leaf forwarding-class {
              type string {
                junos:posix-pattern "^.{1,64}$";
                junos:pattern-message "Must be string of 64 characters or less";
              }
              description
                "Classification of host traffic to forwarding engine";
            }
    
            leaf n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 5";
                }
              }
              description
                "Number of retries of GTP messages upon timeout";
            }
    
            leaf t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP request message";
            }
    
            leaf dscp-code-point {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "0 .. 63";
                }
              }
              description
                "Static DSCP code point of egress host traffic";
            }
    
            leaf ttl-value {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "1 .. 255";
                }
              }
              description
                "Time To Live value for GTP messages";
            }
    
            leaf ddn-delay-sync {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable downlink data notification delay sync";
            }
    
            leaf no-response-cache {
              type empty;
              description
                "Disable GTP response cache";
            }
    
            leaf response-cache-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "5 .. 20";
                }
              }
              units "seconds";
              default "15";
              description
                "GTP response cache timeout interval";
            }
    
            leaf no-piggyback-support {
              type empty;
              description
                "Disable GTPv2 piggyback support";
            }
          }  // container control
    
          container data {
            description
              "Configure 3GPP GTP data plane options";
            uses apply-advanced;
    
            container interface {
              description
                "Interface name used for all 3GPP data interface";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf num-gtpu-end-markers {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "1 .. 10";
                }
              }
              default "1";
              description
                "Number of GTPU end marker pkts to be sent. range:1..10";
            }
    
            leaf indirect-tunnel {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable indirect tunnel";
            }
    
            leaf error-indication-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 20";
                }
              }
              units "seconds";
              default "2";
              description
                "Error indication transmit interval per bearer ";
            }
          }  // container data
    
          container s1u {
            presence "enable s1u";
            description
              "Configure 3GPP S1U interface";
            uses apply-advanced;
    
            container interface {
              description
                "Interface name used for S1U data interface";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
          }  // container s1u
    
          container s11 {
            presence "enable s11";
            description
              "Configure 3GPP S11 interface";
            uses apply-advanced;
    
            container interface {
              description
                "Interface name used for S11 control interface";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            leaf forwarding-class {
              type string {
                junos:posix-pattern "^.{1,64}$";
                junos:pattern-message "Must be string of 64 characters or less";
              }
              description
                "Classification of host traffic to forwarding engine";
            }
    
            leaf n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 5";
                }
              }
              description
                "Number of retries of GTP messages upon timeout";
            }
    
            leaf t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP request message";
            }
    
            leaf dscp-code-point {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "0 .. 63";
                }
              }
              description
                "Static DSCP code point of egress host traffic";
            }
    
            leaf ttl-value {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "1 .. 255";
                }
              }
              description
                "Time To Live value for GTP messages";
            }
          }  // container s11
    
          container s12 {
            presence "enable s12";
            description
              "Configure 3GPP S12 interface";
            uses apply-advanced;
    
            container interface {
              description
                "Interface name used for S12 data interface";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
          }  // container s12
    
          container s4 {
            description
              "Configure 3GPP S4 interface";
            uses apply-advanced;
    
            container interface {
              description "Interface name used";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            container control {
              description
                "Configure 3GPP control plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for control interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classification of host traffic to forwarding engine";
              }
    
              leaf n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 5";
                  }
                }
                description
                  "Number of retries of GTP messages upon timeout";
              }
    
              leaf t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP request message";
              }
    
              leaf dscp-code-point {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 63";
                  }
                }
                description
                  "Static DSCP code point of egress host traffic";
              }
    
              leaf ttl-value {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 255";
                  }
                }
                description
                  "Time To Live value for GTP messages";
              }
            }  // container control
    
            container data {
              description
                "Configure 3GPP data plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for data interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
            }  // container data
          }  // container s4
    
          container s5 {
            description
              "Configure 3GPP S5 interface";
            uses apply-advanced;
    
            container interface {
              description "Interface name used";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            container control {
              description
                "Configure 3GPP control plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for control interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classification of host traffic to forwarding engine";
              }
    
              leaf n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 5";
                  }
                }
                description
                  "Number of retries of GTP messages upon timeout";
              }
    
              leaf t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP request message";
              }
    
              leaf dscp-code-point {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 63";
                  }
                }
                description
                  "Static DSCP code point of egress host traffic";
              }
    
              leaf ttl-value {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 255";
                  }
                }
                description
                  "Time To Live value for GTP messages";
              }
            }  // container control
    
            container data {
              description
                "Configure 3GPP data plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for data interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
            }  // container data
          }  // container s5
    
          container s8 {
            description
              "Configure 3GPP S8 interface";
            uses apply-advanced;
    
            container interface {
              description "Interface name used";
              leaf intf-name {
                junos:must "("interfaces $$-IFL family inet address")";
                junos:must-message "Family inet address should be configured on this interface";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              leaf v4-address {
                type jt:ipv4addr;
                description
                  "IPv4 address if multiple addresses configured on interface";
              }
            }  // container interface
    
            leaf echo-interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "60 .. 65535";
                }
              }
              units "seconds";
              description
                "Echo Request interval value for path management";
            }
    
            leaf path-management {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path management";
            }
    
            leaf echo-n3-requests {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 8";
                }
              }
              description
                "Number of retries of GTP echo messages upon timeout";
            }
    
            leaf echo-t3-response {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 30";
                }
              }
              units "seconds";
              description
                "Response timeout value for GTP echo request message";
            }
    
            leaf path-failure {
              type enumeration {
                enum "enable" {
                  value 0;
                  description "Enable parameter";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable parameter";
                }
              }
              description
                "Enable/disable path failure";
            }
    
            leaf number-of-msgs-for-response-time {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              default "10000";
              description
                "Number of msgs used for calculating peer response times";
            }
    
            container control {
              description
                "Configure 3GPP control plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for control interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
    
              leaf number-of-msgs-for-response-time {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 65535";
                  }
                }
                default "10000";
                description
                  "Number of msgs used for calculating peer response times";
              }
    
              leaf forwarding-class {
                type string {
                  junos:posix-pattern "^.{1,64}$";
                  junos:pattern-message "Must be string of 64 characters or less";
                }
                description
                  "Classification of host traffic to forwarding engine";
              }
    
              leaf n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 5";
                  }
                }
                description
                  "Number of retries of GTP messages upon timeout";
              }
    
              leaf t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP request message";
              }
    
              leaf dscp-code-point {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "0 .. 63";
                  }
                }
                description
                  "Static DSCP code point of egress host traffic";
              }
    
              leaf ttl-value {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint8 {
                    range "1 .. 255";
                  }
                }
                description
                  "Time To Live value for GTP messages";
              }
            }  // container control
    
            container data {
              description
                "Configure 3GPP data plane options";
              uses apply-advanced;
    
              container interface {
                description
                  "Interface name used for data interface";
                leaf intf-name {
                  junos:must "("interfaces $$-IFL family inet address")";
                  junos:must-message "Family inet address should be configured on this interface";
                  type union {
                    type jt:interface-name;
                    type string {
                      pattern "<.*>|$.*";
                    }
                  }
                  description "Interface name";
                }
    
                leaf v4-address {
                  type jt:ipv4addr;
                  description
                    "IPv4 address if multiple addresses configured on interface";
                }
              }  // container interface
    
              leaf echo-interval {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "60 .. 65535";
                  }
                }
                units "seconds";
                description
                  "Echo Request interval value for path management";
              }
    
              leaf path-management {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path management";
              }
    
              leaf echo-n3-requests {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 8";
                  }
                }
                description
                  "Number of retries of GTP echo messages upon timeout";
              }
    
              leaf echo-t3-response {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint16 {
                    range "1 .. 30";
                  }
                }
                units "seconds";
                description
                  "Response timeout value for GTP echo request message";
              }
    
              leaf path-failure {
                type enumeration {
                  enum "enable" {
                    value 0;
                    description
                      "Enable parameter";
                  }
                  enum "disable" {
                    value 1;
                    description
                      "Disable parameter";
                  }
                }
                description
                  "Enable/disable path failure";
              }
            }  // container data
          }  // container s8
    
          container traceoptions {
            description
              "Configure trace options";
            uses gtp-traceoptions;
          }  // container traceoptions
        }  // grouping sgw-config-gtp
    
        grouping sgw-idle-mode-buffering {
          description
            "Idle mode buffering options";
          uses apply-advanced;
    
          leaf disable {
            type empty;
            description
              "Disable idle mode buffering";
          }
    
          leaf expire-timer {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "30 .. 300";
              }
            }
            units "seconds";
            default "200";
            description "Expire timer";
          }
        }  // grouping sgw-idle-mode-buffering
    
        grouping software-datapath-traceoptions {
          description
            "Trace options for software-datapath";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "ager" {
                  value 0;
                  description "Trace flow ager ";
                }
                enum "commands" {
                  value 1;
                  description
                    "Trace operational commands";
                }
                enum "configuration" {
                  value 2;
                  description
                    "Trace configuration events";
                }
                enum "flow" {
                  value 3;
                  description "Trace flow";
                }
                enum "init" {
                  value 4;
                  description
                    "Trace events related to datapath daemon init";
                }
                enum "ipv6-router-advertisement" {
                  value 5;
                  description
                    "Trace ipv6 router-advertisement ";
                }
                enum "memory" {
                  value 6;
                  description "Trace memory";
                }
                enum "redundancy" {
                  value 7;
                  description "Trace redundancy";
                }
                enum "reassembly" {
                  value 8;
                  description "Trace reassembly";
                }
                enum "buffering" {
                  value 9;
                  description "Trace buffering";
                }
                enum "all" {
                  value 10;
                  description "Trace everything";
                }
              }
            }
          }  // list flag
        }  // grouping software-datapath-traceoptions
    
        grouping unified-edge-gateway-diameter {
          uses apply-advanced;
    
          list network-element {
            key "name";
            ordered-by user;
            description
              "Diameter network element configuration per mobile gateway";
            leaf name {
              junos:must "("access diameter network-element $$")";
              junos:must-message "Referenced DNE must be defined";
              type string {
                length "1 .. 31";
              }
              description
                "Diameter network-element name";
            }
    
            uses apply-advanced;
    
            container session-pics {
              description
                "Session MS-PICs to serve this Diameter network element";
              uses unified-edge-gateway-diameter-ne-session-pics;
            }  // container session-pics
          }  // list network-element
        }  // grouping unified-edge-gateway-diameter
    
        grouping unified-edge-gateway-diameter-ne-session-pics {
          uses apply-advanced;
    
          list group {
            key "name";
            ordered-by user;
            description
              "Diameter network element Multiservice PIC group";
            leaf name {
              type string;
              description "Group name";
            }
    
            uses apply-advanced;
    
            list session-pic {
              key "name";
              ordered-by user;
              description
                "Multiservice PICs serving the Diameter network element in this group";
              leaf name {
                junos:must "(".. .. .. .. .. .. system session-pics interface $$")";
                junos:must-message "Session-pics should be defined under gateway";
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Interface name representing multiservice PIC";
              }
    
              uses apply-advanced;
            }  // list session-pic
          }  // list group
        }  // grouping unified-edge-gateway-diameter-ne-session-pics
    
        grouping unified-edge-ggsn-pgw-system {
          uses apply-advanced;
    
          container pfes {
            description
              "Packet forwarding engines used for anchoring";
            uses apply-advanced;
    
            list interface {
              key "name";
              ordered-by user;
              description
                "Interface representing packet forwarding engine";
              leaf name {
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Interface name representing packet forwarding engine";
              }
    
              uses apply-advanced;
    
              leaf service-mode {
                type enumeration {
                  enum "maintenance" {
                    value 0;
                    description
                      "Maintenance mode";
                  }
                }
                description "Service mode";
              }
            }  // list interface
          }  // container pfes
    
          container session-pics {
            description
              "Multiservice PICs used for anchoring control sessions";
            uses apply-advanced;
    
            list interface {
              key "name";
              ordered-by user;
              description
                "Interface representing multiservice PIC";
              leaf name {
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Interface name representing multiservice PIC";
              }
    
              uses apply-advanced;
    
              leaf service-mode {
                type enumeration {
                  enum "maintenance" {
                    value 0;
                    description
                      "Maintenance mode";
                  }
                }
                description "Service mode";
              }
            }  // list interface
          }  // container session-pics
    
          container service-pics {
            presence "enable service-pics";
            description
              "Multiservice PICs used for anchoring service related data sessions";
            uses apply-advanced;
    
            list interface {
              key "name";
              ordered-by user;
              description
                "Interface representing multiservice PIC";
              leaf name {
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Interface name representing multiservice PIC";
              }
    
              uses apply-advanced;
    
              leaf service-mode {
                type enumeration {
                  enum "maintenance" {
                    value 0;
                    description
                      "Maintenance mode";
                  }
                }
                description "Service mode";
              }
            }  // list interface
          }  // container service-pics
        }  // grouping unified-edge-ggsn-pgw-system
    
        grouping unified-edge-mobile-options {
          description
            "Unified edge mobile options";
          uses apply-advanced;
    
          container traceoptions {
            description
              "Mobility config and operational command daemon trace options";
            uses mobiled-traceoptions;
          }  // container traceoptions
        }  // grouping unified-edge-mobile-options
    
        grouping mobiled-traceoptions {
          description
            "Trace options for mobiled";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
    
            leaf match {
              type jt:regular-expression;
              description
                "Regular expression for lines to be logged";
            }
          }  // container file
    
          list flag {
            key "name";
            ordered-by user;
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "configuration" {
                  value 0;
                  description
                    "Trace configuration events";
                }
                enum "protocol" {
                  value 1;
                  description
                    "Trace protocol processing events";
                }
                enum "init" {
                  value 2;
                  description
                    "Trace events related to protocol daemon start-up";
                }
                enum "error" {
                  value 3;
                  description
                    "Trace events related to catestrophic errors in daemon";
                }
                enum "all" {
                  value 4;
                  description "Trace everything";
                }
              }
            }
    
            leaf send {
              type empty;
              description
                "Trace transmitted packets";
            }
    
            leaf receive {
              type empty;
              description
                "Trace received packets";
            }
    
            leaf detail {
              type empty;
              description
                "Trace detailed information";
            }
    
            leaf disable {
              type empty;
              description
                "Disable this trace flag";
            }
          }  // list flag
        }  // grouping mobiled-traceoptions
    
        grouping unified-edge-pcef {
          description "PCEF configuration";
          uses apply-advanced;
    
          container traceoptions {
            description
              "Trace options related to PCEF";
            uses pcef-traceoptions;
          }  // container traceoptions
    
          container event-trigger-profiles {
            description "Event trigger profiles";
            uses apply-advanced;
    
            list profile {
              key "name";
              uses evt-trigger-profile;
            }  // list profile
          }  // container event-trigger-profiles
    
          container flow-descriptions {
            description "PCC flow descriptions";
            uses apply-advanced;
    
            list definition {
              key "name";
              uses pcc-flow;
            }  // list definition
          }  // container flow-descriptions
    
          container pcc-action-profiles {
            description "PCC action profiles";
            uses apply-advanced;
    
            list definition {
              key "name";
              uses pcc-action-profile;
            }  // list definition
          }  // container pcc-action-profiles
    
          container pcc-rules {
            description "PCC rules";
            uses apply-advanced;
    
            list definition {
              key "name";
              uses pcc-rule;
            }  // list definition
          }  // container pcc-rules
    
          container pcc-rulebases {
            description "PCC rulebases";
            uses apply-advanced;
    
            list definition {
              key "name";
              ordered-by user;
              uses pcc-rulebase;
            }  // list definition
          }  // container pcc-rulebases
    
          container profiles {
            junos:must "(!("system services subscriber-management enable"))";
            junos:must-message "unified-edge pcef profiles is not allowed when enhanced-ip is configured";
            description "PCEF profiles";
            uses apply-advanced;
    
            list definition {
              key "name";
              ordered-by user;
              uses pcef-profiles;
            }  // list definition
          }  // container profiles
    
          container pcc-time-of-day-profiles {
            description
              "PCEF Time Of Day profiles";
            uses apply-advanced;
    
            list definition {
              key "name";
              ordered-by user;
              uses pcef-time-of-day-profile;
            }  // list definition
          }  // container pcc-time-of-day-profiles
        }  // grouping unified-edge-pcef
    
        grouping evt-trigger-profile {
          description "Event trigger profile";
          leaf name {
            type string {
              length "1 .. 63";
            }
            description
              "Event trigger profile name";
          }
    
          uses apply-advanced;
    
          leaf rat-change {
            type empty;
            description "RAT change trigger";
          }
    
          leaf sgsn-change {
            type empty;
            description "SGSN change trigger";
          }
    
          leaf plmn-change {
            type empty;
            description "PLMN change trigger";
          }
    
          leaf ip-can-change {
            type empty;
            description "IP-CAN change trigger";
          }
    
          leaf tft-change {
            type empty;
            description "TFT change trigger";
          }
    
          leaf rai-change {
            type empty;
            description "RAI change trigger";
          }
    
          leaf user-location-change {
            type empty;
            description "User location change";
          }
    
          leaf ue-timezone-change {
            type empty;
            description "UE timezone change";
          }
        }  // grouping evt-trigger-profile
    
        grouping pcc-action-profile {
          description "PCC action profiles";
          leaf name {
            type string {
              length "1 .. 63";
            }
            description
              "PCC action profile identifier";
          }
    
          uses apply-advanced;
    
          leaf logging-rule {
            junos:must "(any "services lrf profile <*> rule $$")";
            junos:must-message "Specified rule should be configured under services lrf profile rule";
            type string {
              length "1 .. 63";
            }
            description
              "Policy based logging rule name";
          }
    
          container maximum-bit-rate {
            presence "enable maximum-bit-rate";
            description "Maximum bit rate";
            leaf uplink {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 6144000";
                }
              }
              units "kilobits";
              default "0";
              description
                "Maximum bit rate uplink";
            }
    
            leaf downlink {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 6144000";
                }
              }
              units "kilobits";
              default "0";
              description
                "Maximum bit rate downlink";
            }
          }  // container maximum-bit-rate
    
          container burst-size {
            presence "enable burst-size";
            description "Burst Size";
            uses apply-advanced;
    
            leaf uplink {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1500 .. 1500000000";
                }
              }
              units "bytes";
              description "Burst size uplink";
            }
    
            leaf downlink {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1500 .. 1500000000";
                }
              }
              units "bytes";
              description "Burst size downlink";
            }
          }  // container burst-size
    
          leaf gate-status {
            type enumeration {
              enum "uplink" {
                value 0;
                description
                  "Enable uplink traffic";
              }
              enum "downlink" {
                value 1;
                description
                  "Enable downlink traffic";
              }
              enum "uplink-downlink" {
                value 2;
                description
                  "Enable uplink and downlink traffic";
              }
              enum "disable-both" {
                value 3;
                description
                  "Disable any traffic";
              }
            }
            description "Control gate status";
          }
    
          container charging {
            description
              "Charing related configuration";
            uses apply-advanced;
    
            leaf rating-group {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 4294967294";
                }
              }
              description "Rating group";
            }
    
            leaf service-identifier {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 4294967294";
                }
              }
              default "0";
              description "Service identifier";
            }
    
            leaf charging-method {
              type enumeration {
                enum "online" {
                  value 0;
                  description
                    "Use online charging method";
                }
                enum "offline" {
                  value 1;
                  description
                    "Use offline charging method";
                }
                enum "both" {
                  value 2;
                  description
                    "Use online and offline charging method";
                }
                enum "none" {
                  value 3;
                  description "Use no charging";
                }
              }
              description "Charging method";
            }
    
            leaf measurement-method {
              type enumeration {
                enum "none" {
                  value 0;
                  description
                    "No default measuring method for charging";
                }
                enum "volume" {
                  value 1;
                  description
                    "Volume based charging";
                }
                enum "time" {
                  value 2;
                  description
                    "Time based charging";
                }
                enum "volume-time" {
                  value 3;
                  description
                    "Volume and time based charging";
                }
                enum "event" {
                  value 4;
                  description
                    "Event based charging";
                }
              }
              default "volume-time";
              description
                "Charging measure method";
            }
    
            container application-function-record-info {
              presence
                "enable application-function-record-info";
              description
                "Application function record information";
              uses apply-advanced;
    
              leaf af-charging-identifier {
                type string {
                  length "1 .. 63";
                }
                description
                  "Application function charging identifier";
              }
            }  // container application-function-record-info
    
            leaf service-id-level-reporting {
              type empty;
              description
                "Toggle service-id level reporting";
            }
          }  // container charging
    
          container redirect {
            description
              "Redirect to different destination";
            uses apply-advanced;
    
            leaf url {
              junos:must "(!(".. routing-instance"))";
              junos:must-message "Either url or routing instance can be defined";
              type string {
                length "1 .. 512";
              }
              description "Redirect url name";
            }
          }  // container redirect
    
          container forwarding-class {
            description
              "Classify packet to forwarding class";
            uses apply-advanced;
    
            leaf class-name {
              type string {
                junos:posix-pattern "^.{1,64}$";
                junos:pattern-message "Must be string of 64 characters or less";
              }
              description
                "Forwarding class name";
            }
          }  // container forwarding-class
    
          container steering {
            description "Steering information";
            uses apply-advanced;
    
            container routing-instance {
              description
                "Routing instance information";
              leaf uplink {
                junos:must "("routing-instances $$")";
                junos:must-message "routing instance must be defined";
                type string;
                description
                  "Instance name uplink";
              }
    
              leaf downlink {
                junos:must "("routing-instances $$")";
                junos:must-message "routing instance must be defined";
                type string;
                description
                  "Instance name downlink";
              }
            }  // container routing-instance
    
            container path {
              description
                "HTTP steering information";
              choice ip-address-type {
                leaf ipv4-address {
                  type jt:ipv4prefix;
                  description
                    "IPv4 address of the steering destination";
                }
                leaf ipv6-address {
                  type jt:ipv6prefix;
                  description
                    "IPv6 address of the steering destination";
                }
              }  // choice ip-address-type
            }  // container path
    
            leaf keep-existing-steering {
              type empty;
              description
                "Keep existing steering";
            }
          }  // container steering
    
          container hcm-profile {
            description "HCM Profile";
            uses apply-advanced;
    
            leaf profile-name {
              junos:must "("services hcm profile $$")";
              junos:must-message "HCM Profile must be configured";
              type string;
              description "HCM Profile Name";
            }
          }  // container hcm-profile
    
          leaf monitoring-key {
            type string {
              length "1 .. 63";
            }
            description "Usage Monitoring key";
          }
        }  // grouping pcc-action-profile
    
        grouping pcc-flow {
          description "Configure PCC flow";
          leaf name {
            type string {
              length "1 .. 63";
            }
            description "PCC flow identifier";
          }
    
          uses apply-advanced;
    
          leaf direction {
            type enumeration {
              enum "downlink" {
                value 0;
                description "Downlink direction";
              }
              enum "uplink" {
                value 1;
                description "Uplink direction";
              }
              enum "both" {
                value 2;
                description
                  "Both uplink and downlink directons";
              }
            }
            description "PCC flow direction";
          }
    
          leaf protocol {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint8 {
                range "0 .. 255";
              }
            }
            description "PCC flow IPv4 protocol";
          }
    
          leaf-list local-ports {
            junos:must "(!(".. local-port-range"))";
            junos:must-message "Either port list or port range can be defined";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 65535";
              }
            }
            max-elements 3;
            description
              "Local port or port list";
          }
    
          list local-port-range {
            junos:must "(!(".. local-ports"))";
            junos:must-message "Either port list or port range can be defined";
            key "low high";
            max-elements 3;
            ordered-by user;
            description "Local port range";
            leaf low {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              description
                "Lower limit of port range";
            }
    
            leaf high {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              description
                "Upper limit of port range";
            }
          }  // list local-port-range
    
          leaf-list remote-ports {
            junos:must "(!(".. remote-port-range"))";
            junos:must-message "Either port list or port range can be defined";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 65535";
              }
            }
            max-elements 3;
            description
              "Remote port or port list";
          }
    
          list remote-port-range {
            junos:must "(!(".. remote-ports"))";
            junos:must-message "Either port list or port range can be defined";
            key "low high";
            max-elements 3;
            ordered-by user;
            description "Remote port range";
            leaf low {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              description
                "Lower limit of port range";
            }
    
            leaf high {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 65535";
                }
              }
              description
                "Upper limit of port range";
            }
          }  // list remote-port-range
    
          container remote-address {
            description "Remote address";
            choice ip-address-type {
              leaf ipv4-address {
                type jt:ipv4prefix;
                description
                  "IPv4 address for the flow";
              }
              leaf ipv6-address {
                type jt:ipv6prefix;
                description
                  "IPv6 address for the flow";
              }
            }  // choice ip-address-type
          }  // container remote-address
        }  // grouping pcc-flow
    
        grouping pcc-rule {
          description "PCC rules configuration";
          leaf name {
            type string {
              junos:posix-pattern "^[.0-9A-Za-z_-]{1,63}$";
              junos:pattern-message "Must be a string of 63 or fewer characters and may contain letters, numbers, decimals and dashes.";
            }
            description "PCC Rule identifier";
          }
    
          uses apply-advanced;
    
          container from {
            description
              "Aggregate of flows using same pcc-action-profile";
            uses apply-advanced;
    
            list flows {
              key "name";
              max-elements 64;
              ordered-by user;
              description "Associate PCC Flows";
              leaf name {
                junos:must "(".. .. .. .. .. flow-descriptions $$")";
                junos:must-message "Referenced flow must be defined";
                type string {
                  length "1 .. 63";
                }
                description
                  "PCC Flow identifier";
              }
    
              uses apply-advanced;
            }  // list flows
    
            list applications {
              key "name";
              max-elements 10;
              ordered-by user;
              description
                "Associated application signature names";
              leaf name {
                type string {
                  length "1 .. 63";
                }
                description "Signature names";
              }
    
              uses apply-advanced;
            }  // list applications
    
            list nested-applications {
              key "name";
              max-elements 10;
              ordered-by user;
              status deprecated;
              description
                "Associated nested application signature names";
              leaf name {
                type string {
                  length "1 .. 63";
                }
                description
                  "Nested application signature names";
              }
    
              uses apply-advanced;
            }  // list nested-applications
    
            list application-groups {
              key "name";
              max-elements 10;
              ordered-by user;
              description
                "Application Group signature names";
              leaf name {
                type string {
                  length "1 .. 63";
                }
                description
                  "Application group names";
              }
    
              uses apply-advanced;
            }  // list application-groups
          }  // container from
    
          container then {
            description
              "Specified pcc-action-profile";
            uses apply-advanced;
    
            leaf pcc-action-profile {
              junos:must "(".. .. .. .. pcc-action-profiles $$")";
              junos:must-message "Referenced action profile must be defined";
              type string {
                length "1 .. 63";
              }
              description
                "PCC Action profile name";
            }
          }  // container then
        }  // grouping pcc-rule
    
        grouping pcc-rulebase {
          description "PCC rulebases";
          leaf name {
            type string {
              junos:posix-pattern "^[.0-9A-Za-z_-]{1,63}$";
              junos:pattern-message "Must be a string of 63 or fewer charactars and may contain letters, numbers, decimals and dashes";
            }
            description
              "PCC Rulebase identifier";
          }
    
          uses apply-advanced;
    
          list pcc-rule {
            key "name";
            max-elements 32;
            ordered-by user;
            leaf name {
              junos:must "(".. .. .. .. pcc-rules $$")";
              junos:must-message "Referenced rule must be defined";
              type string {
                junos:posix-pattern "^[.0-9A-Za-z_-]{1,63}$";
                junos:pattern-message "Must be a string of 63 or fewer charactars and may contain letters, numbers, decimals and dashes";
                length "1 .. 63";
              }
              description "PCC rule name";
            }
    
            leaf precedence {
              junos:must "(unique ".. .. pcc-rule <*> precedence $$")";
              junos:must-message "Precedence has to unique among rules";
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint16 {
                  range "1 .. 4000";
                }
              }
              description "PCC rule precedence";
            }
          }  // list pcc-rule
        }  // grouping pcc-rulebase
    
        grouping pcef-profiles {
          description "PCEF profiles";
          leaf name {
            type string {
              length "1 .. 63";
            }
            description "PCEF profile name";
          }
    
          uses apply-advanced;
    
          leaf control-byte-rating-group {
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint32 {
                range "0 .. 4294967294";
              }
            }
            description "Rating group id";
          }
    
          leaf unresolved-flow-action {
            type enumeration {
              enum "forward" {
                value 0;
                description "Forward";
              }
              enum "drop" {
                value 1;
                description "Drop";
              }
            }
            description "Flow action";
          }
    
          container maximum-per-pdn-service-flows {
            description
              "Max service flows per PDN";
            leaf num {
              type union {
                type uint32;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Value";
            }
          }  // container maximum-per-pdn-service-flows
    
          container dynamic-policy-control {
            junos:must "(("diameter-profile" || ".. .. .. .. .. system services subscriber-management enable"))";
            junos:must-message "diameter-profile must be configured when 'system services subscriber-management' is not enabled";
            junos:must "((!(".. static-policy-control") && !(".. aaa-policy-control")))";
            junos:must-message "Either static or dynamic or AAA policy control can be specified";
            description "Dynamic policy control";
            uses apply-advanced;
    
            container pcc-rules {
              description
                "PCC rules association";
              uses apply-advanced;
    
              list rule-assoc {
                key "name";
                max-elements 64;
                ordered-by user;
                uses profile-rule-assoc;
              }  // list rule-assoc
            }  // container pcc-rules
    
            list pcc-rulebases {
              key "name";
              ordered-by user;
              description
                "PCC rulebase association";
              leaf name {
                junos:must "(".. .. .. .. .. pcc-rulebases $$")";
                junos:must-message "Referenced rulebase must be defined";
                type string {
                  length "1 .. 63";
                }
                description "PCC rulebase name";
              }
    
              uses apply-advanced;
            }  // list pcc-rulebases
    
            leaf diameter-profile {
              junos:must "(".. .. .. .. .. diameter-profiles gx-profile $$")";
              junos:must-message "Referenced diameter profile must be defined";
              type string {
                length "1 .. 63";
              }
              description
                "Diameter profile name";
            }
    
            leaf event-trigger-profile {
              junos:must "(".. .. .. .. event-trigger-profiles $$")";
              junos:must-message "Referenced event trigger profile must be defined";
              type string {
                length "1 .. 63";
              }
              description
                "Event trigger profile name";
            }
    
            leaf session-failover-not-supported {
              type empty;
              description
                "Session failover not supported";
            }
    
            leaf release {
              type enumeration {
                enum "r8" {
                  value 0;
                  description "Gx release 8";
                }
                enum "r9" {
                  value 1;
                  description "Gx release 9";
                }
              }
              description
                "To override Gx release to R8|R9";
            }
          }  // container dynamic-policy-control
    
          container static-policy-control {
            junos:must "((!(".. dynamic-policy-control") && !(".. aaa-policy-control")))";
            junos:must-message "Either static or dynamic or AAA policy control can be specified";
            description "Static policy control";
            uses apply-advanced;
    
            container pcc-rules {
              description
                "PCC rules association";
              uses apply-advanced;
    
              list rule-assoc {
                key "name";
                max-elements 64;
                ordered-by user;
                uses profile-static-rule-association;
              }  // list rule-assoc
            }  // container pcc-rules
    
            list pcc-rulebases {
              key "name";
              ordered-by user;
              description
                "PCC rulebase association";
              leaf name {
                junos:must "(".. .. .. .. .. pcc-rulebases $$")";
                junos:must-message "Referenced rulebase must be defined";
                type string {
                  length "1 .. 63";
                }
                description "PCC rulebase name";
              }
    
              uses apply-advanced;
    
              leaf time-of-day-profile {
                junos:must "(".. .. .. .. .. pcc-time-of-day-profiles $$")";
                junos:must-message "Referenced time-of-day profile must be defined";
                type string {
                  length "1 .. 63";
                }
                description
                  "Time of day profile name";
              }
            }  // list pcc-rulebases
    
            leaf-list activate-dedicated-bearers {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "1 .. 9";
                }
              }
              max-elements 9;
              description
                "Enable dedicated bearer activation on initial attach with qci";
            }
          }  // container static-policy-control
    
          container aaa-policy-control {
            junos:must "((!(".. static-policy-control") && !(".. dynamic-policy-control")))";
            junos:must-message "Either static or dynamic or AAA policy control can be specified";
            description "AAA policy control";
            uses apply-advanced;
    
            leaf profile {
              junos:must "(".. .. .. .. .. aaa profiles $$")";
              junos:must-message "Referenced AAA profile must be defined";
              type string {
                length "1 .. 32";
              }
              description "AAA profile name";
            }
    
            leaf user-password {
              type string {
                length "1 .. 32";
              }
              description "User password";
            }
    
            list pcc-rulebases {
              key "name";
              ordered-by user;
              description
                "PCC rulebase association";
              leaf name {
                junos:must "(".. .. .. .. .. pcc-rulebases $$")";
                junos:must-message "Referenced rulebase must be defined";
                type string {
                  length "1 .. 63";
                }
                description "PCC rulebase name";
              }
    
              uses apply-advanced;
            }  // list pcc-rulebases
          }  // container aaa-policy-control
        }  // grouping pcef-profiles
    
        grouping pcef-time-of-day-profile {
          description
            "PCEF Time Of Day profiles";
          leaf name {
            type string {
              length "1 .. 63";
            }
            description
              "PCEF Time Of Day profile name";
          }
    
          uses apply-advanced;
    
          container rule-activation-time {
            description
              "Rule Activation Time of this profile";
            uses pcef-tod-time-type;
          }  // container rule-activation-time
    
          container rule-deactivation-time {
            description
              "Rule Dectivation Time of this profile";
            uses pcef-tod-time-type;
          }  // container rule-deactivation-time
        }  // grouping pcef-time-of-day-profile
    
        grouping pcef-tod-time-type {
          description
            "Day of month or week, month of year and Time of the day for this profile";
          uses apply-advanced;
    
          choice day-of-week-or-month {
            leaf SUNDAY {
              type empty;
              description "Sunday";
            }
            leaf MONDAY {
              type empty;
              description "Monday";
            }
            leaf TUESDAY {
              type empty;
              description "Tuesday";
            }
            leaf WEDNESDAY {
              type empty;
              description "Wednesday";
            }
            leaf THURSDAY {
              type empty;
              description "Thursday";
            }
            leaf FRIDAY {
              type empty;
              description "Friday";
            }
            leaf SATURDAY {
              type empty;
              description "Saturday";
            }
            leaf DAY1 {
              type empty;
              description "1st of the month";
            }
            leaf DAY2 {
              type empty;
              description "2nd of the month";
            }
            leaf DAY3 {
              type empty;
              description "3rd of the month";
            }
            leaf DAY4 {
              type empty;
              description "4th of the month";
            }
            leaf DAY5 {
              type empty;
              description "5th of the month";
            }
            leaf DAY6 {
              type empty;
              description "6th of the month";
            }
            leaf DAY7 {
              type empty;
              description "7th of the month";
            }
            leaf DAY8 {
              type empty;
              description "8th of the month";
            }
            leaf DAY9 {
              type empty;
              description "9th of the month";
            }
            leaf DAY10 {
              type empty;
              description "10th of the month";
            }
            leaf DAY11 {
              type empty;
              description "11th of the month";
            }
            leaf DAY12 {
              type empty;
              description "12th of the month";
            }
            leaf DAY13 {
              type empty;
              description "13th of the month";
            }
            leaf DAY14 {
              type empty;
              description "14th of the month";
            }
            leaf DAY15 {
              type empty;
              description "15th of the month";
            }
            leaf DAY16 {
              type empty;
              description "16th of the month";
            }
            leaf DAY17 {
              type empty;
              description "17th of the month";
            }
            leaf DAY18 {
              type empty;
              description "18th of the month";
            }
            leaf DAY19 {
              type empty;
              description "19th of the month";
            }
            leaf DAY20 {
              type empty;
              description "20th of the month";
            }
            leaf DAY21 {
              type empty;
              description "21st of the month";
            }
            leaf DAY22 {
              type empty;
              description "22nd of the month";
            }
            leaf DAY23 {
              type empty;
              description "23rd of the month";
            }
            leaf DAY24 {
              type empty;
              description "24th of the month";
            }
            leaf DAY25 {
              type empty;
              description "25th of the month";
            }
            leaf DAY26 {
              type empty;
              description "26th of the month";
            }
            leaf DAY27 {
              type empty;
              description "27th of the month";
            }
            leaf Last-day-of-month {
              type empty;
              description
                "Last day of the month";
            }
          }  // choice day-of-week-or-month
    
          choice month {
            leaf JANUARY {
              type empty;
              description "January";
            }
            leaf FEBRUARY {
              type empty;
              description "February";
            }
            leaf MARCH {
              type empty;
              description "March";
            }
            leaf APRIL {
              type empty;
              description "April";
            }
            leaf MAY {
              type empty;
              description "May";
            }
            leaf JUNE {
              type empty;
              description "June";
            }
            leaf JULY {
              type empty;
              description "July";
            }
            leaf AUGUST {
              type empty;
              description "August";
            }
            leaf SEPTEMBER {
              type empty;
              description "September";
            }
            leaf OCTOBER {
              type empty;
              description "October";
            }
            leaf NOVEMBER {
              type empty;
              description "November";
            }
            leaf DECEMBER {
              type empty;
              description "December";
            }
          }  // choice month
    
          leaf time {
            type jt:time-of-day;
            description
              "Time of the day in hh:mm format";
          }
        }  // grouping pcef-tod-time-type
    
        grouping pcef-traceoptions {
          description
            "Trace options related to PCEF";
          uses apply-advanced;
    
          leaf no-remote-trace {
            junos:must "("system tracing")";
            junos:must-message "'no-remote-trace' is valid only when [system tracing] is configured";
            type empty;
            description "Disable remote tracing";
          }
    
          container file {
            description "Trace file information";
            leaf filename {
              type string {
                junos:posix-pattern "![/ %]";
                junos:pattern-message "Must not contain '/', % or a space";
                length "1 .. 1024";
              }
              description
                "Name of file in which to write trace information";
            }
    
            leaf size {
              type string;
              description
                "Maximum trace file size";
            }
    
            leaf files {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "2 .. 1000";
                }
              }
              default "3";
              description
                "Maximum number of trace files";
            }
    
            choice world-readable-choice {
              leaf world-readable {
                type empty;
                description
                  "Allow any user to read the log file";
              }
              leaf no-world-readable {
                type empty;
                description
                  "Don't allow any user to read the log file";
              }
            }  // choice world-readable-choice
          }  // container file
    
          leaf level {
            type enumeration {
              enum "error" {
                value 0;
                description
                  "Match error conditions";
              }
              enum "warning" {
                value 1;
                description
                  "Match warning messages";
              }
              enum "notice" {
                value 2;
                description
                  "Match conditions that should be handled specially";
              }
              enum "info" {
                value 3;
                description
                  "Match informational messages";
              }
              enum "verbose" {
                value 4;
                description
                  "Match verbose messages";
              }
              enum "all" {
                value 5;
                description "Match all levels";
              }
            }
            default "error";
            description
              "Level of debugging output";
          }
    
          list flag {
            key "name";
            ordered-by user;
            description "Tracing parameters";
            leaf name {
              type enumeration {
                enum "init" {
                  value 0;
                  description
                    "Trace initialization events";
                }
                enum "config" {
                  value 1;
                  description
                    "Trace configuration events";
                }
                enum "general" {
                  value 2;
                  description
                    "Trace general events";
                }
                enum "high-availability" {
                  value 3;
                  description
                    "Trace high availability events";
                }
                enum "debug" {
                  value 4;
                  description
                    "Trace debug internal events";
                }
                enum "fsm" {
                  value 5;
                  description "Trace fsm events";
                }
                enum "tftmgr" {
                  value 6;
                  description
                    "Trace tftmgr events";
                }
                enum "all" {
                  value 7;
                  description "Trace everything";
                }
              }
            }
          }  // list flag
        }  // grouping pcef-traceoptions
    
        grouping profile-rule-assoc {
          leaf name {
            junos:must "(".. .. .. .. .. .. pcc-rules $$")";
            junos:must-message "Referenced rule must be defined";
            type string {
              length "1 .. 63";
            }
            description "PCC rule name";
          }
    
          leaf precedence {
            junos:must "(unique ".. .. <*> precedence $$")";
            junos:must-message "Precedence has to unique among rules";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 4000";
              }
            }
            description "PCC rule precedence";
          }
        }  // grouping profile-rule-assoc
    
        grouping profile-static-rule-association {
          leaf name {
            junos:must "(".. .. .. .. .. .. pcc-rules $$")";
            junos:must-message "Referenced rule must be defined";
            type string {
              length "1 .. 63";
            }
            description "PCC rule name";
          }
    
          leaf precedence {
            junos:must "(unique ".. .. <*> precedence $$")";
            junos:must-message "Precedence has to unique among rules";
            type union {
              type string {
                pattern "<.*>|$.*";
              }
              type uint16 {
                range "1 .. 4000";
              }
            }
            description "PCC rule precedence";
          }
    
          leaf time-of-day-profile {
            junos:must "(".. .. .. .. .. .. pcc-time-of-day-profiles $$")";
            junos:must-message "Referenced time-of-day profile must be defined";
            type string {
              length "1 .. 63";
            }
            description
              "Time of day profile name";
          }
    
          container pcc-action-profile {
            status deprecated;
            description
              "PCC action profile association";
            leaf rules-action-profile {
              junos:must "(".. .. .. .. .. .. .. pcc-action-profiles $$")";
              junos:must-message "Referenced action profile must be defined";
              type string {
                length "1 .. 63";
              }
              description
                "PCC action profile name";
            }
          }  // container pcc-action-profile
        }  // grouping profile-static-rule-association
    
        grouping unified-edge-sgw-system {
          uses apply-advanced;
    
          container pfes {
            description
              "Packet forwarding engines used for anchoring";
            uses apply-advanced;
    
            list interface {
              key "name";
              ordered-by user;
              description
                "Interface representing packet forwarding engine";
              leaf name {
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Interface name representing packet forwarding engine";
              }
    
              uses apply-advanced;
    
              leaf service-mode {
                type enumeration {
                  enum "maintenance" {
                    value 0;
                    description
                      "Maintenance mode";
                  }
                }
                description "Service mode";
              }
            }  // list interface
          }  // container pfes
    
          container session-pics {
            description
              "Multiservice PICs used for anchoring control sessions";
            uses apply-advanced;
    
            list interface {
              key "name";
              ordered-by user;
              description
                "Interface representing multiservice PIC";
              leaf name {
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Interface name representing multiservice PIC";
              }
    
              uses apply-advanced;
    
              leaf service-mode {
                type enumeration {
                  enum "maintenance" {
                    value 0;
                    description
                      "Maintenance mode";
                  }
                }
                description "Service mode";
              }
            }  // list interface
          }  // container session-pics
        }  // grouping unified-edge-sgw-system
    
        grouping unified-edge-tdf {
          description
            "Traffic Detection Function configuration";
          leaf name {
            type string {
              length "1 .. 63";
            }
            description "TDF name";
          }
    
          uses apply-advanced;
    
          leaf service-mode {
            type enumeration {
              enum "maintenance" {
                value 0;
                description "Maintenance mode";
              }
            }
            description "Service mode";
          }
    
          container system {
            description "System parameters";
            uses unified-edge-tdf-system;
          }  // container system
    
          container call-rate-statistics {
            presence
              "enable call-rate-statistics";
            description
              "Call-rate-statistics options";
            uses apply-advanced;
    
            leaf interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "5 .. 120";
                }
              }
              units "minutes";
              default "60";
              description
                "Time interval in minutes";
            }
    
            leaf history {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 10";
                }
              }
              default "1";
              description "Number of intervals";
            }
          }  // container call-rate-statistics
    
          container traceoptions {
            description
              "Trace options related to subscriber management";
            uses mobile-smd-traceoptions;
          }  // container traceoptions
    
          container cac {
            presence "enable cac";
            description "TDF cac configuration";
            uses apply-advanced;
    
            leaf maximum-subscribers {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "10 .. 5000";
                }
              }
              units "thousands";
              default "5000";
              description
                "Maximum number of TDF subscribers";
            }
    
            leaf maximum-subscribers-trap-percentage {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 90";
                }
              }
              units "percentage";
              default "70";
              description
                "Percentage of Maximum subscribers";
            }
    
            container memory {
              description
                "Memory threshold configuration";
              uses apply-advanced;
    
              leaf percentage {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 90";
                  }
                }
                units "Percentage";
                description "Memory threshold";
              }
            }  // container memory
    
            container cpu {
              description
                "CPU threshold configuration";
              uses apply-advanced;
    
              leaf percentage {
                type union {
                  type string {
                    pattern "<.*>|$.*";
                  }
                  type uint32 {
                    range "1 .. 90";
                  }
                }
                units "Percentage";
                description "CPU threshold";
              }
            }  // container cpu
          }  // container cac
    
          container charging {
            presence "enable charging";
            description
              "TDF charging profile definitions";
            uses apply-advanced;
    
            container traceoptions {
              description
                "Charging trace options";
              uses charging-traceoptions;
            }  // container traceoptions
    
            container charging-profiles {
              description "Charging profile";
              uses apply-advanced;
    
              list charging-profile {
                key "name";
                max-elements 255;
                uses juniper-charging-profiles;
              }  // list charging-profile
            }  // container charging-profiles
    
            container transport-profiles {
              description
                "Transport profile definition";
              uses apply-advanced;
    
              list transport-profile {
                key "name";
                max-elements 8;
                uses juniper-transport-profiles;
              }  // list transport-profile
            }  // container transport-profiles
          }  // container charging
    
          container domains {
            description
              "TDF domains configuration";
            uses apply-advanced;
    
            list domain {
              key "name";
              max-elements 128;
              uses tdf-domain;
            }  // list domain
          }  // container domains
    
          container domain-selection {
            description "TDF domain selection";
            uses apply-advanced;
    
            list term {
              key "name";
              max-elements 200;
              ordered-by user;
              description
                "Define a domain selection term";
              leaf name {
                type string {
                  length "1 .. 50";
                }
                description "Term name";
              }
    
              uses apply-advanced;
    
              container from {
                description
                  "Define match criteria";
                uses domain-sel-match-object;
              }  // container from
    
              container then {
                description
                  "Action to take if the 'from' condition is matched";
                uses apply-advanced;
    
                leaf domain {
                  junos:must "(!("unified-edge gateways tdf ${tdf} domains $$ subscriber-type ifl"))";
                  junos:must-message "Referenced domain must be defined as ip-subscriber";
                  junos:must "("unified-edge gateways tdf ${tdf} domains $$")";
                  junos:must-message "Referenced domain must be defined";
                  type string {
                    length "1 .. 50";
                  }
                  description "TDF domain name";
                }
    
                leaf pcef-profile {
                  junos:must "("unified-edge pcef profiles $$")";
                  junos:must-message "Referenced pcef profile must be defined";
                  type string {
                    length "1 .. 63";
                  }
                  description
                    "PCEF profile name";
                }
              }  // container then
            }  // list term
          }  // container domain-selection
    
          container aaa {
            description
              "AAA related configuration";
            uses apply-advanced;
    
            container clients {
              description "AAA radius clients";
              uses apply-advanced;
    
              list client {
                key "name";
                ordered-by user;
                description "AAA radius client";
                leaf name {
                  junos:must "("access radius clients $$")";
                  junos:must-message "Referenced Radius client must be defined";
                  type string {
                    length "1 .. 31";
                  }
                  description
                    "Name of the radius client";
                }
    
                uses apply-advanced;
              }  // list client
            }  // container clients
    
            container snoop-segments {
              description
                "AAA radius snoop segments";
              uses apply-advanced;
    
              list snoop-segment {
                key "name";
                ordered-by user;
                description
                  "AAA radius snoop segment";
                leaf name {
                  junos:must "("access radius snoop-segments $$")";
                  junos:must-message "Referenced Radius snoop-segment must be defined";
                  type string {
                    length "1 .. 32";
                  }
                  description
                    "Name of Radius snoop segment";
                }
    
                uses apply-advanced;
              }  // list snoop-segment
            }  // container snoop-segments
          }  // container aaa
        }  // grouping unified-edge-tdf
    
        grouping domain-sel-match-object {
          description
            "TDF domain selection match";
          uses apply-advanced;
    
          list client {
            key "name";
            max-elements 5;
            ordered-by user;
            description "AAA Radius client";
            leaf name {
              junos:must "("access radius clients $$")";
              junos:must-message "Referenced Radius client must be defined";
              type string {
                length "1 .. 31";
              }
              description
                "Name of the Radius client";
            }
    
            uses apply-advanced;
          }  // list client
    
          list snoop-segment {
            key "name";
            max-elements 5;
            ordered-by user;
            description
              "AAA Radius snoop-segment";
            leaf name {
              junos:must "("access radius snoop-segments $$")";
              junos:must-message "Referenced Radius snoop-segment must be defined";
              type string {
                length "1 .. 32";
              }
              description
                "Name of Radius snoop-segment";
            }
    
            uses apply-advanced;
          }  // list snoop-segment
    
          container user-name {
            description "Radius avp user-name";
            choice match_choice {
              container equals {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container equals
              container has-prefix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-prefix
              container has-suffix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-suffix
              container matches {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container matches
            }  // choice match_choice
          }  // container user-name
    
          container nas-ip-address {
            description
              "Radius avp nas-ip-address";
            container equals {
              description
                "Attribute match options";
              uses apply-advanced;
    
              leaf value {
                type jt:ipv4prefix;
                description
                  "IPv4 address/prefix value";
              }
            }  // container equals
          }  // container nas-ip-address
    
          container calling-station-id {
            description
              "Radius avp calling-station-id";
            choice match_choice {
              container equals {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container equals
              container has-prefix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-prefix
              container has-suffix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-suffix
              container matches {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container matches
            }  // choice match_choice
          }  // container calling-station-id
    
          container called-station-id {
            description
              "Radius avp called-station-id";
            choice match_choice {
              container equals {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container equals
              container has-prefix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-prefix
              container has-suffix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-suffix
              container matches {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container matches
            }  // choice match_choice
          }  // container called-station-id
    
          container class {
            description "Radius avp class";
            choice match_choice {
              container equals {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container equals
              container has-prefix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-prefix
              container has-suffix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-suffix
              container matches {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container matches
            }  // choice match_choice
          }  // container class
    
          container threegpp-imsi {
            description "Radius avp 3gpp-imsi";
            choice match_choice {
              container equals {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container equals
              container has-prefix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-prefix
              container has-suffix {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container has-suffix
              container matches {
                description
                  "Attribute match options";
                uses apply-advanced;
    
                leaf value {
                  type string {
                    length "1 .. 254";
                  }
                  description "String value";
                }
              }  // container matches
            }  // choice match_choice
          }  // container threegpp-imsi
    
          container framed-ip-address {
            description
              "Radius avp framed-ip-address";
            container equals {
              description
                "Attribute match options";
              uses apply-advanced;
    
              leaf value {
                type jt:ipv4prefix;
                description
                  "IPv4 address/prefix value";
              }
            }  // container equals
          }  // container framed-ip-address
    
          container framed-ipv6-prefix {
            description
              "Radius avp framed-ipv6-prefix";
            container equals {
              description
                "Attribute match options";
              uses apply-advanced;
    
              leaf value {
                type jt:ipv6prefix;
                description
                  "IPv6 address/prefix value";
              }
            }  // container equals
          }  // container framed-ipv6-prefix
    
          list attribute {
            key "name";
            max-elements 5;
            ordered-by user;
            description
              "Custom radius attributes";
            leaf name {
              type string {
                length "1 .. 50";
              }
              description
                "Custom attribute name";
            }
    
            uses apply-advanced;
    
            leaf code {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint8 {
                  range "0 .. 255";
                }
              }
              description "Attribute code";
            }
    
            leaf vendor-id {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 65534";
                }
              }
              default "0";
              description "Attribute vendor-id";
            }
    
            container format {
              description "Attribute format";
              choice format_choice {
                container string {
                  description "Format string";
                  uses apply-advanced;
    
                  choice match_choice {
                    container equals {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type string {
                          length "1 .. 254";
                        }
                        description
                          "String value";
                      }
                    }  // container equals
                    container has-prefix {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type string {
                          length "1 .. 254";
                        }
                        description
                          "String value";
                      }
                    }  // container has-prefix
                    container has-suffix {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type string {
                          length "1 .. 254";
                        }
                        description
                          "String value";
                      }
                    }  // container has-suffix
                    container matches {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type string {
                          length "1 .. 254";
                        }
                        description
                          "String value";
                      }
                    }  // container matches
                  }  // choice match_choice
                }  // container string
                container time {
                  description "Format time";
                  uses apply-advanced;
    
                  choice match_choice {
                    container equals {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type jt:time;
                        description "Time value";
                      }
                    }  // container equals
                    container greater-than {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type jt:time;
                        description "Time value";
                      }
                    }  // container greater-than
                    container less-than {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type jt:time;
                        description "Time value";
                      }
                    }  // container less-than
                  }  // choice match_choice
                }  // container time
                container integer {
                  description "Format integer";
                  uses apply-advanced;
    
                  choice match_choice {
                    container equals {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type union {
                          type int32;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Integer value";
                      }
                    }  // container equals
                    container greater-than {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type union {
                          type int32;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Integer value";
                      }
                    }  // container greater-than
                    container less-than {
                      description
                        "Attribute match options";
                      uses apply-advanced;
    
                      leaf value {
                        type union {
                          type int32;
                          type string {
                            pattern "<.*>|$.*";
                          }
                        }
                        description
                          "Integer value";
                      }
                    }  // container less-than
                  }  // choice match_choice
                }  // container integer
                container v4address {
                  description "Format v4address";
                  uses apply-advanced;
    
                  container equals {
                    description
                      "Attribute match options";
                    uses apply-advanced;
    
                    leaf value {
                      type jt:ipv4prefix;
                      description
                        "IPv4 address/prefix value";
                    }
                  }  // container equals
                }  // container v4address
                container v6prefix {
                  description "Format v6prefix";
                  uses apply-advanced;
    
                  container equals {
                    description
                      "Attribute match options";
                    uses apply-advanced;
    
                    leaf value {
                      type jt:ipv6prefix;
                      description
                        "IPv6 address/prefix value";
                    }
                  }  // container equals
                }  // container v6prefix
                container v6address {
                  description "Format v6address";
                  uses apply-advanced;
    
                  container equals {
                    description
                      "Attribute match options";
                    uses apply-advanced;
    
                    leaf value {
                      type jt:ipv6prefix;
                      description
                        "IPv6 address/prefix value";
                    }
                  }  // container equals
                }  // container v6address
              }  // choice format_choice
            }  // container format
          }  // list attribute
        }  // grouping domain-sel-match-object
    
        grouping tdf-domain {
          description
            "Configure domain for tdf gateway";
          leaf name {
            type string {
              length "1 .. 50";
            }
            description "TDF domain name";
          }
    
          uses apply-advanced;
    
          leaf subscriber-type {
            type enumeration {
              enum "ip" {
                value 0;
                description "Subscriber type IP";
              }
              enum "ifl" {
                value 1;
                description
                  "Subscriber type IFL";
              }
            }
            default "ip";
            description
              "Specify subscriber type";
          }
    
          container subscriber-exclude-prefix {
            description
              "Exclude subscriber address prefix";
            uses apply-advanced;
    
            container family {
              description "Address family";
              uses apply-advanced;
    
              container inet {
                description
                  "IPv4 address configuration";
                uses apply-advanced;
    
                list network {
                  key "name";
                  max-elements 8;
                  ordered-by user;
                  description
                    "Specify IPv4 network prefix";
                  leaf name {
                    type jt:ipv4prefix-only;
                    description
                      "IPv4 network prefix";
                  }
    
                  uses apply-advanced;
                }  // list network
              }  // container inet
    
              container inet6 {
                description
                  "IPv6 address pool configuration";
                uses apply-advanced;
    
                list network {
                  key "name";
                  max-elements 8;
                  ordered-by user;
                  description
                    "Specify IPv6 network prefix";
                  leaf name {
                    type jt:ipv6prefix-only;
                    description
                      "IPv6 network prefix";
                  }
    
                  uses apply-advanced;
                }  // list network
              }  // container inet6
            }  // container family
          }  // container subscriber-exclude-prefix
    
          leaf pcef-profile {
            junos:must "("unified-edge pcef profiles $$")";
            junos:must-message "Referenced PCEF profile must be defined";
            type string {
              length "1 .. 63";
            }
            description
              "PCEF profile for the TDF domain";
          }
    
          leaf tdf-interface {
            junos:must "(("interfaces $$-IFL family inet service" || "interfaces $$-IFL family inet6 service"))";
            junos:must-message "service set must be defined for the tdf-interface";
            junos:must "("interfaces $$")";
            junos:must-message "referenced mif interface must be defined";
            type union {
              type jt:interface-unit;
              type string {
                pattern "<.*>|$.*";
              }
            }
            description "TDF interface";
          }
    
          container maximum-bit-rate {
            presence "enable maximum-bit-rate";
            description
              "Default subscriber policy for TDF traffic";
            uses apply-advanced;
    
            leaf uplink {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 6144000";
                }
              }
              units "kilobits";
              default "0";
              description
                "Maximum bit rate uplink";
            }
    
            leaf downlink {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 6144000";
                }
              }
              units "kilobits";
              default "0";
              description
                "Maximum bit rate downlink";
            }
          }  // container maximum-bit-rate
    
          container burst-size {
            presence "enable burst-size";
            description
              "Default Subscriber Burst Size for TDF traffic";
            uses apply-advanced;
    
            leaf uplink {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1500 .. 1500000000";
                }
              }
              units "bytes";
              default "1500";
              description
                "Subscriber burst size uplink";
            }
    
            leaf downlink {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1500 .. 1500000000";
                }
              }
              units "bytes";
              default "1500";
              description
                "Subscriber burst size downlink";
            }
          }  // container burst-size
    
          leaf charging-profile {
            junos:must "("unified-edge gateways tdf ${tdf} charging charging-profiles $$")";
            junos:must-message "Charging profile must be defined";
            type string;
            description
              "Charging profile for the domain";
          }
    
          leaf service-mode {
            type enumeration {
              enum "maintenance" {
                value 0;
                description "Maintenance mode";
              }
            }
            description "Service mode";
          }
    
          container call-rate-statistics {
            presence
              "enable call-rate-statistics";
            description
              "Call-rate-statistics options";
            uses apply-advanced;
    
            leaf interval {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "5 .. 120";
                }
              }
              units "minutes";
              default "60";
              description
                "Time interval in minutes";
            }
    
            leaf history {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "1 .. 10";
                }
              }
              default "1";
              description "Number of intervals";
            }
          }  // container call-rate-statistics
    
          container ip-subscriber {
            description
              "Configure ip subscriber";
            uses apply-advanced;
    
            list access-interfaces {
              key "name";
              max-elements 16;
              ordered-by user;
              description
                "Access facing interfaces";
              leaf name {
                junos:must "("interfaces $$")";
                junos:must-message "interface must be defined";
                type union {
                  type jt:interface-name;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description "Interface name";
              }
    
              uses apply-advanced;
            }  // list access-interfaces
    
            leaf subscriber-attach-method {
              type enumeration {
                enum "radius-accounting" {
                  value 0;
                  description
                    "Attached by RADIUS accounting messages";
                }
                enum "packet-triggered" {
                  value 1;
                  description
                    "Attached by data packet";
                }
                enum "pcrf-initiated" {
                  value 2;
                  description
                    "Attached by PCRF initiation";
                }
              }
              description
                "Specify subscriber attach method";
            }
    
            container subscription-id {
              description
                "Specify subscription id options";
              uses apply-advanced;
    
              list subscription-id-options {
                key "name";
                max-elements 6;
                ordered-by user;
                description
                  "Subscription id options sets";
                uses subscription-id-set;
              }  // list subscription-id-options
    
              container constant {
                description
                  "Constant string for subscription-id";
                leaf constant-value {
                  type string {
                    length "1 .. 128";
                  }
                  description "Constant string";
                }
              }  // container constant
    
              leaf use-class-regular-expression {
                junos:must "(!(".. use-class"))";
                junos:must-message "use-class-regular-expression is deprecated; use use-class regex";
                junos:must "(any ".. subscription-id-options <*> id-components use-class")";
                junos:must-message "use subscription-id-options";
                type string {
                  length "1 .. 64";
                }
                status deprecated;
                description
                  "Regular expression for Class attribute parsing";
              }
    
              container use-class {
                uses apply-advanced;
    
                leaf regex {
                  junos:must "(any ".. .. subscription-id-options <*> id-components use-class")";
                  junos:must-message "id-components must contain use-class";
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Regular expression for Class attribute parsing";
                }
    
                leaf pattern {
                  junos:must "(".. regex")";
                  junos:must-message "Substitution works with regular expression";
                  type string {
                    length "1 .. 64";
                  }
                  description
                    "Substitution template to use with regular expression";
                }
    
                leaf subscription-id-type {
                  type enumeration {
                    enum "imsi" {
                      value 0;
                      description
                        "Use as IMSI subscriber type";
                    }
                    enum "msisdn" {
                      value 1;
                      description
                        "Use as MSISDN (E164) subscriber type";
                    }
                    enum "nai" {
                      value 2;
                      description
                        "Use as NAI subscriber type";
                    }
                    enum "sip-uri" {
                      value 3;
                      description
                        "Use as SIP URI name subscriber type";
                    }
                    enum "private" {
                      value 4;
                      description
                        "Use as private subscriber type";
                    }
                  }
                  description
                    "Subscription id type";
                }
              }  // container use-class
            }  // container subscription-id
    
            leaf immediate-accounting-response {
              type enumeration {
                enum "enable" {
                  value 0;
                  description
                    "Enable immediate RADIUS accounting response";
                }
                enum "disable" {
                  value 1;
                  description
                    "Disable immediate RADIUS accounting response";
                }
              }
              description
                "Enable/disable immediate RADIUS response message";
            }
    
            container subscriber-address {
              description
                "Specify the subscriber address information";
              uses apply-advanced;
    
              container inet {
                description
                  "Specify address pool name for IPv4";
                uses apply-advanced;
    
                leaf pool {
                  type string {
                    length "1 .. 64";
                  }
                }
              }  // container inet
    
              container inet6 {
                description
                  "Specify address pool name for IPv6";
                uses apply-advanced;
    
                leaf pool {
                  type string {
                    length "1 .. 64";
                  }
                }
              }  // container inet6
            }  // container subscriber-address
    
            leaf maximum-subscribers {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "10 .. 5000";
                }
              }
              units "in thousands";
              description
                "Maximum TDF subscribers";
            }
    
            leaf idle-timeout {
              type union {
                type string {
                  pattern "<.*>|$.*";
                }
                type uint32 {
                  range "0 .. 300";
                }
              }
              units "minutes";
              description
                "Session idle timeout value";
            }
    
            container default-local-policy {
              presence
                "enable default-local-policy";
              description
                "Default local policy for TDF traffic";
              uses apply-advanced;
    
              leaf flow-action {
                type enumeration {
                  enum "forward" {
                    value 0;
                    description "Forward";
                  }
                  enum "drop" {
                    value 1;
                    description "Drop";
                  }
                }
                description "Flow action";
              }
    
              container maximum-bit-rate {
                presence
                  "enable maximum-bit-rate";
                description "Maximum bit rate";
                leaf uplink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 6144000";
                    }
                  }
                  units "kilobits";
                  default "0";
                  description
                    "Maximum bit rate uplink";
                }
    
                leaf downlink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "0 .. 6144000";
                    }
                  }
                  units "kilobits";
                  default "0";
                  description
                    "Maximum bit rate downlink";
                }
              }  // container maximum-bit-rate
    
              container burst-size {
                presence "enable burst-size";
                description
                  "Burst Size for TDF traffic";
                uses apply-advanced;
    
                leaf uplink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1500 .. 1500000000";
                    }
                  }
                  units "bytes";
                  default "1500";
                  description
                    "Burst size uplink";
                }
    
                leaf downlink {
                  type union {
                    type string {
                      pattern "<.*>|$.*";
                    }
                    type uint32 {
                      range "1500 .. 1500000000";
                    }
                  }
                  units "bytes";
                  default "1500";
                  description
                    "Burst size downlink";
                }
              }  // container burst-size
            }  // container default-local-policy
          }  // container ip-subscriber
    
          container ifl-subscriber {
            description
              "IFL subscriber configuration";
            uses apply-advanced;
    
            list ifl-subscribers {
              key "name";
              max-elements 32;
              uses tdf-ifl-subscriber;
            }  // list ifl-subscribers
          }  // container ifl-subscriber
        }  // grouping tdf-domain
    
        grouping subscription-id-set {
          description
            "Specify subscription id set";
          leaf name {
            type string {
              length "1 .. 128";
            }
            description
              "Subscription id set name";
          }
    
          uses apply-advanced;
    
          leaf-list id-components {
            type enumeration {
              enum "use-imsi" {
                value 0;
                description
                  "Use imsi for subscriber ID";
              }
              enum "use-msisdn" {
                value 1;
                description
                  "Use msisdn for subscriber ID";
              }
              enum "use-nai" {
                value 2;
                description
                  "Use nai for subscriber ID";
              }
              enum "use-username" {
                value 3;
                description
                  "Use user name for subscriber ID";
              }
              enum "use-realm" {
                value 4;
                description
                  "Use realm for subscriber ID";
              }
              enum "use-nas-port" {
                value 5;
                description
                  "Use NAS port for subscriber ID";
              }
              enum "use-nas-port-id" {
                value 6;
                description
                  "Use NAS port ID for subscriber ID";
              }
              enum "use-class" {
                value 7;
                description
                  "Parse Class attribute to get subscriber ID";
              }
            }
            ordered-by user;
            description
              "Subscription id components";
          }
        }  // grouping subscription-id-set
    
        grouping tdf-ifl-subscriber {
          description "Configure ifl subscriber";
          leaf name {
            type string {
              length "1 .. 64";
            }
            description "IFL subscriber name";
          }
    
          uses apply-advanced;
    
          list access-interfaces {
            key "name";
            max-elements 16;
            ordered-by user;
            description
              "Access facing interfaces";
            leaf name {
              junos:must "("interfaces $$")";
              junos:must-message "interface must be defined";
              type union {
                type jt:interface-name;
                type string {
                  pattern "<.*>|$.*";
                }
              }
              description "Interface name";
            }
    
            uses apply-advanced;
          }  // list access-interfaces
        }  // grouping tdf-ifl-subscriber
    
        grouping unified-edge-tdf-system {
          uses apply-advanced;
    
          container session-pics {
            description
              "Multiservice PICs used for anchoring control sessions";
            uses apply-advanced;
    
            list interface {
              key "name";
              ordered-by user;
              description
                "Interface representing multiservice PIC";
              leaf name {
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Interface name representing multiservice PIC";
              }
    
              uses apply-advanced;
    
              leaf service-mode {
                type enumeration {
                  enum "maintenance" {
                    value 0;
                    description
                      "Maintenance mode";
                  }
                }
                description "Service mode";
              }
            }  // list interface
          }  // container session-pics
    
          container service-pics {
            presence "enable service-pics";
            description
              "Multiservice PICs used for anchoring service related data sessions";
            uses apply-advanced;
    
            list interface {
              key "name";
              ordered-by user;
              description
                "Interface representing multiservice PIC";
              leaf name {
                type union {
                  type jt:interface-unit;
                  type string {
                    pattern "<.*>|$.*";
                  }
                }
                description
                  "Interface name representing multiservice PIC";
              }
    
              uses apply-advanced;
    
              leaf service-mode {
                type enumeration {
                  enum "maintenance" {
                    value 0;
                    description
                      "Maintenance mode";
                  }
                }
                description "Service mode";
              }
            }  // list interface
          }  // container service-pics
        }  // grouping unified-edge-tdf-system
      }  // module junos-conf-unified-edge
    

© 2023 YumaWorks, Inc. All rights reserved.