module ietf-savi-dhcpv6 {
yang-version 1;
namespace
"urn:ietf:params:xml:ns:yang:ietf-savi-dhcpv6";
prefix savi-dhcpv6;
import ietf-yang-types {
prefix yang;
}
import ietf-inet-types {
prefix inet;
}
import ietf-interfaces {
prefix if;
}
import ietf-savi {
prefix savi;
}
organization "IETF SAVI Working Group";
contact
"
WG Web: <http://datatracker.ietf.org/wg/savi/charter>
Editor: Changqing An
<mailto:acq@tsinghua.edu.cn>
";
description
"
The Yang data module defined for SAVI DHCPv6.
";
revision "2017-08-15" {
description "Initial revision.";
reference
"DRAFT XXX: A YANG Data Model for SAVI Management";
}
identity savi-dhcp-state {
base savi:binding-state;
description
"Base identity for the sates definition of SAVI DHCPv6.";
}
identity no_bind {
base savi-dhcp-state;
description
"A state defined in SAVI DHCPv6.";
}
identity init_bind {
base savi-dhcp-state;
description
"A state defined in SAVI DHCPv6.";
}
identity bind {
base savi-dhcp-state;
description
"A state defined in SAVI DHCPv6.";
}
identity detection {
base savi-dhcp-state;
description
"A state defined in SAVI DHCPv6.";
}
identity recovery {
base savi-dhcp-state;
description
"A state defined in SAVI DHCPv6.";
}
identity verify {
base savi-dhcp-state;
description
"A state defined in SAVI DHCPv6.";
}
augment /savi:savi-state/savi:savi-instances/savi:savi-instance {
when
"/savi:savi/savi:savi-instances/savi:savi-instance/savi:savi-method = 'savi-dhcpv6'";
description
"Binding state table specific for SAVI DHCPv6.";
container binding-state-table {
description
"Binding state table specific for SAVI DHCPv6.";
list binding-state-entry {
key "ifname address";
description
"A binding state entry specific for SAVI DHCPv6.";
leaf address {
type inet:ipv6-address;
description
"The binding source IP address.";
}
uses savi:binding-entry;
leaf state {
type identityref {
base savi-dhcp-state;
}
description
"State of the entry as defined in SAVI DHCP: NO_BIND, INIT_BIND, BOUND, DETECTION , RECOVERY, VERIFY.";
}
leaf tid {
type uint32;
description
"The Transaction ID of the corresponding DHCP transaction.";
}
leaf timeouts {
when
"/savi:savi/savi:savi-instances/savi:savi-instance/params/if-attributes/if-attribute/data-snooping = 'true'";
type uint32;
description
"The number of timeouts that expired in the current state.";
}
} // list binding-state-entry
} // container binding-state-table
}
augment /savi:savi/savi:savi-instances/savi:savi-instance {
when
"/savi:savi/savi:savi-instances/savi:savi-instance/savi:savi-method = 'savi-dhcpv6'";
description
"Parameters specific to SAVI DHCPv6";
container params {
description
"Parameters specific to SAVI DHCPv6";
leaf max-dhcp-responsetime {
type yang:timeticks;
default '12000';
description
"Maximum Solicit timeout value. Default is 120s.";
reference
"SOL_MAX_RT from [RFC3315]";
}
leaf max-leasequery-delay {
type yang:timeticks;
default '1000';
description
"Maximum LEASEQUERY timeout value. Default is 10s.";
reference
"LQ_MAX_RT from [RFC5007]";
}
leaf datasnooping-interval {
type yang:timeticks;
default '6000';
description
"Minimum interval between two successive EVE_DATA_UNMATCH
events triggered by an attachment. Recommended interval:
60s and configurable.";
reference
"DATA_SNOOPING_INTERVAL from [RFC7513]";
}
leaf offlink-delay {
type yang:timeticks;
default '3000';
description
"Period after a client is last detected before the binding
anchor is being removed. Recommended delay: 30s.";
reference
"OFFLINK_DELAY from [RFC7513].";
}
leaf detection-timeout {
type yang:timeticks;
default '50';
description
"Maximum duration of a hardware address verification step
in the VERIFY state.";
reference
"DETECTION_TIMEOUT from [RFC7513]";
}
container if-attributes {
description
"Interface attributes specific to SAVI DHCPv6.";
list if-attribute {
key "ifname";
description
"A list of attributes for each interface.";
leaf ifname {
type if:interface-ref;
description
"The name of the interface.";
}
leaf trust-attribute {
type boolean;
default 'false';
description
"An attribute defined in SAVI DHCP.";
}
leaf dhcp-trust {
type boolean;
default 'false';
description
"An attribute defined in SAVI DHCP.";
}
leaf dhcp-snooping {
type boolean;
default 'true';
description
"An attribute defined in SAVI DHCP.";
}
leaf data-snooping {
type boolean;
default 'false';
description
"An attribute defined in SAVI DHCP.";
}
leaf validating {
type boolean;
default 'true';
description
"An attribute defined in SAVI DHCP.";
}
} // list if-attribute
} // container if-attributes
} // container params
}
} // module ietf-savi-dhcpv6