Cisco-IOS-XE-wireless-mobility-cfg

Model for managing mobility configurations Copyright (c) 2016-2019, 2021 by Cisco Systems, Inc. All rights reserved.

  • Version: 2021-03-01

    Cisco-IOS-XE-wireless-mobility-cfg@2021-03-01


    
      module Cisco-IOS-XE-wireless-mobility-cfg {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XE-wireless-mobility-cfg";
    
        prefix wireless-mobility-cfg;
    
        import ietf-inet-types {
          prefix inet;
        }
        import ietf-yang-types {
          prefix yang;
        }
        import cisco-semver {
          prefix cisco-semver;
        }
    
        organization "Cisco Systems, Inc.";
    
        contact
          "Cisco Systems, Inc.
         Customer Service
    
         Postal: 170 W Tasman Drive
         San Jose, CA 95134
    
         Tel: +1 1800 553-NETS
    
         E-mail: cs-yang@cisco.com";
    
        description
          "Model for managing mobility configurations
         Copyright (c) 2016-2019, 2021 by Cisco Systems, Inc.
         All rights reserved.";
    
        revision "2021-03-01" {
          description
            "Configuration support for mobility DTLS high cipher";
          reference
            "6.1.0";
    
        }
    
        revision "2019-11-01" {
          description
            "- Added checks for peer IP and NAT IP addresses.
           - Added constraint for remote group multicast addresses.";
          reference
            "6.0.0";
    
        }
    
        revision "2019-05-01" {
          description "Added semantic version";
          reference
            "5.1.0";
    
        }
    
        revision "2018-12-15" {
          description
            " - Cleaned up spelling errors in descriptions.
            - Added boolean config parameters to indicate multicast support.";
          reference
            "5.0.0";
    
        }
    
        revision "2018-09-06" {
          description
            "- Renamed mobility and hidden configurations
           - removed Mobility mode config
           - Added units for mm-hb-delay";
          reference
            "4.0.0";
    
        }
    
        revision "2018-03-01" {
          description
            "Add mobility peer configuration";
          reference
            "3.0.0";
    
        }
    
        revision "2018-01-24" {
          description
            "The first generally available version";
          reference
            "2.0.0";
    
        }
    
        revision "2017-05-05" {
          description "Initial revision";
          reference
            "1.0.0";
    
        }
    
        cisco-semver:module-version "6.1.0";
        cisco-semver:module-version "6.0.0";
        cisco-semver:module-version "5.1.0";
        cisco-semver:module-version "5.0.0";
        cisco-semver:module-version "4.0.0";
        cisco-semver:module-version "3.0.0";
        cisco-semver:module-version "2.0.0";
        cisco-semver:module-version "1.0.0";
    
        container mobility-cfg-data {
          description
            "Yang model for wireless mobility config";
          container mobility-config {
            description
              "Mobility configuration database";
            leaf local-group {
              type string {
                length "1..32";
              }
              default "default";
              description
                "Local Mobility group name";
            }
    
            leaf local-mcast-addr-enabled {
              type boolean;
              default "false";
              description
                "Enable IPv4 multicast support for local mobility group";
            }
    
            leaf local-multicast-address {
              type inet:ipv4-address;
              must
                "(../local-mcast-addr-enabled != 'true') or
    starts-with(../local-multicast-address, '224.') or starts-with(../local-multicast-address, '225.') or
    starts-with(../local-multicast-address, '226.') or starts-with(../local-multicast-address, '227.') or
    starts-with(../local-multicast-address, '228.') or starts-with(../local-multicast-address, '229.') or
    starts-with(../local-multicast-address, '230.') or starts-with(../local-multicast-address, '231.') or
    starts-with(../local-multicast-address, '232.') or starts-with(../local-multicast-address, '233.') or
    starts-with(../local-multicast-address, '234.') or starts-with(../local-multicast-address, '235.') or
    starts-with(../local-multicast-address, '236.') or starts-with(../local-multicast-address, '237.') or
    starts-with(../local-multicast-address, '238.') or starts-with(../local-multicast-address, '239.')" {
                error-message
                  "Invalid IPv4 multicast address";
                error-app-tag "must-violation";
              }
              default "0.0.0.0";
              description
                "Local mobility Multicast IPv4 address";
            }
    
            leaf local-ipv6-mcast-addr-enabled {
              type boolean;
              default "false";
              description
                "Enable IPv6 multicast support for local mobility group";
            }
    
            leaf local-ipv6-multicast-address {
              type inet:ipv6-address;
              must
                "(../local-ipv6-mcast-addr-enabled != 'true') or contains(substring(../local-ipv6-multicast-address, 1, 4), 'ff00')" {
                error-message
                  "Invalid IPv6 multicast address";
                error-app-tag "must-violation";
              }
              default "0::0";
              description
                "Local mobility Multicast IPv6 address";
            }
    
            leaf mobility-keepalive-interval {
              type uint16 {
                range "1 .. 30";
              }
              units "seconds";
              default "10";
              description
                "Mobility Keep Alive interval";
            }
    
            leaf mobility-keepalive-count {
              type uint16 {
                range "3 .. 20";
              }
              default "3";
              description
                "Mobility Keep Alive count";
            }
    
            leaf mobility-dscp {
              type uint8 {
                range "0 .. 63";
              }
              default "48";
              description "mobility dcsp value";
            }
    
            leaf mac-address {
              type yang:mac-address;
              default "00:00:00:00:00:00";
              description
                "Mobility local Mac Address";
            }
    
            container mobility-peers {
              description
                "Mobility Peers configuration";
              list mobility-peer {
                key "mac-addr";
                unique "ip-address";
                max-elements 72;
                description
                  "List of Mobility Peers";
                leaf mac-addr {
                  type yang:mac-address;
                  description
                    "Mobility peer MAC address";
                }
    
                leaf ip-address {
                  type inet:ip-address;
                  must
                    "(../nat-ip = current()) or
    (count(../../../mobility-peers/mobility-peer[nat-ip = current()]) < 1)" {
                    error-message
                      "A peer cannot have the private IP that is configured as the public IP of another peer";
                    error-app-tag
                      "must-violation";
                  }
                  description "Peer IP Address";
                }
    
                leaf group-name {
                  type string {
                    length "1..32";
                  }
                  mandatory true;
                  description "Peer group name";
                }
    
                leaf nat-ip {
                  type inet:ip-address;
                  must
                    "(count(../../../mobility-peers/mobility-peer[nat-ip = current()]) = 1) or
    (current() = '0.0.0.0')" {
                    error-message
                      "Different mobility peers cannot have the same public IP address (with the exception of 0.0.0.0)";
                    error-app-tag
                      "must-violation";
                  }
                  must
                    "(../ip-address = current()) or
    (count(../../../mobility-peers/mobility-peer[ip-address = current()]) < 1)" {
                    error-message
                      "A peer cannot have the public IP that is configured as the private IP of another peer";
                    error-app-tag
                      "must-violation";
                  }
                  must
                    "(contains(../ip-address, ':') and contains(current(), ':')) or
    (not(contains(../ip-address, ':') or contains(current(), ':')))" {
                    error-message
                      "Peer's public and private addresses have to be of the same type";
                    error-app-tag
                      "must-violation";
                  }
                  default "0.0.0.0";
                  description "Peer Public IP";
                }
    
                leaf data-link-encryption {
                  type boolean;
                  default "false";
                  description
                    "Peer data link encryption status";
                }
    
                leaf ssc-hash {
                  type string;
                  default "";
                  description "Peer SSC HASH";
                }
              }  // list mobility-peer
            }  // container mobility-peers
    
            leaf mm-dtls-high-cipher {
              type boolean;
              default "false";
              description
                "Enable/Disable DTLS high cipher for mobility";
            }
          }  // container mobility-config
    
          container mobility-groups {
            description
              "Mobility Groups configuration";
            list mobility-group {
              key "group-name";
              description
                "List of Mobility Groups";
              leaf group-name {
                type string {
                  length "1..32";
                }
                must
                  "../group-name != ../../../mobility-config/local-group" {
                  error-message
                    "Group name is conflicting with local group name";
                  error-app-tag "must-violation";
                }
                must
                  "(../mcast-addr-enabled != 'false') or (../mcast-addrv6-enabled != 'false')" {
                  error-message
                    "Multicast address must be specified for remote mobility group";
                  error-app-tag "must-violation";
                }
                description
                  "Group name for remote mobility group";
              }
    
              leaf mcast-addr-enabled {
                type boolean;
                default "false";
                description
                  "Enable IPv4 multicast support for mobility group";
              }
    
              leaf multicast-address {
                type inet:ipv4-address;
                must
                  "(../mcast-addr-enabled = 'false') or (../multicast-address != ../../../mobility-config/local-multicast-address)" {
                  error-message
                    "Non-local mobility group IPv4 multicast address conflicts with local group multicast address";
                  error-app-tag "must-violation";
                }
                must
                  "(../mcast-addr-enabled = 'false') or
    starts-with(../multicast-address, '224.') or starts-with(../multicast-address, '225.') or
    starts-with(../multicast-address, '226.') or starts-with(../multicast-address, '227.') or
    starts-with(../multicast-address, '228.') or starts-with(../multicast-address, '229.') or
    starts-with(../multicast-address, '230.') or starts-with(../multicast-address, '231.') or
    starts-with(../multicast-address, '232.') or starts-with(../multicast-address, '233.') or
    starts-with(../multicast-address, '234.') or starts-with(../multicast-address, '235.') or
    starts-with(../multicast-address, '236.') or starts-with(../multicast-address, '237.') or
    starts-with(../multicast-address, '238.') or starts-with(../multicast-address, '239.')" {
                  error-message
                    "Invalid IPv4 multicast address";
                  error-app-tag "must-violation";
                }
                must
                  "(../mcast-addr-enabled = 'false') or
    (count(../../../mobility-groups/mobility-group/multicast-address[current()=.]) = 1)" {
                  error-message
                    "Non-local mobility group IPv4 multicast address conflicts with another group's multicast address";
                  error-app-tag "must-violation";
                }
                default "0.0.0.0";
                description
                  "Mobility multicast ipv4 address for remote group";
              }
    
              leaf mcast-addrv6-enabled {
                type boolean;
                default "false";
                description
                  "Enable IPv6 multicast support for mobility group";
              }
    
              leaf multicast-addressv6 {
                type inet:ipv6-address;
                must
                  "(../mcast-addrv6-enabled = 'false') or (../multicast-addressv6 != ../../../mobility-config/local-ipv6-multicast-address)" {
                  error-message
                    "Non-local mobility group IPv6 multicast address conflicts with local group multicast address";
                  error-app-tag "must-violation";
                }
                must
                  "(../mcast-addrv6-enabled = 'false') or (contains(substring(../multicast-addressv6, 1, 4), 'ff00'))" {
                  error-message
                    "Invalid IPv6 multicast address";
                  error-app-tag "must-violation";
                }
                must
                  "(../mcast-addrv6-enabled = 'false') or
    (count(../../../mobility-groups/mobility-group/multicast-addressv6[current()=.]) = 1)" {
                  error-message
                    "Non-local mobility group IPv6 multicast address conflicts with another group's multicast address";
                  error-app-tag "must-violation";
                }
                default "0:0:0:0:0:0:0:0";
                description
                  "Mobility multicast ipv6 address for remote group";
              }
            }  // list mobility-group
          }  // container mobility-groups
        }  // container mobility-cfg-data
      }  // module Cisco-IOS-XE-wireless-mobility-cfg
    

© 2023 YumaWorks, Inc. All rights reserved.