module sentinel-ipsmgw-configuration {
yang-version 1.1;
namespace "http://metaswitch.com/yang/tas-vm-build/sentinel-ipsmgw-configuration";
prefix "ipsmgw";
import ietf-inet-types {
prefix "ietf-inet";
}
import vm-types {
prefix "vmt";
revision-date 2019-11-29;
}
import diameter-ro-configuration {
prefix "ro";
revision-date 2019-11-29;
}
import extensions {
prefix "yangdoc";
revision-date 2020-12-02;
}
organization "Metaswitch Networks";
contact "rvt-schemas@metaswitch.com";
description "Sentinel IPSMGW configuration schema.";
revision 2020-06-01 {
description
"Initial revision";
reference
"Metaswitch Deployment Definition Guide";
}
grouping sentinel-ipsmgw-configuration-grouping {
container georedundancy {
presence "Enables geo-redundancy for IPSMGW.";
leaf total-sites {
type uint32 {
range '2 .. 32';
}
mandatory true;
description "The number of geo-redundant sites.";
}
// Site ID is derived from site-id in the vmpool config
description "Geo-redundancy configuration.";
}
container map-messaging {
leaf template-smsc-address {
type vmt:sccp-address-type;
mandatory true;
description "The 'digits' parameter value in this template
is replaced by the value of that parameter from the
received SMSC address to create a return address to the SMSC.";
}
leaf originating-address {
type vmt:sccp-address-type;
mandatory true;
description "The SCCP address used as the calling party address in SS7 messages
initiated by the IP-SM-GW.";
yangdoc:change-impact "restart";
}
leaf ipsmgw-as-msc-address {
type vmt:ss7-address-string-type;
mandatory true;
description "The ipsmgw-as-msc-address is the address that the IP-SM-GW will
return to the GMSC during the SendRoutingInformation phase of the
MT message procedure, so that subsequent messages will be delivered
to the IP-SM-GW. TCAP messages with this address should be
routeable to an IP-SM-GW node.";
}
leaf use-msisdn-as-hlr-address {
type boolean;
mandatory true;
description "Indicates if 'hlr/hlr-address' should be used as the actual HLR
address, or have its digits replaced with the MSISDN of the
subscriber.";
}
leaf suppress-hlr-interaction {
type boolean;
must ". = 'true' and ../../delivery-order = 'PS_ONLY' or . = 'false'" {
error-message "'suppress-hlr-interaction' can only be 'true' when"
+ " 'delivery-order' is set to 'PS_ONLY'";
}
mandatory true;
description "If true, no MAP messages will be sent to the HLR. Useful in LTE-only
networks. Can only be set to true when 'delivery-order' is 'PS_ONLY'";
}
leaf use-gt-as-calling-party {
type boolean;
mandatory true;
description "When accepting an OpenRequest, the SCCP responder address in the
OpenAccept will, by default, be set to the value of the SCCP called
party in the OpenRequest. If `UseGtAsCallingParty` is set to true,
and if the received sccp-called-party contains a global title, then
the global title will be used.";
}
leaf sms-content-size-threshold {
type uint32;
mandatory true;
description "If the length of the message content falls within the configured
maximum then send the ForwardSM as part of the TC-BEGIN. As a
special case a configured max size of 0 disables this functionality
regardless of the actual content length.";
}
leaf sri-sm-delivery-not-intended {
type boolean;
mandatory true;
description "If true, specify the SmDeliveryNotIntended flag when performing an SRI
for SM IMSI-only query (i.e. during SMMA callflows).";
}
leaf discard-inform-sc {
type boolean;
default true;
description "If true, discard outbound InformSC components from requests sent to
the HLR.";
}
leaf force-sm-rp-pri {
type boolean;
default true;
description "If true, force Sm_RP_PRI to be set to true in SendRoutingInfoForSM
requests sent to the HLR.";
}
description "IPSMGW address configuration.";
}
leaf invoke-timeout-milliseconds {
type uint32;
default 4500;
description "Timeout (in milliseconds) when invoking MAP operations.";
}
leaf terminating-domain {
type ietf-inet:domain-name;
mandatory true;
description "Domain defined by the operator to compose SIP URIs from the MSISDN.";
}
leaf sip-transport {
type enumeration {
enum tcp {
description "TCP.";
}
enum udp {
description "UDP.";
}
}
default udp;
description "The SIP transport to use for IPSMGW's own SIP URI in
outbound requests.";
}
leaf delivery-order {
type enumeration {
enum PS_THEN_CS {
description "Try IMS network first, then circuit-switched network second.";
}
enum CS_THEN_PS {
description "Try circuit-switched network first, then IMS network second.";
}
enum PS_ONLY {
description "Only try delivery over the IMS network.";
}
enum CS_ONLY {
description "Only try delivery over the circuit-switched network.";
}
}
mandatory true;
description "The delivery order for mobile-terminating messages.";
}
container charging-options {
leaf mt-ps-enabled {
type boolean;
mandatory true;
description "Whether charging is enabled for mobile-terminating PS messages.";
}
leaf mt-cs-enabled {
type boolean;
mandatory true;
description "Whether charging is enabled for mobile-terminating CS messages.";
}
leaf mo-ps-enabled {
type boolean;
mandatory true;
description "Whether charging is enabled for mobile-originating PS messages.";
}
container diameter-ro {
when "../mt-ps-enabled = 'true'
or ../mt-cs-enabled = 'true'
or ../mo-ps-enabled = 'true'";
uses ro:diameter-ro-configuration-grouping;
description "Diameter Ro configuration.";
}
container cdr {
leaf max-size-bytes {
type uint64;
default 100000000;
description "Approximate maximum size in bytes before a new CDR file is
started. After a CDR is written, the total file size is
compared to MaxSize. If the current file size is larger, it is
completed. If set to 0, no size-based rollover is done.";
}
leaf max-cdrs {
type uint32;
default 0;
description "Number of records to be written to a CDR file before a new file is
started. If set to 0, no record-based rollover is done.";
}
leaf max-interval-milliseconds {
type uint32 {
range "0 | 1000 .. max";
}
default 0;
description "The length of time (in milliseconds) before time-based file
rollover. If a CDR file is used for more than
max-interval-milliseconds without being rolled over due to
record- or size-based limits, it is completed anyway. If set to
0, no time-based rollover is done.";
}
leaf registrar-audit-cdrs-enabled {
type boolean;
default false;
description "'true' enables the creation of Registrar audit CDRs, 'false'
disables.";
}
description "CDR configuration.";
}
description "Message charging options.";
}
container ue-reachability-notifications {
presence "Enables UE reachability notifications.";
leaf subscription-expiry-time-seconds {
type uint32;
mandatory true;
description "The UE reachability subscription expiry time (in seconds).";
}
description "Settings regarding UE reachability subscriptions.";
}
container correlation-ra-plmnid {
leaf mcc {
type leafref {
path "/home-network/home-plmn-ids/mcc";
}
mandatory true;
description "The Mobile Country Code (MCC).";
}
leaf mnc {
type leafref {
path "/home-network/home-plmn-ids[mcc = current()/../mcc]/mncs";
}
mandatory true;
description "The Mobile Network Code (MNC).";
}
description "The PLMNID used by the correlation RA to generate MT correlation IMSIs
when the routing info for the terminating subscriber cannot be
determined. Must match one of the PLMNIDs defined in the
home network configuration.";
}
container fallback-settings {
leaf fallback-timer-milliseconds {
type uint32;
default 5000;
description "Timeout (in milliseconds) before attempting message delivery
fallback.";
}
leaf-list avoidance-codes-ps-to-cs {
type uint32;
description "List of error codes which will prevent fallback from PS to CS.";
}
leaf-list avoidance-codes-cs-to-ps {
type uint32;
description "List of error codes which will prevent fallback from CS to PS.";
}
description "Delivery fallback settings.";
}
leaf-list sccp-allowlist {
type string;
description "List of allowed GT prefixes.
If non-empty, then requests from any GT originating addresses not on the
list will be rejected. If empty, then all requests will be allowed.
Requests from non-GT addresses are always allowed.";
}
leaf routing-info-cassandra-ttl-seconds {
type uint32;
default 120;
description "Timeout (in seconds) that routing info is stored in Cassandra.";
}
container ussi {
container reject-all-with-default-message {
presence "Reject all USSI messages with a default message";
leaf language {
type string {
length "2";
pattern "[a-zA-Z]*";
}
mandatory true;
description "The language that will be set in the USSI response message.";
}
leaf message {
type string;
mandatory true;
description "The text that will be set in the USSI response message.";
}
description "Should all USSI messages be rejected with a default message.";
}
description "USSI configuration.";
}
leaf debug-logging-enabled {
type boolean;
default false;
description "Enable extensive logging for verification and issue diagnosis during
acceptance testing. Must not be enabled in production.";
}
description "IPSMGW configuration.";
}
}