<help>Use VRRP virtual MAC address as per RFC3768</help>
</properties>
</leafNode>
<node name="transition-script">
<properties>
<help>VRRP transition scripts</help>
</properties>
<children>
<leafNode name="master">
<properties>
<help>Script to run on VRRP state transition to master</help>
<constraint>
<validator name="script"/>
</constraint>
</properties>
</leafNode>
<leafNode name="backup">
<properties>
<help>Script to run on VRRP state transition to backup</help>
<constraint>
<validator name="script"/>
</constraint>
</properties>
</leafNode>
<leafNode name="fault">
<properties>
<help>Script to run on VRRP state transition to fault</help>
<constraint>
<validator name="script"/>
</constraint>
</properties>
</leafNode>
+ <leafNode name="stop">
+ <properties>
+ <help>Script to run on VRRP state transition to stop</help>
+ <constraint>
+ <validator name="script"/>
+ </constraint>
+ </properties>
+ </leafNode>
</children>
</node>
<leafNode name="virtual-address">
<properties>
<multi/>
<help>Virtual address (IPv4 or IPv6, but they must not be mixed in one group)</help>
<constraint>
<validator name="ipv4-host"/>
<validator name="ipv6-host"/>
</constraint>
<constraintErrorMessage>Virtual address must be a valid IPv4 or IPv6 address with prefix length (e.g. 192.0.2.3/24 or 2001:db8:ff::10/64)</constraintErrorMessage>
<valueHelp>
<format><IPv4|IPv6></format>
<description>IPv4 or IPv6 virtual address</description>
raise ConfigError("VRRP group {0} mixes IPv4 and IPv6 virtual addresses, this is not allowed. Create separate groups for IPv4 and IPv6".format(group["name"]))
if vaddrs4:
if group["hello_source"]:
hsa = ipaddress.ip_address(group["hello_source"])
if isinstance(hsa, ipaddress.IPv6Address):
raise ConfigError("VRRP group {0} uses IPv4 but its hello-source-address is IPv6".format(group["name"]))
if group["peer_address"]:
pa = ipaddress.ip_address(group["peer_address"])
if isinstance(pa, ipaddress.IPv6Address):
raise ConfigError("VRRP group {0} uses IPv4 but its peer-address is IPv6".format(group["name"]))
if vaddrs6:
if group["hello_source"]:
hsa = ipaddress.ip_address(group["hello_source"])
if isinstance(hsa, ipaddress.IPv4Address):
raise ConfigError("VRRP group {0} uses IPv6 but its hello-source-address is IPv4".format(group["name"]))
if group["peer_address"]:
pa = ipaddress.ip_address(group["peer_address"])
if isinstance(pa, ipaddress.IPv4Address):
raise ConfigError("VRRP group {0} uses IPv6 but its peer-address is IPv4".format(group["name"]))