huawei-bras-dhcp-server

Configure the DHCP server.

  • Version: 2020-02-22

    huawei-bras-dhcp-server@2020-02-22


    
      module huawei-bras-dhcp-server {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-bras-dhcp-server";
    
        prefix bras-dhcp-server;
    
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-l3vpn {
          prefix l3vpn;
        }
        import ietf-yang-types {
          prefix yang;
        }
    
        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 "Configure the DHCP server.";
    
        revision "2020-02-22" {
          description
            "Description modification.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-10-17" {
          description "Second revision.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-04-01" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "ippool";
    
        typedef dhcp-server-algorithm-type {
          type enumeration {
            enum "master-backup" {
              value 1;
              description
                "The master-backup algorithm.";
            }
            enum "loading-share" {
              value 2;
              description
                "The load sharing algorithm.";
            }
            enum "polling" {
              value 3;
              description
                "The polling algorithm.";
            }
          }
          description
            "DHCP server algorithm type.";
        }
    
        grouping server-property {
          description
            "Configure dhcp-server property.";
          leaf dead-count {
            type uint8 {
              range "1..64";
            }
            description
              "Specify the maximum number of times at which the DHCP server does not send response packets.";
          }
    
          leaf timeout {
            type uint8 {
              range "1..60";
            }
            units "s";
            default "25";
            description
              "Specify the timeout period for waiting for response packets from a DHCP server.";
          }
    
          leaf dead-time {
            type uint16 {
              range "1..65535";
            }
            units "min";
            default "3";
            description
              "Specify the recovery time of a DHCP server.";
          }
    
          leaf nak-count {
            type uint8 {
              range "0..255";
            }
            default "10";
            description
              "Specify the maximum number of NAK packets a DHCP server can receive consecutively.";
          }
        }  // grouping server-property
    
        container bras-dhcp-server {
          description
            "Configure the DHCP server.";
          container dhcp-servers {
            description
              "List of DHCP servers. A DHCP server must be bound to at least one dhcp-server group at the same time.";
            list dhcp-server {
              key "ip-address vpn-instance";
              description
                "Configure a DHCP server and must bind it to at least one dhcp-server group at the same time.";
              leaf ip-address {
                type inet:ipv4-address-no-zone;
                description
                  "The IP address of the DHCP server.";
              }
    
              leaf vpn-instance {
                type leafref {
                  path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                }
                must
                  "/ni:network-instance/ni:instances/ni:instance[ni:name=current()]/l3vpn:afs/l3vpn:af[l3vpn:type='ipv4-unicast']";
                description
                  "Define the vpn-instance of a DHCP server. If dhcp-server belongs to the public network, vpn-instance can be defined as '_public_'.";
              }
    
              uses server-property;
    
              container statistics {
                config false;
                description
                  "Display DHCPv4 server statistics.";
                leaf send-packets {
                  type uint32;
                  description
                    "Number of sent packets.";
                }
    
                leaf receive-packets {
                  type uint32;
                  description
                    "Number of received packets.";
                }
    
                leaf error-packets {
                  type uint32;
                  description
                    "Number of error packets.";
                }
    
                leaf limit-number {
                  type uint32;
                  description
                    "Number of packets discarded due to rate limiting.";
                }
    
                leaf timeout-packets {
                  type uint32;
                  description
                    "Number of times that a DHCP server fails to respond to a DHCP request before the timer expires.";
                }
    
                leaf latest-send-time {
                  type yang:date-and-time;
                  description
                    "Last time when a packet was sent.";
                }
    
                leaf lastest-receive-time {
                  type yang:date-and-time;
                  description
                    "Last time when a packet was received.";
                }
    
                leaf discover-packets {
                  type uint32;
                  description
                    "Number of discover messages.";
                }
    
                leaf request-packets {
                  type uint32;
                  description
                    "Number of request messages.";
                }
    
                leaf decline-packets {
                  type uint32;
                  description
                    "Number of decline messages.";
                }
    
                leaf release-packets {
                  type uint32;
                  description
                    "Number of release messages.";
                }
    
                leaf inform-packets {
                  type uint32;
                  description
                    "Number of inform messages.";
                }
    
                leaf offer-packets {
                  type uint32;
                  description
                    "Number of offer messages.";
                }
    
                leaf ack-packets {
                  type uint32;
                  description
                    "Number of ACK messages.";
                }
    
                leaf nak-packets {
                  type uint32;
                  description
                    "Number of NAK messages.";
                }
    
                leaf bootp-requset-packets {
                  type uint32;
                  description
                    "Number of BOOTP request packets.";
                }
    
                leaf bootp-ack-packets {
                  type uint32;
                  description
                    "Number of BOOTP reply packets.";
                }
    
                leaf force-renew-packets {
                  type uint32;
                  description
                    "Number of force renew packets.";
                }
              }  // container statistics
    
              container state {
                config false;
                description
                  "Display DHCPv4 server state.";
                leaf status {
                  type enumeration {
                    enum "down" {
                      value 0;
                      description
                        "The down state of DHCPv4 bind server.";
                    }
                    enum "up" {
                      value 1;
                      description
                        "The up state of DHCPv4 bind server.";
                    }
                  }
                  description
                    "DHCPv4 server state.";
                }
              }  // container state
            }  // list dhcp-server
          }  // container dhcp-servers
    
          container dhcp-server-groups {
            description
              "List of DHCPv4 server groups.";
            list dhcp-server-group {
              key "name";
              max-elements 4096;
              description
                "Configure the DHCPv4 server group.";
              leaf name {
                ext:case-sensitivity "lower-only";
                type string {
                  length "1..32";
                  pattern '[a-z0-9._-]{1,32}';
                }
                must
                  "../name != '-' and ../name != '--'";
                description
                  "Specify the name of the DHCPv4 server group.";
              }
    
              leaf remote-backup-service-name {
                type string {
                  length "1..32";
                }
                description
                  "Specify the backup service associated with the DHCPv4 server group.";
              }
    
              container bind-servers {
                description
                  "List of IP addresses of a DHCPv4 server and the weight of a specified DHCPv4 server when it performs load balancing.";
                list bind-server {
                  key "ip-address vpn-instance";
                  max-elements 8;
                  description
                    "Configure the IP address of a DHCPv4 server and the weight of a specified DHCPv4 server when it performs load balancing.";
                  leaf ip-address {
                    type leafref {
                      path "/bras-dhcp-server:bras-dhcp-server/bras-dhcp-server:dhcp-servers/bras-dhcp-server:dhcp-server/bras-dhcp-server:ip-address";
                    }
                    description
                      "Specify the IP address of the DHCPv4 server in the dotted decimal format.";
                  }
    
                  leaf vpn-instance {
                    type leafref {
                      path "/bras-dhcp-server:bras-dhcp-server/bras-dhcp-server:dhcp-servers/bras-dhcp-server:dhcp-server/bras-dhcp-server:vpn-instance";
                    }
                    description
                      "Specify the VPN instance name. If the dhcp-server belongs to the public netwaork, vpn-instance can be defined as '_public_'.";
                  }
    
                  leaf weight {
                    type uint32 {
                      range "0..100";
                    }
                    default "5";
                    description
                      "Specify the weight of a DHCPv4 server.";
                  }
                }  // list bind-server
              }  // container bind-servers
    
              container giaddr {
                must
                  "not(./vpn-instance) or ./ip-address";
                description
                  "Configure the giaddr address of packets sent by a DHCPv4 server group.";
                choice giaddr {
                  description
                    "Configure the giaddr address of packets sent by a DHCPv4 server group.";
                  case if-name {
                    description
                      "Specify the interface whose IP address that is used as the GiAddr address.";
                    leaf if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      description
                        "Specify the interface whose IP address that is used as the GiAddr address of packets sent by the DHCPv4 server group.";
                    }
                  }  // case if-name
    
                  case ip-address {
                    description
                      "Specify the IP address that is used as the GiAddr address.";
                    leaf ip-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Specify the IP address that is used as the GiAddr address of packets sent by the DHCPv4 server group. The address is in dotted decimal notation.";
                    }
    
                    leaf vpn-instance {
                      type leafref {
                        path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                      }
                      must
                        "../vpn-instance!='_public_'";
                      must
                        "/ni:network-instance/ni:instances/ni:instance[ni:name=current()]/l3vpn:afs/l3vpn:af[l3vpn:type='ipv4-unicast']";
                      description
                        "Specify the VPN instance name.";
                    }
                  }  // case ip-address
                }  // choice giaddr
    
                leaf forward-rui-slave {
                  when
                    "../if-name or ../ip-address";
                  type boolean;
                  default "false";
                  description
                    "Enable/disable the slave device forwarding of RUI.";
                }
              }  // container giaddr
    
              container server-algorithm {
                description
                  "Configure an algorithm of DHCPv4 servers.";
                leaf type {
                  type dhcp-server-algorithm-type;
                  default "master-backup";
                  description
                    "Specify the type of algorithm.";
                }
    
                leaf loose-check {
                  when "../type = 'polling'";
                  type boolean;
                  default "false";
                  description
                    "Enable/disable DHCPv4 server algorithm as check-loose when algorithmType is polling.";
                }
              }  // container server-algorithm
    
              container server-forward {
                when
                  "../server-algorithm/type = 'polling'";
                description
                  "Configure the device to forward DHCP rebind messages to all DHCPv4 servers in a DHCPv4 server group.";
                leaf rebind-forward {
                  type boolean;
                  default "false";
                  description
                    "Enable/disable the device to forward DHCP rebind messages to all DHCPv4 servers in a DHCPv4 server group.";
                }
              }  // container server-forward
    
              container server-source {
                description
                  "Configure the source IP address of the packets sent by a DHCPv4 server group.";
                choice config {
                  description
                    "Configure the source IP address of the packets sent by a DHCPv4 server group.";
                  case gateway-mode {
                    description
                      "Indicate the gateway address of the user address pool as source address.";
                    leaf gateway-mode {
                      type empty;
                      description
                        "Indicate that the source address of the packets sent by the DHCPv4 server group is the gateway address of the user address pool.";
                    }
                  }  // case gateway-mode
    
                  case if-name {
                    description
                      "Indicate the IP address of the interface as the source address.";
                    leaf if-name {
                      type leafref {
                        path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                      }
                      must
                        "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='GigabitEthernet' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='10GE' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='XGigabitEthernet' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='100GE' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='400GE' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Virtual-Ethernet' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='50GE' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='50|100GE' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='FlexE' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='25GE' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Ethernet' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Eth-Trunk' or
    /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='LoopBack'";
                      description
                        "Indicate that the source address of the packets sent by the DHCPv4 server group is the IP address of the interface.";
                    }
                  }  // case if-name
                }  // choice config
              }  // container server-source
    
              container release-agent {
                description
                  "Configure the function of sending DHCPv4 release packets.";
                leaf enable {
                  type boolean;
                  default "true";
                  description
                    "Enable/disable the function of sending DHCPv4 release packets.";
                }
              }  // container release-agent
            }  // list dhcp-server-group
          }  // container dhcp-server-groups
    
          container server-global-property {
            description
              "Configure DHCP server global property.";
            uses server-property;
          }  // container server-global-property
        }  // container bras-dhcp-server
      }  // module huawei-bras-dhcp-server
    

© 2023 YumaWorks, Inc. All rights reserved.