# IPv6addr # Note: This test case uses two NICs(eth0, eth1) and # a IPv6 address prefix (2001:db8::/32, RFC3849). # Adjust them according to your environment at VARIABLE section if needed. CONFIG Agent IPv6addr AgentRoot /usr/lib/ocf/resource.d/heartbeat HangTimeout 20 VARIABLE OCFT_target_ipv6addr=2001:db8:1234::2 OCFT_target_nic=eth0 OCFT_target_prefix=64 OCFT_target_netaddr=2001:db8:1234::1/$OCFT_target_prefix OCFT_target_linklocal=fe80::2 OCFT_wrong_ipv6addr=2001:db8:5678::2 OCFT_force_nic=eth1 OCFT_force_prefix=80 SETUP-AGENT ip addr add $OCFT_target_netaddr dev $OCFT_target_nic CLEANUP-AGENT ip addr del $OCFT_target_netaddr dev $OCFT_target_nic CASE-BLOCK required_args Env OCF_RESKEY_ipv6addr=$OCFT_target_ipv6addr Env OCFT_check_ipv6addr=$OCFT_target_ipv6addr Env OCFT_check_prefix=$OCFT_target_prefix Env OCFT_check_nic=$OCFT_target_nic CASE-BLOCK check_ip_assigned Bash ip -6 -o addr show $OCFT_check_nic | grep -w $OCFT_check_ipv6addr/$OCFT_check_prefix >/dev/null # checking if the IPv6 address was assigned correctly CASE-BLOCK check_ip_removed Bash ! ip -6 -o addr show $OCFT_check_nic | grep -w $OCFT_check_ipv6addr/$OCFT_check_prefix >/dev/null # checking if the IPv6 address was removed correctly CASE-BLOCK default_status AgentRun stop CASE-BLOCK prepare Include required_args Include default_status CASE "normal start" Include prepare AgentRun start OCF_SUCCESS Include check_ip_assigned CASE "normal stop" Include prepare AgentRun start AgentRun stop OCF_SUCCESS Include check_ip_removed CASE "double start" Include prepare AgentRun start AgentRun start OCF_SUCCESS CASE "double stop" Include prepare AgentRun stop OCF_SUCCESS CASE "monitor with running" Include prepare AgentRun start AgentRun monitor OCF_SUCCESS CASE "monitor with not running" Include prepare AgentRun monitor OCF_NOT_RUNNING CASE "params with nic, no cidr_netmask" Include prepare Env OCF_RESKEY_nic=$OCFT_target_nic AgentRun start OCF_SUCCESS Include check_ip_assigned AgentRun monitor OCF_SUCCESS AgentRun stop OCF_SUCCESS Include check_ip_removed CASE "params with nic, cidr_netmask" Include prepare Env OCF_RESKEY_nic=$OCFT_target_nic Env OCF_RESKEY_cidr_netmask=$OCFT_target_prefix AgentRun start OCF_SUCCESS Include check_ip_assigned AgentRun monitor OCF_SUCCESS AgentRun stop OCF_SUCCESS Include check_ip_removed CASE "normal usage for a link-local IPv6 address" Include prepare Env OCF_RESKEY_ipv6addr=$OCFT_target_linklocal Env OCFT_check_ipv6addr=$OCFT_target_linklocal # nic is mandatory for a link-local address Env OCF_RESKEY_nic=$OCFT_target_nic AgentRun start OCF_SUCCESS Include check_ip_assigned AgentRun monitor OCF_SUCCESS AgentRun stop OCF_SUCCESS Include check_ip_removed CASE "error start for a link-local IPv6 address when no nic" Include prepare Env OCF_RESKEY_ipv6addr=$OCFT_target_linklocal # nic is mandatory for a link-local address Unenv OCF_RESKEY_nic AgentRun start OCF_ERR_GENERIC Include check_ip_removed CASE "error params with wrong ipv6addr" Include prepare Env OCF_RESKEY_ipv6addr=$OCFT_wrong_ipv6addr AgentRun start OCF_ERR_GENERIC # Note: this result is different from IPaddr2/findif # IPaddr2 succeeds if the ip matched based on the netmask of the subnet # or fails if it did not match to any. # Recommended to always specify both nic and cidr_netmask when you needed. CASE "error params with wrong cidr_netmask" Include prepare Env OCF_RESKEY_cidr_netmask=$OCFT_force_prefix AgentRun start OCF_ERR_GENERIC # Note: this result is different from IPaddr2/findif # IPaddr2 succeeds but it uses /32 as a guessed cidr_netmask which # does not seem to be expected. # Recommended to always specify both nic and cidr_netmask when you needed. CASE "error params with wrong nic" Include prepare Env OCF_RESKEY_nic=$OCFT_force_nic AgentRun start OCF_ERR_GENERIC # Note: This use case is now valid. It was not allowed until v3.9.2. CASE "force to use the specified nic and cidr_netmask" Include prepare Env OCF_RESKEY_nic=$OCFT_force_nic Env OCF_RESKEY_cidr_netmask=$OCFT_force_prefix Env OCFT_check_nic=$OCFT_force_nic Env OCFT_check_prefix=$OCFT_force_prefix AgentRun start OCF_SUCCESS Include check_ip_assigned AgentRun monitor OCF_SUCCESS AgentRun stop OCF_SUCCESS Include check_ip_removed