blob: 035c9260e5aa8bff6a1cfbb58c50fcf51d0f0564 [file] [log] [blame]
module optical-switch {
namespace "http://www.polatis.com/yang/optical-switch";
prefix opsw;
import ietf-yang-types {
prefix yang;
}
import ietf-inet-types {
prefix inet;
}
organization "Polatis Limited";
contact
"Adam Hughes
Polatis Limited
332/2 Cambridge Science Park
Cambridge CB4 0WN
United Kingdom
Phone: +44 (0) 1223 424200
Email: yang-support@polatis.com";
description "Implements the data model for an Optical Circuit Switch";
revision "2017-08-04" {
description " 1. Removed the state and config data dependencies.
2. Added new port configuration containers for better performance.
3. Deprecated old ports/port container ";
}
revision "2017-06-13" {
description "Moved the common typedef into separate yang module";
}
revision "2017-02-09" {
description "Added APS container and notifications";
}
revision "2016-04-22" {
description "Added support for peer port configuration";
}
revision "2016-02-17" {
description "1. Added support for Variable Optical Attenuation
2. Defined new portFormat datatype to represent non-zero port Id.
3. Changed the default values of power-high-alarm from +100 to +25 and
and for power-low-alarm from -100 to -60.";
}
revision "2015-09-14" {
description "Initial revision.";
}
typedef namesFormat {
type string {
pattern "[ -~]{1,128}"; // Trying to be 0x20 to 0x7e (7f is DEL).
}
description "Characters between 1-128, of printable ascii values, 0x20 07e";
}
typedef namesFormatNullable {
type string {
pattern "[ -~]{0,128}"; // Trying to be 0x20 to 0x7e (7f is DEL).
}
description "Characters between 0-128, of printable ascii values, 0x20 07e, so can be nullable";
}
typedef floatFormat2d {
type decimal64 {
fraction-digits 2;
}
description "Floating point number, displayed with 2 decimal places.";
}
typedef portFormat {
type uint32 {
range "1 .. 65535";
}
}
typedef PortStatus {
type enumeration {
enum PO_ENABLED { value 1; }
enum PO_DISABLED { value 2; }
enum PO_FAILED { value 3; }
}
description "ENABLED means that light can pass through the port, shutters are open.
DISABLED indicates the opposite. FAILED is reported when the port cannot be used.";
}
typedef apsOperationalState {
type enumeration {
enum ON_WORKING { value 0; }
enum WORKING_FAIL { value 1; }
enum SWITCH_PROT { value 2; }
enum ON_PROTECT { value 3; }
enum PROTECT_FAIL { value 4; }
enum SWITCH_WORK { value 5; }
enum NOT_APPLICABLE { value 6; }
}
description "Describes the currently operational state of a port in an aps-protection group,
be it on the worker, be it on the protected, or be it that both have failed in effect, which is
protect failed. Most of the states are for Worker ports, protect ports are marked NOT_APPLICABLE.";
}
typedef apsPortType {
type enumeration {
enum WORKER { value 1; }
enum PROTECT { value 2; }
}
description "The type of the aps port. They are either a worker, or a port which is protecting one or many
working ports.";
}
typedef apsFlags {
type bits {
bit GLP {position 0;}
bit FTP {position 1;}
bit FTW {position 2;}
bit MTP {position 3;}
bit MTW {position 4;}
bit DNR {position 5;}
}
description "Commands which can be sent to an aps-port, they are:
GLP - Global Lock Protect
FTP - Force switch to Protector
FTW - Force switch to Worker
MTP - Manual switch To Protector
MTW - Manual switch To Worker
DNR - Do Not Revert
Lack of any of these bits are clear of that status, so a total clear is 000000";
}
typedef hostFormat {
type string {
pattern "[ -~]{1,64}"; // 0x20 to 07e
}
description "Characters between 1-64 length, of printable ascii values, 0x20 07e";
}
typedef secretFormat {
type string {
pattern "[a-zA-Z0-9]{1,128}"; // Alphanumeric
}
description "Characters between 1-128 length, alphanumeric";
}
container product-information {
config false;
leaf manufacturer {
type string;
description "Name of the manufacturer";
}
leaf serial-number {
type string;
description "Unique number given to the product during manufacturing.";
}
leaf model-name {
type string;
description "Describes the product and the features that the product supports.";
}
leaf software-version {
type string;
description "Version of the software that is currently running on the optical switch";
}
}
container port-config {
list port {
key port-id;
leaf port-id {
type portFormat;
description "Unique Id for port";
}
leaf status {
config false;
type enumeration {
enum UNSUPPORTED { value 0; }
enum ENABLED { value 1; }
enum DISABLED { value 2; }
enum FAILED { value 3; }
}
description "Status of port. When status is ENABLED optical path is clear and signal
passes through. When the status is DISABLED optical signal is blocked. When status
is UPSUPPORTED port doesn't have the enable/disable feature on that port. And, when
the port has failed to report its status correctly status is FAILED. ";
}
leaf label {
type namesFormatNullable;
default "";
description "When set, notifications sent by the server will include the label.";
}
leaf peer-port {
type namesFormatNullable;
default "";
description "This leaf describes the remote port on another switch to which this
port is connected physically through the optical fibres. Management interface can
set this parameter to configure the network topology.";
}
}
}
rpc port-set-state {
input {
leaf-list port-enab {
type portFormat;
description "List of port-ids that will be enabled after the RPC finishes successfully.";
}
leaf-list port-disab {
type portFormat;
description "List of port-ids that will be enabled after the RPC finishes successfully.";
}
}
description "This RPC is used to enable or disable an port. When the port is disabled
optical signal is blocked. When the port is enabled optical path is clear and signal passes through.";
}
container opm-power {
config false;
list port {
key port-id;
leaf port-id {
type opsw:portFormat;
description "Id of the Switch port with OPM sensors.";
}
leaf power {
type opsw:floatFormat2d;
description "Optical signal strength that is read at the OPM sensor. Specified in dbm.";
}
description "List of OPM sensors that return the optical signal strength in the fibre.";
}
}
container opm-config {
list port {
key port-id;
leaf port-id {
type opsw:portFormat;
description "Switch port with OPM";
}
leaf wavelength {
type opsw:floatFormat2d {
range 1260.0..1640.0;
}
default 1550.0;
description "Wavelength against which the power measurements are calibrated.
specified in nm.";
}
leaf offset {
type opsw:floatFormat2d {
range -100.0..100.0;
}
default 0;
description "Offset for the power measurement; the value is added to power
monitor measurements when reporting /opsw:ports/opsw:port[]/opsw:opm/opsw:power.
Thus, specifying an offset can be used as a means of referencing the power
monitors against external meters.
It should be noted that the offset feature does NOT impact the behaviour
of the alarm or attenuation features:
alarm and attenuation settings always operate relative to the actual
power monitor readings, i.e. without any user-specified offsets.
Specified in dBm.";
}
leaf averaging-time {
type uint32 {
range "1..8";
}
default 4;
description "Selects the period for which the power average is calculated. Each increment
in this value doubles the length of the time for which the OPM power readings are averaged.
Setting the value to 1 results in the shortest averaging period, around 10ms.
Setting the value to 8 results in the longest averaging period, 128 times greater.";
}
}
}
container opm-alarm-config {
list port {
key port-id;
leaf port-id {
type opsw:portFormat;
description "Switch port with OPM";
}
leaf mode {
type enumeration {
enum POWER_ALARM_DISABLED;
enum POWER_ALARM_ENABLED;
}
default POWER_ALARM_DISABLED;
description "Power alarms or notifications from ports can be individually enabled or disabled.
When enabled, Loss of Signal (LOS) or Signal Degrade notifications are generated when power
levels cross the set thresholds";
}
leaf signal-loss-threshold {
type opsw:floatFormat2d;
default -60.0;
description "The switch will generate loss of service notifications should the power
level go below this threshold. Specified in dBm.";
}
leaf signal-degrade-threshold {
type opsw:floatFormat2d;
default -60.0;
description "The switch can generate warning (signal degrade) notifications should the
power level go below the configured warning threshold. Specified in dBm.";
}
leaf signal-high-threshold {
type opsw:floatFormat2d;
default 25.0;
description "The switch will generate notifications should the power level go beyond this
level. Specified in dBm.";
}
leaf alarm-clear-holdoff {
type uint32;
default 10;
description "Minimum time (in seconds) for which the optical power level needs
to be restored within the power alarm thresholds for the switch to generate
an alarm clear notification.";
}
}
}
container voa {
list port {
key port-id;
leaf port-id {
type opsw:portFormat;
description "Switch port with VOA";
}
leaf atten-mode {
type enumeration {
enum VOA_MODE_NONE { value 0; }
enum VOA_MODE_RELATIVE { value 1; }
enum VOA_MODE_ABSOLUTE { value 2; }
enum VOA_MODE_CONVERGED { value 3; }
enum VOA_MODE_MAXIMUM { value 4; }
enum VOA_MODE_FIXED { value 5; }
}
default VOA_MODE_NONE;
description " VOA_MODE_NONE: Attenuation on the port is disabled. The light on the port will
have the actual power level. VOA_MODE_ABSOLUTE: Port will achieve the configured attentuation
level and power of the light on the port will have the absolute level configured.
VOA_MODE_RELATIVE: Port will achieve the attentuation with respect to the power of the light
of the reference port. The actual attenuation achieved depends on the configured level and
power of the light of the reference port. VOA_MODE_CONVERGED: This is similar in behaviour to
ABSOLUTE mode, but once the attenuation converges to the desired level the switch freezes the
VOA control loop. This reduces noise caused by the control loop continually striving to improve
the attenuation. VOA_MODE_MAXIMUM: Port will achieve the maximum attenuation level. In this
case configured attenuation level is not used. VOA_MODE_FIXED: Disables closed loop updating
of the attenuation feature for the specified port. Following issuance of this command, the port
will continue to hold their current attenuation level without any optical feedback. Thus, any
changes in input power levels will no longer be tracked";
}
leaf atten-level {
when "../atten-mode = 'VOA_MODE_ABSOLUTE' or ../atten-mode = 'VOA_MODE_RELATIVE'" +
"or ../atten-mode = 'VOA_MODE_CONVERGED'";
type opsw:floatFormat2d;
default 0;
description "The attenuated output level configured for this port. Specified in dBm
(or dB for RELATIVE as it is an offset value with respect to reference port).";
}
leaf reference-port {
when "../atten-mode = 'VOA_MODE_RELATIVE'";
type uint32;
default 0;
description "Reference port for attenuation (for use with relative attenuation only). If this port
is specified as zero then the default reference port will be used. The default port is the ingress
to which the egress port being attenuated is connected. For attenuation states other than RELATIVE
this data is ignored. When reading this object, a value of zero is returned for all modes other
than RELATIVE. For relative attenuation, the value returned is the current reference port in use.";
}
}
}
container ports {
status "deprecated";
list port {
key port-id;
leaf port-id {
type portFormat;
description "Unique Id for port";
}
leaf port-label {
type namesFormatNullable;
description "When set, notifications will include the label.";
}
leaf port-state {
type enumeration {
enum PC_ENABLED { value 1; }
enum PC_DISABLED { value 2; }
}
default PC_ENABLED;
description "State of a port shutter. When port is enabled, shutter is open and
when port is disabled, shutter is closed.";
}
leaf port-status {
config false;
type PortStatus;
description "Switch port status. The switch can report FAILED port status when the port fails to
correctly report its state";
}
leaf peer-port {
type namesFormatNullable;
description "This leaf describes the remote port on another switch to which this
port is connected physically through the optical fibres. Management interface can
set this parameter to configure the network topology.";
}
container opm {
description "Optical Power Monitor (OPM) measures the optical signal strength in the fibre.";
leaf lambda {
type floatFormat2d;
default 1550.0;
description "Wavelength against which the power measurements are calibrated.
Specified in nm.";
}
leaf power-high-alarm {
type floatFormat2d;
default 25.0;
description "The switch will generate notifications should the power level go beyond this
level. Specified in dBm.";
}
leaf power-low-alarm {
type floatFormat2d;
default -60.0;
description "The switch will generate notifications should the power level go below this
level. Specified in dBm.";
}
leaf power-high-warning-offset {
type floatFormat2d;
default 0;
description "The switch will generate (warning) notifications should the power go beyond
the set level. This warning offset is subtracted from power-high-alarm to get the warning threshold.
A zero value means that warnings are disabled. Specified in dBm.";
}
leaf power-low-warning-offset {
type floatFormat2d;
default 0;
description "The switch can generate (warning) notifications should the power go below
the set level. This warning offset is added into power-low-alarm to get the warning threshold.
A zero value means that warnings are disabled. Specified in dBm.";
}
leaf power-alarm-control {
type enumeration {
enum POWER_ALARM_DISABLED;
enum POWER_ALARM_SINGLE;
enum POWER_ALARM_CONTINUOUS;
}
default POWER_ALARM_DISABLED;
description "Power alarms or notifications from ports can be individually enabled or disabled.
When power-alarm-control is POWER_ALARM_SINGLE then only one alarm is generated, following
which power-alarm-control reverts to POWER_ALARM_DISABLED.
When power-alarm-control is POWER_ALARM_CONTINUOUS then power alarms are always generated
when power levels exceed the defined power alarm thresholds.";
}
leaf power-alarm-status {
config false;
type enumeration {
enum POWER_ALARM_STATUS_OFF;
enum POWER_ALARM_STATUS_ARMED;
enum POWER_ALARM_STATUS_TRIGGERED;
}
description "POWER_ALARM_STATUS_OFF - Power alarms are not enabled.
POWER_ALARM_STATUS_ARMED - Alarms can be generated.
POWER_ALARM_STATUS_TRIGGERED - Port has an active alarm. When the alarm
clears, power-alarm-status will change to
one of POWER_ALARM_STATUS_OFF or
POWER_ALARM_STATUS_ARMED depending on the
power-alarm-control mode.";
}
leaf power {
config false;
type floatFormat2d;
description "Power readings for this port. Specified in dBm.";
}
container voa {
description "Variable Optical Attenuation (VOA) functionality controls the the optical
power level of light on the port. It allows to set the desired attenuation level
that the port should achieve.";
leaf attenuation-level {
type floatFormat2d;
default 0;
description "The attenuated output level configured for this port. Specified in dBm
(or dB for RELATIVE as it is an offset value with respect to reference port).";
}
leaf attenuation-mode {
type enumeration {
enum VOA_ATTEN_MODE_NONE { value 1; }
enum VOA_ATTEN_MODE_ABSOLUTE { value 2; }
enum VOA_ATTEN_MODE_RELATIVE { value 3; }
enum VOA_ATTEN_MODE_VENDOR { value 128; }
}
default VOA_ATTEN_MODE_NONE;
description " VOA_ATTEN_MODE_NONE: Attenuation on the port is disabled. The light on the
port will have the actual power level. VOA_ATTEN_MODE_ABSOLUTE: Port will achieve the configured
attentuation level and power of the light on the port will have the absolute level configured.
VOA_ATTEN_MODE_RELATIVE: Port will achieve the attentuation with respect to the power of the light
of the reference port. The actual attenuation achieved depends on the configured level and power
of the light of the reference port. VOA_ATTEN_MODE_VENDOR: This is vendor specific mode.";
}
leaf attenuation-reference-port {
type uint32;
default 0;
description "Reference port for attenuation (for use with relative attenuation only). If this port
is specified as zero then the default reference port will be used. The default port is the ingress
to which the egress port being attenuated is connected. For attenuation states other than RELATIVE
this data is ignored. When reading this object, a value of zero is returned for all modes other
than RELATIVE. For relative attenuation, the value returned is the current reference port in use.";
}
}
}
}
}
container cross-connects {
list pair {
key ingress;
leaf ingress {
type portFormat;
description "Input port that makes the connection pair.";
}
leaf egress {
type portFormat;
description "Output port that makes the connection pair.";
}
}
description "List of all cross connections in the system.";
}
grouping network-interface-group {
leaf ip-address {
type inet:ip-address;
description "IP address of the switch control plane.";
}
leaf gateway {
type inet:ip-address;
description "Gateway address for the switch control plane.";
}
leaf subnet {
type inet:ip-address;
description "Subnet to which the switch control plane belongs.";
}
leaf broadcast {
type inet:ip-address;
description "Broadcast IP address for the switch control plane.";
}
}
container system-config {
list interface-status {
config false;
key name;
leaf name {
type string;
description "Unique name of the network interface";
}
uses network-interface-group;
leaf hw-addr {
type yang:mac-address;
}
description "List of Switch network interface and their current running configuration.";
}
list interface {
key name;
unique ip-address;
leaf name {
type string;
description "Unique name of the network interface";
}
uses network-interface-group;
description "List of Switch network interfaces and their user configuration.
On system restart, switch will start to use this configuration as their running
configuration.";
}
list user {
key name;
leaf name {
type namesFormat;
description "The user name string identifying this entry.";
}
leaf type {
type enumeration {
enum RADIUS_USER { value 1; }
enum LOCAL_USER { value 2; }
}
mandatory true;
description "Type of user. When set to RADIUS_USER, the user will be authenticated against the radius-servers.
When set to LOCAL_USER, user will be authenticated locally.";
}
leaf password {
when "../type != 'RADIUS_USER'";
type namesFormatNullable;
description "The password for this entry. May not be set to empty, but will report empty.
If set to 'RADIUS' it will report 'RADIUS', and the user will authenticate against radius-servers.";
}
list authorized-key {
when "../type != 'RADIUS_USER'";
key name;
description "A list of public SSH keys for this user. These keys are allowed for SSH
authentication, as described in RFC 4253.";
reference "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol";
leaf name {
type string;
description "An arbitrary name for the SSH key.";
}
leaf algorithm {
type string;
mandatory true;
description "The public key algorithm name for this SSH key. Valid values are the
values in the IANA 'Secure Shell (SSH) Protocol Parameters' registry, Public Key
Algorithm Names.";
reference "IANA 'Secure Shell (SSH) Protocol Parameters' registry, Public Key
Algorithm Names";
}
leaf key-data {
type binary;
mandatory true;
description "The binary public key data for this SSH key, as specified by RFC 4253,
Section 6.6, i.e.: string certificate or public key format identifier byte[n]
key/certificate data.";
reference "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol";
}
}
description "The list of local users configured on this device. This model is adopted from
System Management yang model. (https://tools.ietf.org/html/rfc7317)";
}
container activity-log
{
leaf log-filter {
type bits {
bit SYSTEM {position 0;}
bit USER {position 1;}
bit OXC {position 2;}
bit OPM {position 3;}
}
}
leaf log-access {
type enumeration {
enum NONE { value 0; }
enum SELF { value 1; }
enum ALL { value 2; }
}
default NONE;
}
leaf logging-enabled {
type boolean;
default false;
}
}
container radius-servers
{
list radius-server {
key "ip-address port";
leaf ip-address {
type inet:ip-address;
description "Ip address of the radius server.";
}
leaf port {
type uint32;
description "Port of the radius server.";
}
leaf secret {
type secretFormat;
mandatory true;
description "The secret used to authenticate with the radius server.";
}
leaf timeout {
type uint32 {
range "1..30";
}
default 3;
description "Length of time in seconds before timing out on connection to server.";
}
}
description "The list of radius servers for the nic, the order of the list determines the priority of usage.";
}
container ntp-servers
{
list ntp-server {
key ip-address;
leaf ip-address {
type inet:ip-address;
description "The ip address of a ntp server to use";
}
leaf minpoll {
type uint32 {
range "4..6";
}
default 6;
description "The minimum polling in seconds";
}
leaf maxpoll {
type uint32 {
range "10..17";
}
default 10;
description "The maximum polling in seconds";
}
leaf version {
type uint32 {
range "1..4";
}
default 4;
description "The version that the ntp server runs.";
}
}
description "The list of ntp servers in order of usage to get the ntp time";
}
container remote-syslog
{
leaf rname {
type inet:ipv4-address;
description "IPv4 address of remote collector. Use 0.0.0.0 to disable sending. This field will change to inet:host type.";
}
leaf rport {
type inet:port-number;
description "UDP port receiving syslog on 'rname'. Set to zero to use the default (514).";
}
leaf facility {
type enumeration {
enum USER { value 8; }
enum LOCAL0 { value 128; }
enum LOCAL1 { value 136; }
enum LOCAL2 { value 144; }
enum LOCAL3 { value 152; }
enum LOCAL4 { value 160; }
enum LOCAL5 { value 168; }
enum LOCAL6 { value 176; }
enum LOCAL7 { value 184; }
}
default USER;
description "The facility to send messages under. See RFC 3164. All values are 8 times the value listed in the RFC, to pack the severity value in the low bits.";
}
must "(boolean(rname) = true() and string(rname) != '0.0.0.0') or (boolean(rport) = false() or rport = 0)" { error-message "Cannot have port without name"; }
description "The destination for syslog messages. ";
}
container protocols
{
list protocol {
key protocol-id;
leaf protocol-id {
type uint32;
}
leaf protocol-name {
config false;
type string;
}
leaf protocol-type {
config false;
type string;
}
leaf protocol-port {
config false;
type uint32;
}
leaf enabled {
type boolean;
default true;
}
}
}
leaf current-datetime {
config false;
type yang:date-and-time;
description "The current system date and time.";
}
leaf boot-datetime {
config false;
type yang:date-and-time;
description "The system date and time when the system last restarted.";
}
leaf alarm-clear-hysteresis {
type decimal64 {
fraction-digits 2;
range "1..5";
}
default 1;
description "Added to 'power-low-alarm' and subtracted from 'power-high-alarm'
to generate alarm clear notifications. Specified in dBm.";
}
}
// APS config and status
container aps
{
description "Automatic Protection Switching (APS) feature provides optical redundancy on the Polatis switch.
When the switch detects signal failure on the primary optical path, it automatically switches to an alternative
optical path. The switch also provides manual operation through which the optical paths can be changed.
APS feature consists of list of protection service, where each service is list of working and protection ports. ";
list protection-service
{
description "This the list of APS protection services on the system";
key sname;
leaf sname {
type namesFormat;
description "Protection Service name. Should be unique on the switch.";
}
leaf active
{
config false;
type boolean;
description "Whether the Protection Service is Active, or in Config mode.";
}
list working-port
{
key port-id;
description "This the list of APS port configurations on the system. This defines the APS service, and
generates port-status and protection-services to represent them";
leaf port-id
{
type portFormat;
}
leaf client
{
type uint32;
mandatory true;
description "Client port to which the working will connect when the service is activated.";
}
leaf priority
{
type uint32;
default 0;
description "A number to be used when deciding the priority of protection switched when there is contention.";
}
leaf wtr-timeout
{
type uint32;
default 0;
description "Wait To Restore timeout value. The amount, in seconds, before a restore is possible on this port.";
}
leaf ovs
{
type boolean;
default false;
description "Override Valid Signal. Allows us to override the need for a valid signal in manual/automatic switch.";
}
leaf protected-port
{
config false;
type uint32;
description "If a worker port, and is currently being protected, it is the port id of the protecting port.
If not being protected, it is 0. Vice versa if it is a protecting port.";
}
leaf operational-state
{
config false;
type apsOperationalState;
description "The current operational state of the port, being working, protected, protection failed. This does not apply for PROTECTED ports.";
}
leaf user_command
{
config false;
type apsFlags;
}
}
leaf-list protection-port
{
type uint32;
description "";
}
}
}
rpc set-current-datetime {
description "Set the /product-information/clock/current-datetime leaf to the specified value.
Also changes /product-information/clock/boot-datetime, relative to current-datetime";
input {
leaf current-datetime {
type yang:date-and-time;
mandatory true;
description "The current system date and time.";
}
}
}
rpc system-restart {
description "Request to restart the Network Interface Card (NIC).";
input {
leaf seconds {
type uint32;
default 0;
description "Restart the system in the specified time. Given in seconds.
Value of 0 will restart the system immediately, and in that case there
won't be any response";
}
}
}
rpc system-restart-cancel {
description "Request to cancel the restart. This has no effect when
system-restart was not requested. Cancel is done immediately";
}
// APS rpcs and notification
rpc aps-command {
description "This is a command to apply flags to a number of ports at the same time.
You can provide either the sname of the service, to do all ports for that service, or
specify ports, which do not have to be on the same protection service.
The command is applied via combination of a bitwise mask and bitwise command values, to set/unset
different attributes at the same time. Some combinations are mutually exclusive:
GLP/FTP/FTW/MTP/MTW are exclusive to each other.
Some commands are per port, and some per service (GLP). This is why the choice of a service name, or ports are provided.";
input {
leaf mask {
type apsFlags;
mandatory true;
}
leaf flags {
type apsFlags;
mandatory true;
}
choice parameter
{
mandatory true;
leaf sname
{
type namesFormat;
}
list port
{
key port-id;
leaf port-id { type portFormat; }
leaf target-port-id
{
type uint32;
default 0;
description "This is an optional parameter, used when a target is also needed, ie: FTP/MTP on
M:N protection, where you wish to switch to a specific protection port. It is ignored on other cases.";
}
description "The port-id is in effect mandatory to specify a source port.";
}
}
}
}
rpc aps-activate {
description "Used to activate or deactive a protection service.";
input {
leaf sname {
type namesFormat;
}
leaf active {
type boolean;
mandatory true;
}
}
}
rpc radius-server-set-position {
description "Used to change the order of radius-servers.";
input {
leaf ip-address {
type inet:ip-address;
mandatory true;
description "Ip address of the radius server.";
}
leaf port {
type portFormat;
mandatory true;
description "Port of the radius server.";
}
leaf position {
type int32;
mandatory true;
description "Position, either explicit, from 0, or -1 to move to end";
}
}
}
notification aps-notification {
description "This is the notification which is sent whenever an operational state changes.";
leaf notification-type {
type apsOperationalState;
}
leaf notification-details { type string; }
}
container subswitches {
list subswitch {
key "sname";
leaf sname {
type string;
description "The sub-switch name";
}
leaf-list username {
type string;
description "The user associated with the sub-switch";
}
leaf-list port-id {
type uint32;
description "The port number of the sub-switch";
}
}
}
}