Configure the DHCPv6 user access.
Version: 2020-02-22
module huawei-bras-dhcpv6-access { yang-version 1; namespace "urn:huawei:yang:huawei-bras-dhcpv6-access"; prefix bras-dhcpv6-access; import huawei-ifm { prefix ifm; } import huawei-aaa { prefix aaa; } import huawei-bras-basic-access { prefix bras-basic-access; } import huawei-pub-type { prefix pub-type; } import ietf-inet-types { prefix inet; } import huawei-extension { prefix ext; } import ietf-yang-types { prefix yang; } import huawei-devm { prefix devm; } import huawei-network-instance { prefix ni; } import huawei-dhcpv6 { prefix dhcpv6; } 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 DHCPv6 user access."; revision "2020-02-22" { description "Description modification."; reference "Huawei private."; } revision "2019-10-17" { description "Second revision."; reference "Huawei private."; } revision "2019-04-02" { description "Initial revision."; reference "Huawei private."; } ext:task-name "bras-control"; typedef option18-mode { type enumeration { enum "cn-telecom" { value 1; description "Configure option with cn-telecom format."; } } description "DHCPv6 option code mode."; } typedef option18-version { type enumeration { enum "version2" { value 2; description "Configure option with version2 format."; } } description "DHCPv6 option verdion type."; } container bras-dhcpv6-access { description "Configure the DHCPv6 user access."; container global-option { description "Configure bras DHCPv6 access."; container option37-decode { description "Configure Option 37 in DHCPv6 solicit or request packet decode."; leaf decode-any-format { type boolean; default "false"; description "Enable/disable Option 37 any format decode."; } leaf conflict-offline { type enumeration { enum "ipv6" { value 0; description "Only detects whether the IPv6 address assigned to a user from a DHCPv6 remote address pool and an IPv6 prefix pool conflicts with that of another user."; } enum "ipv6-and-radius" { value 1; description "Detects whether the IPv6 address assigned to a user from a DHCPv6 remote address pool, an IPv6 prefix pool, or by the RADIUS server conflicts with that of another user."; } } description "The DHCPv6 conflict-ip-address offline user command configures the router to log out an online user and deny access of a new user. It detects that the IPv6 address assigned to the new user from a DHCPv6 remote address pool, an IPv6 prefix pool, or by the RADIUS server is the same as the IPv6 address of the online user."; } } // container option37-decode } // container global-option container global { description "Configure bras DHCPv6 access global."; container option { description "Configure the options."; container option17-decode { description "Configure the device to parse the Option 17 field."; leaf option17-decode { type boolean; default "false"; description "Enable/disable the device to parse the Option 17 field based on the format defined by the DSL forum."; } leaf wait-request-time { type uint8 { range "5..60"; } units "s"; default "55"; description "Specifies the DHCPv6 wait request time."; } leaf server-option { type uint16 { range "17"; } description "The option code retained in DHCPv6 server response messages."; } } // container option17-decode container option-priority { description "Configure the highest, medium, and lowest priorities for the DHCPv6 option delivered by the RADIUS server, configure in the domain scenario, and configure in the address pool scenario, respectively."; leaf enable { type boolean; default "false"; description "Enable/disable the highest, medium, and lowest priorities for the DHCPv6 option delivered by the RADIUS server, configure in the domain scenario, and configure in the address pool scenario, respectively."; } } // container option-priority container vendor-class { description "Configure a mapping between the vendor-class attribute and a DHCPv6 option a code as well as the offset value."; leaf option-code { type uint8 { range "1..255"; } default "16"; description "Specifies a DHCPv6 option code."; } leaf offset-value { type uint8 { range "1..254"; } description "Specifies the offset value of the vendor-class attribute."; } } // container vendor-class container option18 { description "Configure the Option 18 processing policy."; leaf ignore-interface-type { type boolean; default "false"; description 'Enable/disable the device to encapsulate the interface type character string into the packet sent to the DHCPv6 server in the cn-telecom-defined format as "eth".'; } leaf ignore-nas-logic { type boolean; default "false"; description "Enable/disable a device to insert or from inserting the actual interface information into Option 18 in the cn-telecom format or the actual hostname and interface information into Option 18 in the TR-101 format of a message to be sent to a DHCPv6 server."; } } // container option18 container option37-option17 { description "Configure the Option 37 or Option17 processing policy."; leaf nas-port-id-exclude { type boolean; default "false"; description "Enable/disable a device from inserting the Option 37 and Option 17 information from a client into the NAS-Port-Id attribute encapsulated in the cn-telecom format of a packet to be sent to a RADIUS server."; } } // container option37-option17 } // container option container user-offline { description "Configure user offLine."; leaf duid-mismatch { type boolean; default "false"; description "Enable/disable logging out the online user with the same MAC address but different DUIDs as that of a received DHCPv6 request packet."; } } // container user-offline container client-duid-replace { description "Configure the router that functions as a DHCPv6 relay agent to replace the client DUID in a DHCPv6 message sent from a client with the one it generates for that client before sending the message to a server."; leaf enable { type boolean; default "false"; description "Enable/disable replace client."; } } // container client-duid-replace container solict-speed { description "Configure DHCPv6 solicit speed."; leaf packet-num { type uint32 { range "1..3000"; } must "((../packet-num) and (../second)) or (not(../packet-num) and not(../second))"; description "Specifies the maximum number of solicit packets that are received within a specified time period."; } leaf second { type uint32 { range "1..10"; } units "s"; must "((../packet-num) and (../second)) or (not(../packet-num) and not(../second))"; description "Specified time period."; } } // container solict-speed container through-packet { description "Configure the router to transparently transmit DHCPv6 packets."; leaf enable { type boolean; default "true"; description "Enable/disable through packet."; } } // container through-packet container rebind-no-user-reply { description "Configure the DHCPv6 rebind no-user action send an reply message in response to a client's DHCPv6 rebind message if a corresponding user entry does not exist on the device."; leaf enable { type boolean; default "false"; description "Enable/disable the DHCPv6 rebind no-user action send an reply message in response to a client's DHCPv6 rebind message if a corresponding user entry does not exist on the device."; } } // container rebind-no-user-reply container reconfigure { presence "Create DHCPv6 reconfigure policy."; description "Enable/disable DHCPv6 reconfigure policy."; leaf retransmit-times { type uint8 { range "1..8"; } default "8"; description "Set the number of retransmission times of DHCPv6 reconfigure packets sent to users."; } } // container reconfigure container lease-management { description "Configure the access frame IPv6 lease manage pool exclude function for remote IPv6 addresses pools."; leaf enable { type boolean; default "false"; description "Enable/disable to manage the leases of RADIUS-delivered IPv6 addresses that are not in the supported address pools."; } } // container lease-management container whitelist-session-car { must "./cir <= ./pir"; must "./cbs <= ./pbs"; description "Configure DHCPv6 access whitelist session-car."; leaf enable { type boolean; default "true"; description "Enable/disable DHCPv6 access whitelist session-car."; } leaf cir { type uint32 { range "0..1000000"; } units "kbit/s"; default "256"; description "DHCPv6 protocol packets committed information rate."; } leaf cbs { type uint32 { range "0..9000000"; } units "Byte"; default "32000"; description "DHCPv6 protocol packets committed burst size."; } leaf pir { type uint32 { range "0..1000000"; } units "kbit/s"; default "512"; description "DHCPv6 protocol packets peak information rate."; } leaf pbs { type uint32 { range "0..9000000"; } units "Byte"; default "64000"; description "DHCPv6 protocol packets peak burst size."; } } // container whitelist-session-car container duid-missmatch { description "Configure a BRAS device to continue to parse a DHCPv6 message in which the server identifier cannot be identified."; leaf reply { type boolean; default "false"; description "Enable/disable a BRAS device to continue to parse a DHCPv6 message in which the server identifier cannot be identified."; } } // container duid-missmatch container reply-status-code { description "Configure the device not to respond with an Advertise packet if the Status Code in the Advertise packet is UnspecFail after receiving a DHCPv6 Solicit packet from a DHCPv6 user."; leaf reply-disable { type boolean; default "false"; description "Enable/disable the device not to respond with an Advertise packet if the Status Code in the Advertise packet is UnspecFail after receiving a DHCPv6 Solicit packet from a DHCPv6 user."; } } // container reply-status-code } // container global container rapid-commit { description "Configure the DHCPv6 server to support a rapid two-message exchange (solicit, reply)."; leaf enable { type boolean; default "false"; description "Enable/disable the DHCPv6 server to support a rapid two-message exchange (solicit, reply)."; } } // container rapid-commit container relay { status obsolete; description "Configure DHCPv6 Relay. This container is obsolete and the new container named relay-option on the interfaces."; container relay-options { status obsolete; description "List of the relay-forward packets. A packet sent to the DHCPv6 server in the bas relay scenario, the Option 18 and Option 37 attributes are inserted according to the OSP format."; list relay-option { key "interface-name"; status obsolete; description "Configure the relay-forward packet sent to the DHCPv6 server in the bas relay scenario, the Option 18 and Option 37 attributes are inserted according to the OSP format."; leaf interface-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='25GE' 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='PW-VE' 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='Ethernet' or /ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='Eth-Trunk'"; status obsolete; description "Specifies an interface name."; } leaf remote-id-type { type enumeration { enum "neba" { value 1; description "Specifies the remote-id padding to string NEBA."; } enum "vula" { value 2; description "Specifies the remote-id padding to string VULA."; } } default "neba"; status obsolete; description "Specifies the remote-id padding to string NEBA or VULA."; } } // list relay-option } // container relay-options } // container relay container reconf-timeout-users { config false; description "List of statistics for clients that do not respond to reconfigure messages within the timeout period."; list reconf-timeout-user { key "index user-id"; config false; description "Display the statistics for clients that do not respond to reconfigure messages within the timeout period."; leaf index { type uint32 { range "0..4294967295"; } config false; description "Index of Record."; } leaf user-id { type uint32 { range "0..4294967295"; } config false; description "User ID of the client that does not respond to a Reconfigure message within the timeout period."; } leaf user-mac { ext:support-filter "true"; type pub-type:mac-address { length "0..255"; } config false; description "MAC address of the client that does not respond to a Reconfigure message within the timeout period."; } leaf session-id { ext:support-filter "true"; type uint32; config false; description "Session ID of the client that does not respond to a Reconfigure message within the timeout period."; } leaf ipv6-address { type inet:ipv6-address-no-zone; config false; description "IPv6 address of the client that does not respond to a Reconfigure message within the timeout period."; } leaf ipv6-prefix { type inet:ipv6-address-no-zone; config false; description "Prefix of the IPv6 address of the client that does not respond to a reconfigure message within the timeout period."; } leaf record-time { type string { length "1..31"; } config false; description "Recorded time when client timeouts occur."; } } // list reconf-timeout-user } // container reconf-timeout-users container lease-proxy-users { config false; description "List of lease proxy users."; list lease-proxy-user { key "slot-id user-id"; config false; description "Operational data of lease proxy users."; leaf slot-id { type string { length "1..16"; } description "Slot of the lease proxy user."; } leaf user-id { type uint32 { range "0..4294967295"; } description "User ID of the lease proxy user."; } leaf mac-address { ext:support-filter "true"; type pub-type:mac-address { length "0..255"; } description "MAC address of the lease proxy user."; } leaf interface { ext:support-filter "true"; type string { length "1..64"; } description "Interface of the lease proxy user."; } leaf pe-vlan { ext:support-filter "true"; type uint16; description "PE-VLAN of the lease proxy user."; } leaf ce-vlan { ext:support-filter "true"; type uint16; description "CE-VLAN of the lease proxy user."; } leaf start-time { type yang:date-and-time; description "Original lease start time."; } leaf last-renew-time { type yang:date-and-time; description "Original lease last renew time."; } leaf preferred-lifetime { type uint32; units "s"; description "Preferred lifetime of the lease proxy user."; } leaf valid-lifetime { type uint32; units "s"; description "Valid lifetime of the lease proxy user."; } leaf original-t1 { type uint32; units "s"; description "OriginalT1 of the lease proxy user."; } } // list lease-proxy-user } // container lease-proxy-users container access-lease-proxy-users { config false; description "List of access lease proxy users."; list access-lease-proxy-user { key "user-id"; config false; description "Operational data of access lease proxy users."; leaf user-id { type uint32 { range "0..4294967295"; } description "User ID of the lease proxy user."; } leaf interface { ext:support-filter "true"; type string { length "1..64"; } description "Interface of the lease proxy user."; } leaf domain-name { ext:support-filter "true"; type leafref { path "/aaa:aaa/aaa:domains/aaa:domain/aaa:name"; } description "Domain name of the lease proxy user."; } leaf vpn-instance { ext:support-filter "true"; type leafref { path "/ni:network-instance/ni:instances/ni:instance/ni:name"; } description "VPN instance name."; } leaf mac-address { type pub-type:mac-address { length "0..255"; } description "MAC address of the lease proxy user."; } leaf proxy-type { ext:support-filter "true"; type enumeration { enum "ipv4-stack" { value 1; description "Specifies the proxy type of IPv4 stack."; } enum "ipv6-stack" { value 2; description "Specifies the proxy type of IPv6 stack."; } enum "dual-stack" { value 3; description "Specifies the proxy type of dual-stack."; } } description "Proxy type of the lease proxy user."; } leaf ipv4-address { type inet:ip-address-no-zone; description "IPv4 address of the lease proxy user."; } leaf ipv6-address { type inet:ipv6-address-no-zone; description "IPv6 address of the lease proxy user."; } leaf ipv6-prefix { type inet:ipv6-prefix; description "IPv6 prefix of the lease proxy user."; } leaf pe-vlan { type uint16; description "PE-VLAN of the lease proxy user."; } leaf ce-vlan { type uint16; description "CE-VLAN of the lease proxy user."; } leaf ipv4-lease { type uint32; units "s"; description "IPv4 lease time of the lease proxy user."; } leaf preferred-lifetime { type uint32; units "s"; description "Preferred lifetime of the lease proxy user."; } leaf valid-lifetime { type uint32; units "s"; description "Valid lifetime of the lease proxy user."; } } // list access-lease-proxy-user } // container access-lease-proxy-users container ipoev6-user-delays { config false; description "List of IPoEv6 user detecting delay informations."; list ipoev6-user-delay { key "mac ipv6-prefix prefix-length vrfid"; description "Statistics of IPoEv6 user detecting delay informations."; leaf mac { type pub-type:mac-address; description "User MAC address."; } leaf ipv6-prefix { type inet:ipv6-address-no-zone; description "User IPv6 prefix."; } leaf prefix-length { type uint8 { range "1..128"; } description "User IPv6 address length."; } leaf vrfid { type uint32; description "User vpn-instance ID."; } leaf detecting-delay-time { type uint32; units "ms"; description "User detecting delay time."; } leaf timestamp { type uint32; units "s"; description "Acquisition time."; } } // list ipoev6-user-delay } // container ipoev6-user-delays container access-lease-proxy-user-statistics { config false; description "Statistics of access lease proxy user."; leaf total-lease-proxy-users { type uint32; description "The count of total lease proxy users."; } leaf dual-stack-users { type uint32; description "The count of dual stack type lease proxy users."; } leaf ipv4-stack-users { type uint32; description "The count of IPv4 stack type lease proxy users."; } leaf ipv6-stack-users { type uint32; description "The count of IPv6 stack type lease proxy users."; } } // container access-lease-proxy-user-statistics container dhcpv6-client-statistics { config false; description "Statistics of DHCPv6 client."; leaf send-solicit { type uint32; units "packet"; description "The count of solicit send packets."; } leaf send-request { type uint32; units "packet"; description "The count of request send packets."; } leaf send-renew { type uint32; units "packet"; description "The count of renew send packets."; } leaf send-rebind { type uint32; units "packet"; description "The count of rebind send packets."; } leaf send-release { type uint32; units "packet"; description "The count of release send packets."; } leaf send-decline { type uint32; units "packet"; description "The count of decline send packets."; } leaf receive-advertise { type uint32; units "packet"; description "The count of advertise receive packets."; } leaf receive-request-reply { type uint32; units "packet"; description "The count of request reply receive packets."; } leaf receive-renew-reply { type uint32; units "packet"; description "The count of renew reply receive packets."; } leaf receive-rebind-reply { type uint32; units "packet"; description "The count of rebind reply receive packets."; } leaf receive-other { type uint32; units "packet"; description "The count of other receive packets."; } leaf receive-conflict-address { type uint32; units "packet"; description "The count of conflict address packets."; } leaf receive-transaction-id { type uint32; units "packet"; description "The count of transactionid error packets."; } leaf receive-noduid-option { type uint32; units "packet"; description "The count of no duid option packets."; } leaf receive-ip-or-udp-head { type uint32; units "packet"; description "The count of ip or udp head error packets."; } leaf receive-iaid-error { type uint32; units "packet"; description "The count of IAID error packets."; } leaf receive-client-duid-error { type uint32; units "packet"; description "The count of clientduid error packets."; } leaf receive-prefix-lenth-error { type uint32; units "packet"; description "The count of prefix length error packets."; } leaf receive-advertise-server-error { type uint32; units "packet"; description "The count of advertise server error packets."; } leaf receive-reply-server-error { type uint32; units "packet"; description "The count of reply server error packets."; } } // container dhcpv6-client-statistics } // container bras-dhcpv6-access rpc reset-ipv6-reconf-timeout { ext:node-ref "/bras-dhcpv6-access:bras-dhcpv6-access/bras-dhcpv6-access:reconf-timeout-users/bras-dhcpv6-access:reconf-timeout-user"; description "Clears the records of clients that do not respond to reconfigure messages within the timeout period."; input { leaf all-timeout-record { type boolean; mandatory true; description "Clears the information about the clients that do not respond to reconfigure messages within the timeout period."; } } } // rpc reset-ipv6-reconf-timeout rpc clear-lease-proxy-immediately { ext:node-ref "/ifm:ifm/ifm:interfaces/ifm:interface/bras-basic-access:bas/bras-basic-access:access-type/bras-basic-access:layer2-subscriber/bras-basic-access:layer2-subscriber/bras-dhcpv6-access:dhcpv6-access/bras-dhcpv6-access:lease-proxy"; description "Clears the DHCPv6 lease proxy table immediately."; input { leaf if-name { type leafref { path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name"; } mandatory true; description "Clears the DHCPv6 lease proxy table of the BAS interface immediately."; } } } // rpc clear-lease-proxy-immediately } // module huawei-bras-dhcpv6-access
© 2023 YumaWorks, Inc. All rights reserved.