blob: 397bd97375d57710e7fc21452de19948f36cbe7a [file] [log] [blame]
// SPDX-FileCopyrightText: 2021 Open Networking Foundation
//
// SPDX-License-Identifier: Apache-2.0
module aether-subscriber {
namespace "http://opennetworking.org/aether/subscriber";
prefix sub;
import apn-profile{ prefix apn; }
import qos-profile{ prefix qos; }
import up-profile{ prefix up; }
import access-profile{ prefix ap; }
import security-profile{ prefix sec; }
import enterprise{ prefix ent; }
import ietf-yang-types{ prefix ietf; }
organization "Open Networking Foundation.";
contact "Scott Baker";
description "To generate JSON from this use command
pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
Copied from YangUIComponents project";
revision "2020-10-22" {
description "An Aether Subscriber";
reference "RFC 6087";
}
typedef mcc {
type uint32 {
range 0..999;
}
description "The typedef for mcc";
}
typedef mnc {
type uint32 {
range 0..999;
}
description "The typedef for mnc";
}
typedef tac {
type uint32 {
range 0..99999999;
}
description "The typedef for tac";
}
container subscriber {
description "The top level container";
list ue {
key "id";
description
"List of subscriber devices";
leaf id {
type ietf:uuid;
description "identifier for this subscriber, typically a UUID";
}
leaf display-name {
type string {
length 1..80;
}
description "display name to use in GUI or CLI";
}
choice imsi {
case wildcard {
leaf imsi-wildcard {
type string {
length 1..15;
}
description "leaf for imsi-wildcard";
}
}
case range {
leaf imsi-range-from {
type uint64;
description "leaf for imsi-range-from";
}
leaf imsi-range-to {
type uint64;
description "leaf for imsi-range-to";
}
}
description "The choice for imsi";
}
container serving-plmn {
leaf mcc {
type mcc;
description "mobile country code";
}
leaf mnc {
type mnc;
description "mobile network code";
}
leaf tac {
type tac;
description "type allocation code";
}
description "The container for serving-plmn";
}
leaf requested-apn {
type string {
length 0..31;
}
description "requested access point name";
}
leaf priority {
type uint32 {
range 0..1000;
}
default 0;
description
"Priority for this subscriber range";
}
leaf enabled {
type boolean;
default false;
description
"Enable or disable this ue";
}
leaf enterprise {
type leafref {
path "/ent:enterprise/ent:enterprise/ent:id";
}
description
"Link to enterprise that owns this UE range";
}
container profiles {
leaf apn-profile {
type leafref {
path "/apn:apn-profile/apn:apn-profile/apn:id";
}
description
"Link to apn profile";
}
leaf up-profile {
type leafref {
path "/up:up-profile/up:up-profile/up:id";
}
description
"Link to user plane profile";
}
leaf qos-profile {
type leafref {
path "/qos:qos-profile/qos:qos-profile/qos:id";
}
description
"Link to qos profile";
}
list access-profile {
key "access-profile";
leaf access-profile {
type leafref {
path "/ap:access-profile/ap:access-profile/ap:id";
}
description
"Link to access profile";
}
leaf allowed {
type boolean;
default true;
description
"Allow or disallow this ue to use this access profile";
}
description "The list for access-profile";
}
leaf security-profile {
type leafref {
path "/sec:security-profile/sec:security-profile/sec:id";
}
description
"Link to security profile";
}
description "The container for profiles";
}
}
}
}