huawei-bras-cgn

Bras cgn.

  • Version: 2019-04-01

    huawei-bras-cgn@2019-04-01


    
      module huawei-bras-cgn {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-bras-cgn";
    
        prefix bras-cgn;
    
        import huawei-aaa {
          prefix aaa;
        }
        import huawei-bras-basic-access {
          prefix bras-basic-access;
        }
        import huawei-bras-vas {
          prefix bras-vas;
        }
        import huawei-bras-ipv4-address-manage {
          prefix bras-ipv4-address-manage;
        }
        import huawei-extension {
          prefix ext;
        }
    
        organization
          "Huawei Technologies Co., Ltd.";
    
        contact
          "Huawei Industrial Base
         Bantian, Longgang
         Shenzhen 518129
         People's Republic of China
         Website: http://www.huawei.com
         Email: support@huawei.com";
    
        description "Bras cgn.";
    
        revision "2019-04-01" {
          description "Init revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "aaa-access";
    
        container bras-cgn {
          description "Bras cgn.";
          container pub-user-auto-cut {
            description
              "Configure automatic switchback from public IP address-based access to private IP address-based access for CGN public network users.";
            leaf enable {
              type boolean;
              default "false";
              description
                "Enable/disable automatic switchback from public IP address-based access to private IP address-based access for CGN public network users.";
            }
          }  // container pub-user-auto-cut
    
          container access-radius-nat-update-speed {
            description
              "Configure the speed for instructing the RADIUS server to update NAT.";
            leaf speed-value {
              type uint32 {
                range "1..65535";
              }
              default "210";
              description "Speed value.";
            }
          }  // container access-radius-nat-update-speed
        }  // container bras-cgn
    
        augment /aaa:aaa/aaa:domains/aaa:domain/bras-basic-access:bas {
          description "Bras cgn in bas domain.";
          container bras-cgn {
            description
              "Configure Bras cgn in bas domain.";
            container public-address {
              must
                "not(./assign-first='true' and ./nat-instance-down='true')";
              description
                "Configure in distributed CGN scenarios.";
              leaf nat-enable {
                type boolean;
                default "true";
                description
                  "Enable/disable the NAT device to process traffic from public network IPv4 address users in distributed CGN scenarios before forwarding it based on the routing table.";
              }
    
              leaf assign-first {
                type boolean;
                default "false";
                description
                  "Enable/disable public network IPv4 addresses to be preferentially allocated to users.";
              }
    
              leaf nat-instance-down {
                type boolean;
                default "false";
                description
                  "Enable/disable CGN users to access a device using a public IP address if the CGN service board fails.";
              }
            }  // container public-address
    
            container ipv6-pool-domain {
              description
                "Configure IPv6 attribute configuration of an AAA domain.";
              leaf aftr-name {
                type string {
                  length "1..63";
                  pattern "[a-zA-Z0-9._-]{1,63}";
                }
                must
                  "../aftr-name != '-' and ../aftr-name != '--'";
                description
                  "Specifies an AFTR (Address Family Transition Router) name.";
              }
            }  // container ipv6-pool-domain
    
            container ds-lite-ipv4-portal {
              description
                "Configure captive portal in DS-Lite scenarios.";
              leaf enable {
                type boolean;
                default "false";
                description
                  "Enable/disable captive portal in DS-Lite scenarios.";
              }
            }  // container ds-lite-ipv4-portal
    
            container user-group-bind-nats {
              description
                "List of NAT instance with a user group in a domain.";
              list user-group-bind-nat {
                must
                  "not(../../user-group-bind-ds-lites/user-group-bind-ds-lite)";
                key "user-group-name";
                max-elements 8;
                description
                  "Configure a NAT instance instance with a user group in a domain.";
                leaf user-group-name {
                  type leafref {
                    path
                      "/bras-basic-access:bras-basic-access/bras-basic-access:user-groups/bras-basic-access:user-group/bras-basic-access:name";
                  }
                  must
                    "count(/aaa:aaa/aaa:domains/aaa:domain/bras-basic-access:bas/bras-basic-access:ipv4-basic-access/bras-basic-access:user-group[bras-basic-access:name=current()])=0";
                  must
                    "count(/aaa:aaa/aaa:domains/aaa:domain/bras-basic-access:bas/bras-cgn:bras-cgn/bras-cgn:user-group-bind-ds-lites/bras-cgn:user-group-bind-ds-lite[bras-cgn:user-group-name=current()])=0";
                  must
                    "count(/bras-basic-access:bras-basic-access/bras-basic-access:user-group-lists/bras-basic-access:user-group-list/bras-basic-access:user-groups/bras-basic-access:user-group[bras-basic-access:name=current()])=0";
                  description
                    "Specifies the name of a user group, and the user group must not be added to a user group list or a domain without binding nat instance.";
                }
    
                leaf instance-name {
                  type string {
                    length "1..31";
                  }
                  mandatory true;
                  description
                    "Specifies the name of a NAT instance.";
                }
    
                leaf ip-pool-name {
                  type leafref {
                    path "/bras-ipv4-address-manage:bras-ipv4-address-manage/bras-ipv4-address-manage:ipv4-pools/bras-ipv4-address-manage:ipv4-pool/bras-ipv4-address-manage:name";
                  }
                  must
                    "(/bras-ipv4-address-manage:bras-ipv4-address-manage/bras-ipv4-address-manage:ipv4-pools/bras-ipv4-address-manage:ipv4-pool[bras-ipv4-address-manage:name=current()]/bras-ipv4-address-manage:type = 'dynamic' or
                (/bras-ipv4-address-manage:bras-ipv4-address-manage/bras-ipv4-address-manage:ipv4-pools/bras-ipv4-address-manage:ipv4-pool[bras-ipv4-address-manage:name=current()]/bras-ipv4-address-manage:local/bras-ipv4-address-manage:gateway/bras-ipv4-address-manage:gate-ip or
                /bras-ipv4-address-manage:bras-ipv4-address-manage/bras-ipv4-address-manage:ipv4-pools/bras-ipv4-address-manage:ipv4-pool[bras-ipv4-address-manage:name=current()]/bras-ipv4-address-manage:remote/bras-ipv4-address-manage:gateway/bras-ipv4-address-manage:gate-ip))";
                  description
                    "Specifies the name of an IP address pool.";
                }
              }  // list user-group-bind-nat
            }  // container user-group-bind-nats
    
            container user-group-bind-ds-lites {
              description
                "List of DS-Lite instance with a user group in a domain.";
              list user-group-bind-ds-lite {
                must
                  "not(../../user-group-bind-nats/user-group-bind-nat)";
                must
                  "not(../../../bras-basic-access:ipv4-basic-access/bras-basic-access:user-group/bras-basic-access:name)";
                key "user-group-name";
                max-elements 8;
                description
                  "Configure a DS-Lite instance with a user group in a domain.";
                leaf user-group-name {
                  type leafref {
                    path
                      "/bras-basic-access:bras-basic-access/bras-basic-access:user-groups/bras-basic-access:user-group/bras-basic-access:name";
                  }
                  must
                    "count(/aaa:aaa/aaa:domains/aaa:domain/bras-basic-access:bas/bras-basic-access:ipv4-basic-access/bras-basic-access:user-group[bras-basic-access:name=current()])=0";
                  must
                    "count(/aaa:aaa/aaa:domains/aaa:domain/bras-basic-access:bas/bras-cgn:bras-cgn/bras-cgn:user-group-bind-nats/bras-cgn:user-group-bind-nat[bras-cgn:user-group-name=current()])=0";
                  must
                    "count(/bras-vas:bras-vas/bras-vas:vas-policys/bras-vas:vas-policy/bras-vas:user-group-bind-nats/bras-vas:user-group-bind-nat[bras-vas:user-group-name=current()])=0";
                  must
                    "count(/bras-basic-access:bras-basic-access/bras-basic-access:user-group-lists/bras-basic-access:user-group-list/bras-basic-access:user-groups/bras-basic-access:user-group[bras-basic-access:name=current()])=0";
                  description
                    "Specifies the name of a user group, and the user group must not be added to a user group list or a domain without binding ds-lite instance.";
                }
    
                leaf instance-name {
                  type string {
                    length "1..31";
                  }
                  mandatory true;
                  description
                    "Specifies the name of a DS-Lite instance.";
                }
              }  // list user-group-bind-ds-lite
            }  // container user-group-bind-ds-lites
          }  // container bras-cgn
        }
      }  // module huawei-bras-cgn
    

© 2023 YumaWorks, Inc. All rights reserved.