dhcp-client

The module for implementing DHCP protocol

  • Version: 2014-12-18

    dhcp-client@2014-12-18


    
      module dhcp-client {
    
        yang-version 1;
    
        namespace
          "urn:ietf:params:xml:ns:yang:dhcp-client";
    
        prefix dhcp;
    
        import ietf-inet-types {
          prefix inet;
        }
    
        description
          "The module for implementing DHCP protocol";
    
        revision "2014-12-18";
    
        container relayv4 {
          container dhcpRelayIfCfgs {
            list dhcpRelayIfCfg {
              key "ifName";
              leaf ifName {
                type string;
                description
                  "Specify the interface name that dhcp relay configured on";
              }
    
              leaf enable {
                type boolean;
                default "false";
                description
                  "Enable or disable dhcp relay function";
              }
    
              leaf serverGroupName {
                type string;
                description "Server Group Name";
              }
    
              leaf-list serverAddress {
                type inet:ipv4-address;
                description
                  "DHCP relay destination server IP address";
              }
            }  // list dhcpRelayIfCfg
          }  // container dhcpRelayIfCfgs
    
          container dhcpRelayServerGroups {
            list dhcpRelayServerGroup {
              key "serverGroupName";
              description
                "DHCP relay server group ";
              leaf serverGroupName {
                type string;
                description
                  "name of server group";
              }
    
              leaf vpnName {
                type string;
                description
                  "VPN name for server group";
              }
    
              leaf gateway {
                type inet:ipv4-address;
                description
                  "gateway for server group";
              }
    
              leaf-list serverAddress {
                type inet:ipv4-address;
                description
                  "DHCP relay destination server IP address";
              }
    
              container dhcpRelaySerGrpStats {
                list dhcpRelaySerGrpStats {
                  key "serverIpAddr";
                  description
                    "DHCP relay server group packet statistics ";
                  leaf serverIpAddr {
                    type inet:ipv4-address;
                  }
    
                  leaf pktsReceiveFromClient {
                    type uint32;
                    config false;
                  }
    
                  leaf discoverPktsReceive {
                    type uint32;
                    config false;
                  }
    
                  leaf requestPktsReceive {
                    type uint32;
                    config false;
                  }
    
                  leaf releasePktsReceive {
                    type uint32;
                    config false;
                  }
    
                  leaf informPktsRecevie {
                    type uint32;
                    config false;
                  }
    
                  leaf declinePktsReceive {
                    type uint32;
                    config false;
                  }
    
                  leaf pktsReceiveFromServers {
                    type uint32;
                    config false;
                  }
    
                  leaf offerPktsReceive {
                    type uint32;
                    config false;
                  }
    
                  leaf ackPktsReceive {
                    type uint32;
                    config false;
                  }
    
                  leaf nakPktsReceive {
                    type uint32;
                    config false;
                  }
    
                  leaf pktsSentToServers {
                    type uint32;
                    config false;
                  }
    
                  leaf pktsSentToClients {
                    type uint32;
                    config false;
                  }
    
                  leaf unicastPktsSentToClients {
                    type uint32;
                    config false;
                  }
    
                  leaf broadcastPktsSentToClients {
                    type uint32;
                    config false;
                  }
                }  // list dhcpRelaySerGrpStats
              }  // container dhcpRelaySerGrpStats
            }  // list dhcpRelayServerGroup
          }  // container dhcpRelayServerGroups
    
          container dhcpRelayStatistics {
            leaf badPacketsRecvd {
              type uint32;
              config false;
            }
    
            leaf packetsRecvdFromClient {
              type uint32;
              config false;
            }
    
            leaf discoverPacketsRecvd {
              type uint32;
              config false;
            }
    
            leaf requestPacketsRecvd {
              type uint32;
              config false;
            }
    
            leaf informPacketsRecvd {
              type uint32;
              config false;
            }
    
            leaf declinePacketsRecvd {
              type uint32;
              config false;
            }
    
            leaf releasePacketsRecvd {
              type uint32;
              config false;
            }
    
            leaf packetsRecvdFromServers {
              type uint32;
              config false;
            }
    
            leaf offerPacketsRecvd {
              type uint32;
              config false;
            }
    
            leaf ackPacketsRecvd {
              type uint32;
              config false;
            }
    
            leaf nakPacketsRecvd {
              type uint32;
              config false;
            }
    
            leaf packetsSentToServers {
              type uint32;
              config false;
            }
    
            leaf packetsSentToClients {
              type uint32;
              config false;
            }
    
            leaf unicastPacketsSentToClients {
              type uint32;
              config false;
            }
    
            leaf broadcastPacketsSentToClients {
              type uint32;
              config false;
            }
    
            leaf releasePacketsSentToServers {
              type uint32;
              config false;
            }
    
            leaf sendRenewPacket {
              type uint32;
              config false;
            }
          }  // container dhcpRelayStatistics
        }  // container relayv4
    
        container serverv4 {
          container common {
            leaf pingPacketNumber {
              type uint8 {
                range "0..10";
              }
              default "0";
              description "Ping packet number";
            }
    
            leaf pingPacketTimeOut {
              type uint16 {
                range "0..10000";
              }
              default "500";
              description "Ping packet timeout";
            }
          }  // container common
    
          container globalIpPool {
            list globalIpPool {
              key "ipPoolName";
              leaf ipPoolName {
                type string {
                  length "1..64";
                }
                description "IP pool name";
              }
    
              leaf vpnInstance {
                type string {
                  length "1..31";
                }
                description "VPN name";
              }
    
              container gatewayIp {
                leaf gatewayIp {
                  type inet:ipv4-address;
                  description
                    "Gateway IP Address";
                }
    
                leaf gatewayMask {
                  type inet:ipv4-address;
                  description
                    "Gateway IP Address Mask";
                }
              }  // container gatewayIp
    
              container sections {
                list section {
                  key "sectionIndex";
                  leaf sectionIndex {
                    type uint16 {
                      range "0..255";
                    }
                    description "Section Index";
                  }
    
                  leaf sectionStartIp {
                    type inet:ipv4-address;
                    mandatory true;
                    description "IP Address";
                  }
    
                  leaf sectionEndIp {
                    type inet:ipv4-address;
                    description "IP Address";
                  }
    
                  container ipPoolSectionStat {
                    leaf usedIpCount {
                      type uint32;
                      config false;
                      description
                        "Used Ip Count";
                    }
    
                    leaf idleIpCount {
                      type uint32;
                      config false;
                      description
                        "Idle Ip Count";
                    }
    
                    leaf conflictIpCount {
                      type uint32;
                      config false;
                      description
                        "Conflict Ip Count";
                    }
    
                    leaf totalIpCount {
                      type uint32;
                      config false;
                      description
                        "Total Ip Count";
                    }
                  }  // container ipPoolSectionStat
                }  // list section
              }  // container sections
    
              container leaseTime {
                description
                  "Specifies the lease time, option code is 51.";
                leaf day {
                  type uint16 {
                    range "0..49710";
                  }
                  default "1";
                  description "Day";
                }
    
                leaf hour {
                  type uint8 {
                    range "0..23";
                  }
                  default "0";
                  description "Hour";
                }
    
                leaf minute {
                  type uint8 {
                    range "0..59";
                  }
                  default "0";
                  description "Minute";
                }
              }  // container leaseTime
    
              leaf-list domainNameServer {
                type inet:ipv4-address;
                description
                  "Specifies the domain name server, option code is 5.";
              }
    
              leaf domainName {
                type string {
                  length "1..255";
                }
                description
                  "Specifies the domain name, option code is 15.";
              }
    
              leaf-list NbnsServer {
                type inet:ipv4-address;
                description
                  "Specifies the NetBIOS name server, option code is 44.";
              }
    
              leaf NbNodeType {
                type enumeration {
                  enum "B-node" {
                    value 1;
                  }
                  enum "P-node" {
                    value 2;
                  }
                  enum "M-node" {
                    value 4;
                  }
                  enum "H-node" {
                    value 8;
                  }
                }
                description
                  "Specifies the NetBIOS node type, option code is 46.";
              }
    
              container UserDefOptions {
                list UserDefOption {
                  key "optionCode";
                  description
                    "Specifieds the user defined DHCP options";
                  leaf optionCode {
                    type uint8 {
                      range
                        "2 | 4..5 | 7..14 | 16..43 | 47..49 | 56 | 62..81 | 83..254";
                    }
                    description
                      "The option code of the user defined option";
                  }
    
                  leaf-list ipAddress {
                    type inet:ipv4-address;
                    description
                      "IP address list";
                  }
    
                  leaf optionString {
                    type string {
                      length "1..254";
                    }
                    description
                      "User defined option string";
                  }
    
                  leaf optionHex {
                    type string {
                      length "2..508";
                    }
                    description
                      "User defined option HEX string";
                  }
                }  // list UserDefOption
              }  // container UserDefOptions
    
              container ipPoolStat {
                leaf usedIpCount {
                  type uint32;
                  config false;
                  description "Used Ip Count";
                }
    
                leaf idleIpCount {
                  type uint32;
                  config false;
                  description "Idle Ip Count";
                }
    
                leaf conflictIpCount {
                  type uint32;
                  config false;
                  description
                    "Conflict Ip Count";
                }
    
                leaf totalIpCount {
                  type uint32;
                  config false;
                  description "Total Ip Count";
                }
              }  // container ipPoolStat
            }  // list globalIpPool
          }  // container globalIpPool
    
          container packetStatistics {
            leaf clientRequestCount {
              type uint32;
              config false;
              description "Client Request Count";
            }
    
            leaf discoverCount {
              type uint32;
              config false;
              description "Discover Count";
            }
    
            leaf requestCount {
              type uint32;
              config false;
              description "Request Count";
            }
    
            leaf declineCount {
              type uint32;
              config false;
              description "Decline Count";
            }
    
            leaf releaseCount {
              type uint32;
              config false;
              description "Release Count";
            }
    
            leaf informCount {
              type uint32;
              config false;
              description "Inform Count";
            }
    
            leaf serverReplyCount {
              type uint32;
              config false;
              description "Server Reply Count";
            }
    
            leaf offerCount {
              type uint32;
              config false;
              description "Offer Count";
            }
    
            leaf ackCount {
              type uint32;
              config false;
              description "Ack Count";
            }
    
            leaf nakCount {
              type uint32;
              config false;
              description "Nak Count";
            }
          }  // container packetStatistics
        }  // container serverv4
    
        container clientv4 {
          description "dhcpv4 client portion";
          list client-if {
            key "ifName";
            leaf ifName {
              type string;
              description
                "Specify the interface name that dhcp client configured on";
            }
    
            leaf enable {
              type boolean;
              default "false";
              description
                "Enable or disable dhcp client function";
            }
    
            container dhcpClientStatus {
              description
                "Specify the status of DHCP client on the interface";
              leaf status {
                type enumeration {
                  enum "Init" {
                    value 0;
                  }
                  enum "Discoverying" {
                    value 1;
                  }
                  enum "Offered" {
                    value 2;
                  }
                  enum "Requesting" {
                    value 3;
                  }
                  enum "Acked" {
                    value 4;
                  }
                }
                config false;
                description
                  "Specify the status of DHCP client on the interface";
              }
    
              leaf clientIpAddr {
                type inet:ipv4-address;
                config false;
                description
                  "Specify the IP address obtained from DHCP server on the interface";
              }
    
              leaf-list dnsServerIpAddr {
                type inet:ipv4-address;
                config false;
                description
                  "Specify the DNS server IP address obtained from DHCP server on the interface";
              }
            }  // container dhcpClientStatus
    
            container dhcpClientIfStatistics {
              description
                "Specify the statistics of DHCP client send or receive packets on the interface";
              leaf discoverCount {
                type uint32;
                config false;
                description "Discover Count";
              }
    
              leaf requestCount {
                type uint32;
                config false;
                description "Request Count";
              }
    
              leaf declineCount {
                type uint32;
                config false;
                description "Decline Count";
              }
    
              leaf releaseCount {
                type uint32;
                config false;
                description "Release Count";
              }
    
              leaf informCount {
                type uint32;
                config false;
                description "Inform Count";
              }
    
              leaf offerCount {
                type uint32;
                config false;
                description "Offer Count";
              }
    
              leaf ackCount {
                type uint32;
                config false;
                description "Ack Count";
              }
    
              leaf nakCount {
                type uint32;
                config false;
                description "Nak Count";
              }
            }  // container dhcpClientIfStatistics
          }  // list client-if
    
          container dhcpClientStatus {
            list client-if {
              key "ifName";
              config false;
              leaf ifName {
                type string;
                description
                  "Interface name which has DHCP Address";
              }
    
              leaf clientIpAddr {
                type inet:ipv4-address;
                description
                  "Specify the IP address obtained from DHCP server on the interface";
              }
    
              leaf-list dnsServerIpAddr {
                type inet:ipv4-address;
                description
                  "Specify the DNS server IP address obtained from DHCP server on the interface";
              }
    
              leaf leaseTime {
                type yang:timeticks;
                mandatory true;
                description
                  "Lease time for DHCPv4 address";
              }
    
              leaf client-identifier {
                type string;
                mandatory true;
                description
                  "DHCP client identifier sent in the DHCP messages";
                reference
                  "RFC 2132, Section 9.14";
    
              }
            }  // list client-if
          }  // container dhcpClientStatus
    
          list client-if {
            key "ifName";
            description
              "A client may have several
    interfaces, it is more reasonable to
    configure and manage parameters on
    the interface-level. The list defines
    specific client interfaces and their
    data. Different interfaces are distinguished
    by the key which is a configurable string
    value.";
            leaf ifName {
              type string {
                pattern
                  'ip-(1|200)/0/0/(LCN1|LCN2|LCN)';
              }
              description
                "Specify the interface name that dhcp client configured on";
            }
    
            leaf enable {
              type boolean;
              must
                "(((current() = 'false') and  (((count (/if:interfaces/if:interface[if:name=current()/../ifName]/ip:ipv4/ip:address) > 0) and (/if:interfaces/if:interface[if:name=current()/../ifName]/ip:ipv4/ip:enabled = 'true'))))or (current() = 'true'))" {
                error-message
                  "No Static IPV4 address assigned/Enabled for this interface";
              }
              default "true";
              description
                "Enable or disable dhcp client function";
            }
          }  // list client-if
        }  // container clientv4
      }  // module dhcp-client
    

© 2023 YumaWorks, Inc. All rights reserved.