1*** Settings *** 2Documentation Network interface IPv6 configuration and verification 3 ... tests. 4 5Resource ../../lib/bmc_redfish_resource.robot 6Resource ../../lib/openbmc_ffdc.robot 7Resource ../../lib/bmc_ipv6_utils.robot 8Resource ../../lib/external_intf/vmi_utils.robot 9Resource ../../lib/bmc_network_utils.robot 10Library ../../lib/bmc_network_utils.py 11Library Collections 12Library Process 13 14Test Setup Test Setup Execution 15Test Teardown Test Teardown Execution 16Suite Setup Suite Setup Execution 17Suite Teardown Redfish.Logout 18 19Test Tags BMC_IPv6 20 21*** Variables *** 22${test_ipv6_addr} 2001:db8:3333:4444:5555:6666:7777:8888 23${test_ipv6_invalid_addr} 2001:db8:3333:4444:5555:6666:7777:JJKK 24${test_ipv6_addr1} 2001:db8:3333:4444:5555:6666:7777:9999 25${invalid_hexadec_ipv6} x:x:x:x:x:x:10.5.5.6 26${ipv6_multi_short} 2001::33::111 27# Valid prefix length is a integer ranges from 1 to 128. 28${test_prefix_length} 64 29${ipv6_gw_addr} 2002:903:15F:32:9:3:32:1 30${prefix_length_def} None 31${invalid_staticv6_gateway} 9.41.164.1 32${new_mac_addr} AA:E2:84:14:28:79 33${linklocal_addr_format} fe80::[0-9a-f:]+$ 34${link_local_addr} fe80:: 35${link_local_prefix_len} 10 36${ipv6_leading_zero} 2001:0022:0033::0111 37${ipv6_firsthextet_zero} 2001:0022:1133::1111 38${ipv6_eliminate_zero} 2001:22:33::111 39${ipv6_eliminate_zero1} 2001:22:1133::1111 40${ipv6_contigeous_zero} 2001:0022:0000:0000:1:2:3:8 41${ipv6_zero_compression} 2001:22::1:2:3:8 42 43*** Test Cases *** 44 45Get IPv6 Address And Verify 46 [Documentation] Get IPv6 Address And Verify. 47 [Tags] Get_IPv6_Address_And_Verify 48 49 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations} 50 Verify IPv6 On BMC ${ipv6_network_configuration['Address']} 51 END 52 53 54Get PrefixLength And Verify 55 [Documentation] Get IPv6 prefix length and verify. 56 [Tags] Get_PrefixLength_And_Verify 57 58 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations} 59 Verify IPv6 On BMC ${ipv6_network_configuration['PrefixLength']} 60 END 61 62 63Get IPv6 Default Gateway And Verify 64 [Documentation] Get IPv6 default gateway and verify. 65 [Tags] Get_IPv6_Default_Gateway_And_Verify 66 67 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 68 ${ipv6_gateway}= Get From Dictionary ${resp.dict} IPv6DefaultGateway 69 Verify IPv6 Default Gateway On BMC ${ipv6_gateway} 70 71 72Verify All Configured IPv6 And PrefixLength On BMC 73 [Documentation] Verify IPv6 address and its prefix length on BMC. 74 [Tags] Verify_All_Configured_IPv6_And_PrefixLength_On_BMC 75 76 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations} 77 Verify IPv6 And PrefixLength ${ipv6_network_configuration['Address']} 78 ... ${ipv6_network_configuration['PrefixLength']} 79 END 80 81 82Configure IPv6 Address And Verify 83 [Documentation] Configure IPv6 address and verify. 84 [Tags] Configure_IPv6_Address_And_Verify 85 [Teardown] Run Keywords 86 ... Delete IPv6 Address ${test_ipv6_addr} AND Test Teardown Execution 87 [Template] Configure IPv6 Address On BMC 88 89 90 # IPv6 address Prefix length 91 ${test_ipv6_addr} ${test_prefix_length} 92 93 94Configure IPv6 Address On BMC And Verify On Both Interfaces 95 [Documentation] Configure IPv6 address on both interfaces and verify. 96 [Tags] Configure_IPv6_Address_On_BMC_And_Verify_On_Both_Interfaces 97 [Teardown] Run Keywords 98 ... Delete IPv6 Address ${test_ipv6_addr} ${1} 99 ... AND Delete IPv6 Address ${test_ipv6_addr1} ${2} 100 ... AND Test Teardown Execution 101 102 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} ${None} ${1} 103 Configure IPv6 Address On BMC ${test_ipv6_addr1} ${test_prefix_length} ${None} ${2} 104 105 Verify All The Addresses Are Intact ${1} 106 Verify All The Addresses Are Intact ${2} 107 ... ${eth1_initial_ipv4_addressorigin_list} ${eth1_initial_ipv4_addr_list} 108 109 # Verify Static IPv6 on eth0 110 @{ipv6_addressorigin_list} ${ipv6_static_addr}= 111 ... Get Address Origin List And Address For Type Static ${1} 112 Should Contain ${ipv6_addressorigin_list} Static 113 Should Not Be Empty ${ipv6_static_addr} msg=${ipv6_static_addr} address is not present 114 115 # Verify Static IPv6 on eth1 116 @{ipv6_addressorigin_list} ${ipv6_static_addr}= 117 ... Get Address Origin List And Address For Type Static ${2} 118 Should Contain ${ipv6_addressorigin_list} Static 119 Should Not Be Empty ${ipv6_static_addr} msg=${ipv6_static_addr} address is not present 120 121 122Delete IPv6 Address And Verify 123 [Documentation] Delete IPv6 address and verify. 124 [Tags] Delete_IPv6_Address_And_Verify 125 126 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} 127 128 Delete IPv6 Address ${test_ipv6_addr} 129 130 131Modify IPv6 Address And Verify 132 [Documentation] Modify IPv6 address and verify. 133 [Tags] Modify_IPv6_Address_And_Verify 134 [Teardown] Run Keywords 135 ... Delete IPv6 Address ${test_ipv6_addr1} AND Test Teardown Execution 136 137 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} 138 139 Modify IPv6 Address ${test_ipv6_addr} ${test_ipv6_addr1} ${test_prefix_length} 140 141 142Verify Persistency Of IPv6 After BMC Reboot 143 [Documentation] Verify persistency of IPv6 after BMC reboot. 144 [Tags] Verify_Persistency_Of_IPv6_After_BMC_Reboot 145 [Teardown] Run Keywords 146 ... Delete IPv6 Address ${test_ipv6_addr} AND Test Teardown Execution 147 148 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} 149 150 Redfish OBMC Reboot (off) stack_mode=skip 151 152 # Verifying persistency of IPv6. 153 Verify IPv6 On BMC ${test_ipv6_addr} 154 155 156Enable SLAAC On BMC And Verify 157 [Documentation] Enable SLAAC on BMC and verify. 158 [Tags] Enable_SLAAC_On_BMC_And_Verify 159 160 Set SLAAC Configuration State And Verify ${True} 161 162 163Enable DHCPv6 Property On BMC And Verify 164 [Documentation] Enable DHCPv6 property on BMC and verify. 165 [Tags] Enable_DHCPv6_Property_On_BMC_And_Verify 166 167 Set And Verify DHCPv6 Property Enabled 168 169 170Disable DHCPv6 Property On BMC And Verify 171 [Documentation] Disable DHCPv6 property on BMC and verify. 172 [Tags] Disable_DHCPv6_Property_On_BMC_And_Verify 173 174 Set And Verify DHCPv6 Property Disabled 175 176 177Verify Persistency Of DHCPv6 On Reboot 178 [Documentation] Verify persistency of DHCPv6 property on reboot. 179 [Tags] Verify_Persistency_Of_DHCPv6_On_Reboot 180 181 Set And Verify DHCPv6 Property Enabled 182 Redfish OBMC Reboot (off) stack_mode=skip 183 Verify DHCPv6 Property Enabled 184 185 186Verify Persistency Of DHCPv6 On BMC Reboot On Eth1 187 [Documentation] Verify persistency of DHCPv6 property and 188 ... all existing n/w configurations on BMC reboot on eth1. 189 [Tags] Verify_Persistency_Of_DHCPv6_On_BMC_Reboot_On_Eth1 190 [Setup] Set And Verify DHCPv6 Property Enabled ${2} 191 192 Redfish OBMC Reboot (off) stack_mode=skip 193 194 Verify DHCPv6 Property Enabled ${2} 195 196 Verify All The Addresses Are Intact ${1} 197 Verify All The Addresses Are Intact ${2} 198 ... ${eth1_initial_ipv4_addressorigin_list} ${eth1_initial_ipv4_addr_list} 199 200 201Verify Persistency Of SLAAC On BMC Reboot On Eth0 202 [Documentation] Verify persistency of SLAAC property on reboot on eth0. 203 [Tags] Verify_Persistency_Of_SLAAC_On_BMC_Reboot_On_Eth0 204 205 Set SLAAC Configuration State And Verify ${True} [${HTTP_OK}] ${1} ${False} 206 Redfish OBMC Reboot (off) stack_mode=skip 207 Verify SLAAC Property ${True} 208 209 210Verify Persistency Of SLAAC On BMC Reboot On Eth1 211 [Documentation] Verify persistency of SLAAC property on reboot on eth1. 212 [Tags] Verify_Persistency_Of_SLAAC_On_BMC_Reboot_On_Eth1 213 214 Set SLAAC Configuration State And Verify ${True} [${HTTP_OK}] ${2} ${False} 215 Redfish OBMC Reboot (off) stack_mode=skip 216 Verify SLAAC Property ${True} ${2} 217 218 219Configure Invalid Static IPv6 And Verify 220 [Documentation] Configure invalid static IPv6 and verify. 221 [Tags] Configure_Invalid_Static_IPv6_And_Verify 222 [Template] Configure IPv6 Address On BMC 223 224 #invalid_ipv6 prefix length valid_status_code 225 ${ipv4_hexword_addr} ${test_prefix_length} ${HTTP_BAD_REQUEST} 226 ${invalid_hexadec_ipv6} ${test_prefix_length} ${HTTP_BAD_REQUEST} 227 ${ipv6_multi_short} ${test_prefix_length} ${HTTP_BAD_REQUEST} 228 229 230Configure IPv6 Static Default Gateway And Verify 231 [Documentation] Configure IPv6 static default gateway and verify. 232 [Tags] Configure_IPv6_Static_Default_Gateway_And_Verify 233 [Template] Configure IPv6 Static Default Gateway On BMC 234 235 # static_def_gw prefix length valid_status_code 236 ${ipv6_gw_addr} ${prefix_length_def} ${HTTP_OK} 237 ${invalid_staticv6_gateway} ${test_prefix_length} ${HTTP_BAD_REQUEST} 238 239 240Modify Static Default Gateway And Verify 241 [Documentation] Modify static default gateway and verify. 242 [Tags] Modify_Static_Default_Gateway_And_Verify 243 [Setup] Configure IPv6 Static Default Gateway On BMC ${ipv6_gw_addr} ${prefix_length_def} 244 245 Modify IPv6 Static Default Gateway On BMC ${test_ipv6_addr1} ${prefix_length_def} ${HTTP_OK} ${ipv6_gw_addr} 246 247 248Delete IPv6 Static Default Gateway And Verify 249 [Documentation] Delete IPv6 static default gateway and verify. 250 [Tags] Delete_IPv6_Static_Default_Gateway_And_Verify 251 [Setup] Configure IPv6 Static Default Gateway On BMC ${ipv6_gw_addr} ${prefix_length_def} 252 253 Delete IPv6 Static Default Gateway ${ipv6_gw_addr} 254 255 256Verify Coexistence Of Linklocalv6 And Static IPv6 On BMC 257 [Documentation] Verify linklocalv6 And static IPv6 both exist. 258 [Tags] Verify_Coexistence_Of_Linklocalv6_And_Static_IPv6_On_BMC 259 [Setup] Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} 260 [Teardown] Delete IPv6 Address ${test_ipv6_addr} 261 262 Check Coexistence Of Linklocalv6 And Static IPv6 263 264 265Verify IPv6 Linklocal Address Is In Correct Format 266 [Documentation] Verify linklocal address has network part as fe80 and 267 ... host part as EUI64. 268 [Tags] Verify_IPv6_Linklocal_Address_Is_In_Correct_Format 269 270 Check If Linklocal Address Is In Correct Format 271 272 273Verify BMC Gets SLAAC Address On Enabling SLAAC 274 [Documentation] On enabling SLAAC verify SLAAC address comes up. 275 [Tags] Verify_BMC_Gets_SLAAC_Address_On_Enabling_SLAAC 276 [Setup] Set SLAAC Configuration State And Verify ${False} 277 278 Set SLAAC Configuration State And Verify ${True} 279 Sleep ${NETWORK_TIMEOUT} 280 Check BMC Gets SLAAC Address 281 282 283Verify Enable And Disable SLAAC On Both Interfaces 284 [Documentation] Verify enable and disable SLAAC on both the interfaces. 285 [Tags] Verify_Enable_And_Disable_SLAAC_On_Both_Interfaces 286 [Setup] Get The Initial SLAAC Settings 287 [Template] Set And Verify SLAAC Property On Both Interfaces 288 [Teardown] Run Keywords Set SLAAC Configuration State And Verify ${slaac_channel_1} [${HTTP_OK}] ${1} 289 ... AND Set SLAAC Configuration State And Verify ${slaac_channel_2} [${HTTP_OK}] ${2} 290 291 # slaac_eth0 slaac_eth1 292 ${True} ${True} 293 ${True} ${False} 294 ${False} ${True} 295 ${False} ${False} 296 297 298Configure And Validate DHCPv6 Settings On Both Network Interfaces 299 [Documentation] Configure and validate the DHCPv6 enable/disable settings 300 ... on both network interfaces. 301 [Tags] Configure_And_Validate_DHCPv6_Settings_On_Both_Network_Interfaces 302 [Setup] Get The Initial DHCPv6 Settings 303 [Template] Set And Verify DHCPv6 Property On Both Interfaces 304 [Teardown] Run Keywords Set And Verify DHCPv6 Property ${dhcpv6_channel_1} ${1} AND 305 ... Set And Verify DHCPv6 Property ${dhcpv6_channel_2} ${2} 306 307 # DHCPv6_eth0 DHCPv6_eth1 308 Enabled Enabled 309 Enabled Disabled 310 Disabled Enabled 311 Disabled Disabled 312 313 314Verify Autoconfig Is Present On Ethernet Interface 315 [Documentation] Verify autoconfig is present on ethernet interface. 316 [Tags] Verify_Autoconfig_Is_Present_On_Ethernet_Interface 317 318 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 319 Should Contain ${resp.dict} StatelessAddressAutoConfig 320 321 322Verify Interface ID Of SLAAC And LinkLocal Addresses Are Same 323 [Documentation] Validate interface id of SLAAC and link-local addresses are same. 324 [Tags] Verify_Interface_ID_Of_SLAAC_And_LinkLocal_Addresses_Are_Same 325 326 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal 327 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}= Get Address Origin List And Address For Type SLAAC 328 329 ${linklocal_interface_id}= Get Interface ID Of IPv6 ${ipv6_linklocal_addr} 330 ${slaac_interface_id}= Get Interface ID Of IPv6 ${ipv6_slaac_addr} 331 332 Should Be Equal ${linklocal_interface_id} ${slaac_interface_id} 333 334 335Verify Persistency Of Link Local IPv6 On BMC Reboot 336 [Documentation] Verify persistency of link local on BMC reboot. 337 [Tags] Verify_Persistency_Of_Link_Local_IPv6_On_BMC_Reboot 338 339 # Capturing the linklocal before reboot. 340 @{ipv6_address_origin_list} ${linklocal_addr_before_reboot}= 341 ... Get Address Origin List And Address For Type LinkLocal 342 343 # Rebooting BMC. 344 Redfish OBMC Reboot (off) stack_mode=skip 345 346 @{ipv6_address_origin_list} ${linklocal_addr_after_reboot}= 347 ... Get Address Origin List And Address For Type LinkLocal 348 349 # Verifying the linklocal must be the same before and after reboot. 350 Should Be Equal ${linklocal_addr_before_reboot} ${linklocal_addr_after_reboot} 351 ... msg=IPv6 Linklocal address has changed after reboot. 352 353 354Modify MAC and Verify BMC Reinitializing Linklocal 355 [Documentation] Modify MAC and verify BMC reinitializing linklocal. 356 [Tags] Modify_MAC_and_Verify_BMC_Reinitializing_Linklocal 357 [Teardown] Configure MAC Settings ${original_address} 358 359 ${original_address}= Get BMC MAC Address 360 @{ipv6_addressorigin_list} ${ipv6_before_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal 361 362 # Modify MAC Address Of Ethernet Interface. 363 Configure MAC Settings ${new_mac_addr} 364 Sleep 30s 365 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 366 @{ipv6_addressorigin_list} ${ipv6_linklocal_after_addr}= Get Address Origin List And Address For Type LinkLocal 367 368 # Verify whether the linklocal has changed and is in the the correct format. 369 Check If Linklocal Address Is In Correct Format 370 Should Not Be Equal ${ipv6_before_linklocal_addr} ${ipv6_linklocal_after_addr} 371 372 373Add Multiple IPv6 Address And Verify 374 [Documentation] Add multiple IPv6 address and verify. 375 [Tags] Add_Multiple_IPv6_Address_And_Verify 376 [Teardown] Run Keywords 377 ... Delete IPv6 Address ${test_ipv6_addr} AND Delete IPv6 Address ${test_ipv6_addr1} 378 ... AND Test Teardown Execution 379 380 Configure Multiple IPv6 Address on BMC ${test_prefix_length} 381 382 383Verify Coexistence Of Static IPv6 And SLAAC On BMC 384 [Documentation] Verify static IPv6 And SLAAC both coexist. 385 [Tags] Verify_Coexistence_Of_Static_IPv6_And_SLAAC_On_BMC 386 [Setup] Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} 387 Set SLAAC Configuration State And Verify ${True} 388 [Teardown] Delete IPv6 Address ${test_ipv6_addr} 389 390 Sleep ${NETWORK_TIMEOUT}s 391 392 Check Coexistence Of Static IPv6 And SLAAC 393 394 395Verify Coexistence Of Link Local And DHCPv6 On BMC 396 [Documentation] Verify link local And dhcpv6 both coexist. 397 [Tags] Verify_Coexistence_Of_Link_Local_And_DHCPv6_On_BMC 398 [Setup] Set DHCPv6 Property Enabled ${2} 399 400 Sleep ${NETWORK_TIMEOUT}s 401 402 Check Coexistence Of Link Local And DHCPv6 403 404 405Verify Coexistence Of Link Local And SLAAC On BMC 406 [Documentation] Verify link local And SLAAC both coexist. 407 [Tags] Verify_Coexistence_Of_Link_Local_And_SLAAC_On_BMC 408 [Setup] Set SLAAC Configuration State And Verify ${True} 409 410 Sleep ${NETWORK_TIMEOUT}s 411 412 Check Coexistence Of Link Local And SLAAC 413 414 415Verify Coexistence Of All IPv6 Type Addresses On BMC 416 [Documentation] Verify coexistence of link local, static, DHCPv6 and SLAAC ipv6 addresses. 417 [Tags] Verify_Coexistence_Of_All_IPv6_Type_Addresses_On_BMC 418 [Setup] Run Keywords Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} 419 ... AND Get The Initial DHCPv6 Setting On Each Interface ${1} 420 ... AND Set And Verify DHCPv6 Property Enabled 421 ... AND Get The Initial SLAAC Setting On Each Interface ${1} 422 ... AND Set SLAAC Configuration State And Verify ${True} 423 [Teardown] Run Keywords Delete IPv6 Address ${test_ipv6_addr} 424 ... AND Set And Verify DHCPv6 Property ${dhcpv6_channel_1} ${1} 425 ... AND Set SLAAC Configuration State And Verify ${slaac_channel_1} [${HTTP_OK}] ${1} 426 427 Sleep ${NETWORK_TIMEOUT}s 428 429 # Verify link local, static, DHCPv6 and SLAAC ipv6 addresses coexist. 430 Verify The Coexistence Of The Address Type LinkLocal Static DHCPv6 SLAAC 431 432 433Configure Link Local IPv6 Address And Verify 434 [Documentation] Configure link local IPv6 address and verify. 435 [Tags] Configure_Link_Local_IPv6_Address_And_Verify 436 437 Configure IPv6 Address On BMC ${link_local_addr} ${link_local_prefix_len} 438 439 # Verify the address origin contains link local. 440 @{ipv6_address_origin_list} ${ipv6_link_local_addr}= 441 ... Get Address Origin List And Address For Type LinkLocal 442 443 ${count}= Evaluate ${ipv6_address_origin_list}.count("LinkLocal") 444 445 Should Be Equal As Integers ${count} 2 446 447 448Configure Valid IPv6 Address And Verify 449 [Documentation] Configure valid IPv6 address and verify it is getting added as expected format. 450 [Tags] Configure_Valid_IPv6_Address_And_Verify 451 [Teardown] Run Keywords 452 ... Delete IPv6 Address ${ipv6_zero_compression} 453 ... AND Delete IPv6 Address ${ipv6_eliminate_zero} 454 ... AND Delete IPv6 Address ${ipv6_eliminate_zero1} 455 ... AND Test Teardown Execution 456 [Template] Configure IPv6 Address On BMC 457 458 # IPv6 address prefix length IPv6 address verified. 459 ${ipv6_contigeous_zero} ${test_prefix_length} ${ipv6_zero_compression} 460 ${ipv6_firsthextet_zero} ${test_prefix_length} ${ipv6_eliminate_zero1} 461 ${ipv6_leading_zero} ${test_prefix_length} ${ipv6_eliminate_zero} 462 463 464Verify Coexistence Of IPv6 Addresses Type Combination On BMC 465 [Documentation] Verify coexistence of IPv6 addresses type combination on BMC. 466 [Tags] Verify_Coexistence_Of_IPv6_Addresses_Type_Combination_On_BMC 467 [Setup] Run Keywords 468 ... Get The Initial DHCPv6 Setting On Each Interface ${1} 469 ... AND Get The Initial SLAAC Setting On Each Interface ${1} 470 [Teardown] Run Keywords 471 ... Set And Verify DHCPv6 Property ${dhcpv6_channel_1} ${1} 472 ... AND Set SLAAC Configuration State And Verify ${slaac_channel_1} [${HTTP_OK}] ${1} 473 [Template] Verify IPv6 Addresses Coexist 474 475 # type1 type2. 476 Static DHCPv6 477 DHCPv6 SLAAC 478 SLAAC Static 479 Static Static 480 481 482Verify Eth0 Static IPv4 Functions Properly In The Presence Of DHCPv6 483 [Documentation] Verify eth0 static IPv4 functions properly in the presence of DHCPv6. 484 [Tags] Verify_Eth0_Static_IPv4_Functions_Properly_In_The_Presence_Of_DHCPv6 485 [Setup] Set And Verify DHCPv6 Property Enabled 486 487 # Verify that on enabling DHCPv6 other configurations are not impacted. 488 Sleep ${NETWORK_TIMEOUT} 489 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 490 491 Verify All The Addresses Are Intact ${1} 492 Verify All The Addresses Are Intact ${2} 493 ... ${eth1_initial_ipv4_addressorigin_list} ${eth1_initial_ipv4_addr_list} 494 495 496Disable And Verify AutoConfig On Both Interfaces When AutoConfig Enabled 497 [Documentation] Enable and then disable both eth0 & eth1 with auto-config and 498 ... check both interfaces gets disabled with SLAAC. 499 [Tags] Disable_And_Verify_AutoConfig_On_Both_Interfaces_When_AutoConfig_Enabled 500 [Setup] Set And Verify SLAAC Property On Both Interfaces ${True} ${True} 501 [Template] Set And Verify SLAAC Property On Both Interfaces 502 503 # slaac_eth0 slaac_eth1. 504 ${False} ${False} 505 506 507Verify Eth1 DHCPv4 Functions Properly In The Presence Of Static IPv6 508 [Documentation] Verify eth1 dhcpv4 functions properly in the presence of Static IPv6. 509 [Tags] Verify_Eth1_DHCPv4_Functions_Properly_In_The_Presence_Of_Static_IPv6 510 [Setup] Run Keywords 511 ... Set DHCPEnabled To Enable Or Disable True eth1 512 ... AND Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} ${None} ${2} 513 514 # Verify presence of static IPv6 address and origin. 515 @{ipv6_address_origin_list} ${static_ipv6_addr}= 516 ... Get Address Origin List And Address For Type Static ${2} 517 Should Contain ${ipv6_address_origin_list} Static 518 Should Not Be Empty ${static_ipv6_addr} msg=${test_ipv6_addr} address is not present 519 520 # Verify eth1 DHCPv4 is enabled. 521 ${DHCPEnabled}= Get IPv4 DHCP Enabled Status ${2} 522 Should Be Equal ${DHCPEnabled} ${True} 523 524 # Verify presence of DHCPv4 address origin. 525 @{ipv4_addressorigin_list} ${ipv4_addr_list}= 526 ... Get Address Origin List And IPv4 or IPv6 Address IPv4Addresses ${2} 527 ${ipv4_addressorigin_list}= Evaluate sum(${ipv4_addressorigin_list}, []) 528 Should Contain ${ipv4_addressorigin_list} DHCP 529 530 # Verify static is not present in address origin when DHPCv4 enabled. 531 List Should Not Contain Value ${ipv4_addressorigin_list} Static 532 533 534*** Keywords *** 535 536Suite Setup Execution 537 [Documentation] Do suite setup execution. 538 539 Redfish.Login 540 ${active_channel_config}= Get Active Channel Config 541 Set Suite Variable ${active_channel_config} 542 543 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 544 545 Set Suite variable ${ethernet_interface} 546 547 # Get initial IPv4 and IPv6 addresses and address origins for eth0. 548 ${initial_ipv4_addressorigin_list} ${initial_ipv4_addr_list}= Get Address Origin List And IPv4 or IPv6 Address IPv4Addresses 549 ${initial_ipv6_addressorigin_list} ${initial_ipv6_addr_list}= Get Address Origin List And IPv4 or IPv6 Address IPv6Addresses 550 551 Set Suite Variable ${initial_ipv4_addressorigin_list} 552 Set Suite Variable ${initial_ipv4_addr_list} 553 Set Suite Variable ${initial_ipv6_addressorigin_list} 554 Set Suite Variable ${initial_ipv6_addr_list} 555 556 # Get initial IPv4 and IPv6 addresses and address origins for eth1. 557 ${eth1_initial_ipv4_addressorigin_list} ${eth1_initial_ipv4_addr_list}= 558 ... Get Address Origin List And IPv4 or IPv6 Address IPv4Addresses ${2} 559 ${eth1_initial_ipv6_addressorigin_list} ${eth1_initial_ipv6_addr_list}= 560 ... Get Address Origin List And IPv4 or IPv6 Address IPv6Addresses ${2} 561 Set Suite Variable ${eth1_initial_ipv4_addressorigin_list} 562 Set Suite Variable ${eth1_initial_ipv4_addr_list} 563 Set Suite Variable ${eth1_initial_ipv6_addressorigin_list} 564 Set Suite Variable ${eth1_initial_ipv6_addr_list} 565 566 567Test Setup Execution 568 [Documentation] Test setup execution. 569 570 @{ipv6_network_configurations}= Get IPv6 Network Configuration 571 Set Test Variable @{ipv6_network_configurations} 572 573 # Get BMC IPv6 address and prefix length. 574 ${ipv6_data}= Get BMC IPv6 Info 575 Set Test Variable ${ipv6_data} 576 577 578Test Teardown Execution 579 [Documentation] Test teardown execution. 580 581 FFDC On Test Case Fail 582 583 584Get IPv6 Network Configuration 585 [Documentation] Get Ipv6 network configuration. 586 [Arguments] ${channel_number}=${CHANNEL_NUMBER} 587 588 # Description of argument(s): 589 # channel_number Channel number (1 - eth0 and 2 - eth1). 590 591 # Sample output: 592 # { 593 # "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/eth0", 594 # "@odata.type": "#EthernetInterface.v1_4_1.EthernetInterface", 595 # "DHCPv4": { 596 # "DHCPEnabled": false, 597 # "UseDNSServers": false, 598 # "UseDomainName": true, 599 # "UseNTPServers": false 600 # }, 601 # "DHCPv6": { 602 # "OperatingMode": "Disabled", 603 # "UseDNSServers": false, 604 # "UseDomainName": true, 605 # "UseNTPServers": false 606 # }, 607 # "Description": "Management Network Interface", 608 # "FQDN": "localhost", 609 # "HostName": "localhost", 610 # "IPv4Addresses": [ 611 # { 612 # "Address": "xx.xx.xx.xx", 613 # "AddressOrigin": "Static", 614 # "Gateway": "xx.xx.xx.1", 615 # "SubnetMask": "xx.xx.xx.0" 616 # }, 617 # { 618 # "Address": "169.254.xx.xx", 619 # "AddressOrigin": "IPv4LinkLocal", 620 # "Gateway": "0.0.0.0", 621 # "SubnetMask": "xx.xx.0.0" 622 # }, 623 # ], 624 # "IPv4StaticAddresses": [ 625 # { 626 # "Address": "xx.xx.xx.xx", 627 # "AddressOrigin": "Static", 628 # "Gateway": "xx.xx.xx.1", 629 # "SubnetMask": "xx.xx.0.0" 630 # } 631 # } 632 # ], 633 # "IPv6AddressPolicyTable": [], 634 # "IPv6Addresses": [ 635 # { 636 # "Address": "fe80::xxxx:xxxx:xxxx:xxxx", 637 # "AddressOrigin": "LinkLocal", 638 # "AddressState": null, 639 # "PrefixLength": xx 640 # } 641 # ], 642 # "IPv6DefaultGateway": "", 643 # "IPv6StaticAddresses": [ 644 # { "Address": "xxxx:xxxx:xxxx:xxxx::xxxx", 645 # "AddressOrigin": "Static", 646 # "AddressState": null, 647 # "PrefixLength": xxx 648 # } 649 # ], 650 # "Id": "eth0", 651 # "InterfaceEnabled": true, 652 # "LinkStatus": "LinkUp", 653 # "MACAddress": "xx:xx:xx:xx:xx:xx", 654 # "Name": "Manager Ethernet Interface", 655 # "NameServers": [], 656 # "SpeedMbps": 0, 657 # "StaticNameServers": [], 658 # "Status": { 659 # "Health": "OK", 660 # "HealthRollup": "OK", 661 # "State": "Enabled" 662 # }, 663 # "VLANs": { 664 # "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/eth0/VLANs" 665 666 667 ${active_channel_config}= Get Active Channel Config 668 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${active_channel_config['${channel_number}']['name']} 669 670 @{ipv6_network_configurations}= Get From Dictionary ${resp.dict} IPv6StaticAddresses 671 RETURN @{ipv6_network_configurations} 672 673 674Verify IPv6 And PrefixLength 675 [Documentation] Verify IPv6 address and prefix length on BMC. 676 [Arguments] ${ipv6_addr} ${prefix_len} 677 678 # Description of the argument(s): 679 # ipv6_addr IPv6 address to be verified. 680 # prefix_len PrefixLength value to be verified. 681 682 # Catenate IPv6 address and its prefix length. 683 ${ipv6_with_prefix}= Catenate ${ipv6_addr}/${prefix_len} 684 685 # Get IPv6 address details on BMC using IP command. 686 @{ip_data}= Get BMC IPv6 Info 687 688 # Verify if IPv6 and prefix length is configured on BMC. 689 690 Should Contain ${ip_data} ${ipv6_with_prefix} 691 ... msg=IPv6 and prefix length pair does not exist. 692 693Configure IPv6 Address On BMC 694 [Documentation] Add IPv6 Address on BMC. 695 [Arguments] ${ipv6_addr1} ${prefix_len} ${ipv6_addr2}=${None} 696 ... ${channel_number}=${CHANNEL_NUMBER} 697 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_NO_CONTENT}] 698 699 # Description of argument(s): 700 # ipv6_addr1 IPv6 address to be added (e.g. "2001:0022:0033::0111"). 701 # ipv6_addr2 IPv6 address to be Verified (e.g. "2001:22:33::111"). 702 # prefix_len Prefix length for the IPv6 to be added 703 # (e.g. "64"). 704 # channel_number Channel number (1 - eth0 and 2 - eth1). 705 # valid_status_codes Expected return code from patch operation 706 # (e.g. "200"). 707 708 ${prefix_length}= Convert To Integer ${prefix_len} 709 ${empty_dict}= Create Dictionary 710 ${ipv6_data}= Create Dictionary Address=${ipv6_addr1} 711 ... PrefixLength=${prefix_length} 712 713 ${patch_list}= Create List 714 715 # Get existing static IPv6 configurations on BMC. 716 ${ipv6_network_configurations}= Get IPv6 Network Configuration ${channel_number} 717 ${num_entries}= Get Length ${ipv6_network_configurations} 718 719 FOR ${INDEX} IN RANGE 0 ${num_entries} 720 Append To List ${patch_list} ${empty_dict} 721 END 722 723 # We need not check for existence of IPv6 on BMC while adding. 724 Append To List ${patch_list} ${ipv6_data} 725 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list} 726 727 ${active_channel_config}= Get Active Channel Config 728 ${ethernet_interface}= Set Variable ${active_channel_config['${channel_number}']['name']} 729 730 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data} 731 ... valid_status_codes=${valid_status_codes} 732 733 IF ${valid_status_codes} != [${HTTP_OK}, ${HTTP_NO_CONTENT}] 734 Fail msg=Static address not added correctly 735 END 736 737 # Note: Network restart takes around 15-18s after patch request processing. 738 Sleep ${NETWORK_TIMEOUT}s 739 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 740 741 # Verify ip address on CLI. 742 IF '${ipv6_addr2}' != '${None}' 743 Verify IPv6 And PrefixLength ${ipv6_addr2} ${prefix_len} 744 ELSE 745 Verify IPv6 And PrefixLength ${ipv6_addr1} ${prefix_len} 746 END 747 748 # Verify if existing static IPv6 addresses still exist. 749 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations} 750 Verify IPv6 On BMC ${ipv6_network_configuration['Address']} 751 END 752 753 #Verify redfish and CLI data matches. 754 Validate IPv6 Network Config On BMC 755 756 757Configure Multiple IPv6 Address on BMC 758 [Documentation] Add multiple IPv6 address on BMC. 759 [Arguments] ${prefix_len} 760 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_NO_CONTENT}] 761 762 # Description of argument(s): 763 # prefix_len Prefix length for the IPv6 to be added 764 # (e.g. "64"). 765 # valid_status_codes Expected return code from patch operation 766 # (e.g. "200"). 767 768 ${ipv6_list}= Create List ${test_ipv6_addr} ${test_ipv6_addr1} 769 ${prefix_length}= Convert To Integer ${prefix_len} 770 ${empty_dict}= Create Dictionary 771 ${patch_list}= Create List 772 773 # Get existing static IPv6 configurations on BMC. 774 ${ipv6_network_configurations}= Get IPv6 Network Configuration 775 ${num_entries}= Get Length ${ipv6_network_configurations} 776 777 FOR ${INDEX} IN RANGE 0 ${num_entries} 778 Append To List ${patch_list} ${empty_dict} 779 END 780 781 # We need not check for existence of IPv6 on BMC while adding. 782 FOR ${ipv6_addr} IN @{ipv6_list} 783 ${ipv6_data}= Create Dictionary Address=${ipv6_addr} PrefixLength=${prefix_length} 784 Append To List ${patch_list} ${ipv6_data} 785 END 786 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list} 787 788 ${active_channel_config}= Get Active Channel Config 789 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 790 791 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data} 792 ... valid_status_codes=${valid_status_codes} 793 794 IF ${valid_status_codes} != [${HTTP_OK}, ${HTTP_NO_CONTENT}] 795 Fail msg=Static address not added correctly 796 END 797 798 # Note: Network restart takes around 15-18s after patch request processing. 799 Sleep ${NETWORK_TIMEOUT}s 800 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 801 802 # Verify newly added ip address on CLI. 803 FOR ${ipv6_addr} IN @{ipv6_list} 804 Verify IPv6 And PrefixLength ${ipv6_addr} ${prefix_len} 805 END 806 807 # Verify if existing static IPv6 addresses still exist. 808 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations} 809 Verify IPv6 On BMC ${ipv6_network_configuration['Address']} 810 END 811 812 # Get the latest ipv6 network configurations. 813 @{ipv6_network_configurations}= Get IPv6 Network Configuration 814 815 # Verify newly added ip address on BMC. 816 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations} 817 Should Contain Match ${ipv6_list} ${ipv6_network_configuration['Address']} 818 END 819 820 Validate IPv6 Network Config On BMC 821 822 823Validate IPv6 Network Config On BMC 824 [Documentation] Check that IPv6 network info obtained via redfish matches info 825 ... obtained via CLI. 826 827 @{ipv6_network_configurations}= Get IPv6 Network Configuration 828 ${ipv6_data}= Get BMC IPv6 Info 829 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations} 830 Should Contain Match ${ipv6_data} ${ipv6_network_configuration['Address']}/* 831 ... msg=IPv6 address does not exist. 832 END 833 834 835Delete IPv6 Address 836 [Documentation] Delete IPv6 address of BMC. 837 [Arguments] ${ipv6_addr} 838 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}] 839 ... ${channel_number}=${CHANNEL_NUMBER} 840 841 # Description of argument(s): 842 # ipv6_addr IPv6 address to be deleted (e.g. "2001:1234:1234:1234::1234"). 843 # channel_number Channel number (1 - eth0 and 2 - eth1). 844 # valid_status_codes Expected return code from patch operation 845 # (e.g. "200"). See prolog of rest_request 846 # method in redfish_plus.py for details. 847 848 ${empty_dict}= Create Dictionary 849 ${patch_list}= Create List 850 851 @{ipv6_network_configurations}= Get IPv6 Network Configuration ${channel_number} 852 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations} 853 IF '${ipv6_network_configuration['Address']}' == '${ipv6_addr}' 854 Append To List ${patch_list} ${null} 855 ELSE 856 Append To List ${patch_list} ${empty_dict} 857 END 858 END 859 860 ${ip_found}= Run Keyword And Return Status List Should Contain Value 861 ... ${patch_list} ${null} msg=${ipv6_addr} does not exist on BMC 862 Pass Execution If ${ip_found} == ${False} ${ipv6_addr} does not exist on BMC 863 864 # Run patch command only if given IP is found on BMC 865 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list} 866 867 ${active_channel_config}= Get Active Channel Config 868 ${ethernet_interface}= Set Variable ${active_channel_config['${channel_number}']['name']} 869 870 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data} 871 ... valid_status_codes=${valid_status_codes} 872 873 # Note: Network restart takes around 15-18s after patch request processing 874 Sleep ${NETWORK_TIMEOUT}s 875 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 876 877 # IPv6 address that is deleted should not be there on BMC. 878 ${delete_status}= Run Keyword And Return Status Verify IPv6 On BMC ${ipv6_addr} 879 IF '${valid_status_codes}' == '[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}]' 880 Should Be True '${delete_status}' == '${False}' 881 ELSE 882 Should Be True '${delete_status}' == '${True}' 883 END 884 885 Validate IPv6 Network Config On BMC 886 887 888Modify IPv6 Address 889 [Documentation] Modify and verify IPv6 address of BMC. 890 [Arguments] ${ipv6} ${new_ipv6} ${prefix_len} 891 ... ${valid_status_codes}=[${HTTP_OK}, ${HTTP_NO_CONTENT}] 892 893 # Description of argument(s): 894 # ipv6 IPv6 address to be replaced (e.g. "2001:AABB:CCDD::AAFF"). 895 # new_ipv6 New IPv6 address to be configured. 896 # prefix_len Prefix length value (Range 1 to 128). 897 # valid_status_codes Expected return code from patch operation 898 # (e.g. "200", "201"). 899 900 ${empty_dict}= Create Dictionary 901 ${patch_list}= Create List 902 ${prefix_length}= Convert To Integer ${prefix_len} 903 ${ipv6_data}= Create Dictionary 904 ... Address=${new_ipv6} PrefixLength=${prefix_length} 905 906 # Sample IPv6 network configurations: 907 # "IPv6AddressPolicyTable": [], 908 # "IPv6Addresses": [ 909 # { 910 # "Address": "X002:db8:0:2::XX0", 911 # "AddressOrigin": "DHCPv6", 912 # "PrefixLength": 128 913 # }, 914 # { 915 # "Address": “X002:db8:0:2:a94:XXff:fe82:XXXX", 916 # "AddressOrigin": "SLAAC", 917 # "PrefixLength": 64 918 # }, 919 # { 920 # "Address": “Y002:db8:0:2:a94:efff:fe82:5000", 921 # "AddressOrigin": "Static", 922 # "PrefixLength": 56 923 # }, 924 # { 925 # "Address": “Z002:db8:0:2:a94:efff:fe82:5000", 926 # "AddressOrigin": "Static", 927 # "PrefixLength": 56 928 # }, 929 # { 930 # "Address": “Xe80::a94:efff:YYYY:XXXX", 931 # "AddressOrigin": "LinkLocal", 932 # "PrefixLength": 64 933 # }, 934 # { 935 # "Address": “X002:db8:1:2:eff:233:fee:546", 936 # "AddressOrigin": "Static", 937 # "PrefixLength": 56 938 # } 939 # ], 940 # "IPv6DefaultGateway": “XXXX::ab2e:80fe:87df:XXXX”, 941 # "IPv6StaticAddresses": [ 942 # { 943 # "Address": “X002:db8:0:2:a94:efff:fe82:5000", 944 # "PrefixLength": 56 945 # }, 946 # { 947 # "Address": “Y002:db8:0:2:a94:efff:fe82:5000", 948 # "PrefixLength": 56 949 # }, 950 # { 951 # "Address": “Z002:db8:1:2:eff:233:fee:546", 952 # "PrefixLength": 56 953 # } 954 # ], 955 # "IPv6StaticDefaultGateways": [], 956 957 # Find the position of IPv6 address to be modified. 958 @{ipv6_network_configurations}= Get IPv6 Network Configuration 959 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations} 960 IF '${ipv6_network_configuration['Address']}' == '${ipv6}' 961 Append To List ${patch_list} ${ipv6_data} 962 ELSE 963 Append To List ${patch_list} ${empty_dict} 964 END 965 END 966 967 # Modify the IPv6 address only if given IPv6 is found 968 ${ip_found}= Run Keyword And Return Status List Should Contain Value 969 ... ${patch_list} ${ipv6_data} msg=${ipv6} does not exist on BMC 970 Pass Execution If ${ip_found} == ${False} ${ipv6} does not exist on BMC 971 972 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list} 973 974 ${active_channel_config}= Get Active Channel Config 975 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 976 977 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 978 ... body=&{data} valid_status_codes=${valid_status_codes} 979 980 # Note: Network restart takes around 15-18s after patch request processing. 981 Sleep ${NETWORK_TIMEOUT}s 982 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 983 984 # Verify if new IPv6 address is configured on BMC. 985 Verify IPv6 On BMC ${new_ipv6} 986 987 # Verify if old IPv6 address is erased. 988 ${cmd_status}= Run Keyword And Return Status 989 ... Verify IPv6 On BMC ${ipv6} 990 Should Be Equal ${cmd_status} ${False} msg=Old IPv6 address is not deleted. 991 992 Validate IPv6 Network Config On BMC 993 994 995Set SLAAC Configuration State And Verify 996 [Documentation] Set SLAAC configuration state. 997 [Arguments] ${slaac_state} ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}] 998 ... ${channel_number}=${CHANNEL_NUMBER} ${is_slaac_verify_state}=${True} 999 1000 # Description of argument(s): 1001 # slaac_state SLAAC state('True' or 'False'). 1002 # valid_status_code Expected valid status codes. 1003 # channel_number Channel number 1(eth0) or 2(eth1). 1004 # is_slaac_verify_state Flag to check verification is required. 1005 1006 ${active_channel_config}= Get Active Channel Config 1007 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 1008 1009 ${data}= Set Variable If ${slaac_state} == ${False} ${DISABLE_SLAAC} ${ENABLE_SLAAC} 1010 ${resp}= Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 1011 ... body=${data} valid_status_codes=${valid_status_codes} 1012 IF ${is_slaac_verify_state} 1013 Verify SLAAC Property ${slaac_state} ${channel_number} 1014 END 1015 1016 1017Verify SLAAC Property 1018 [Documentation] Verify SLAAC property. 1019 [Arguments] ${slaac_state} ${channel_number}=${CHANNEL_NUMBER} 1020 1021 # Description of argument(s): 1022 # slaac_state SLAAC state('True' or 'False'). 1023 # channel_number Channel number 1(eth0) or 2(eth1). 1024 1025 # Verify SLAAC is set correctly. 1026 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 1027 ${slaac_verify}= Get From Dictionary ${resp.dict} StatelessAddressAutoConfig 1028 1029 IF '${slaac_verify['IPv6AutoConfigEnabled']}' != '${slaac_state}' 1030 Fail msg=SLAAC not set properly. 1031 END 1032 1033 1034Set And Verify DHCPv6 Property 1035 [Documentation] Set DHCPv6 property and verify. 1036 [Arguments] ${dhcpv6_operating_mode}=${Disabled} ${channel_number}=${CHANNEL_NUMBER} 1037 1038 # Description of argument(s): 1039 # dhcpv6_operating_mode Enabled if user wants to enable DHCPv6('Enabled' or 'Disabled'). 1040 # channel_number Channel number 1 or 2. 1041 1042 Set DHCPv6 Property ${dhcpv6_operating_mode} ${channel_number} 1043 Verify DHCPv6 Property ${dhcpv6_operating_mode} ${channel_number} 1044 1045 1046Set DHCPv6 Property 1047 [Documentation] Set DHCPv6 attribute is enables or disabled. 1048 [Arguments] ${dhcpv6_operating_mode}=${Disabled} ${channel_number}=${CHANNEL_NUMBER} 1049 1050 # Description of argument(s): 1051 # dhcpv6_operating_mode Enabled if user wants to enable DHCPv6('Enabled' or 'Disabled'). 1052 # channel_number Channel number 1 or 2. 1053 1054 ${data}= Set Variable If '${dhcpv6_operating_mode}' == 'Disabled' ${DISABLE_DHCPv6} ${ENABLE_DHCPv6} 1055 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 1056 1057 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 1058 ... body=${data} valid_status_codes=[${HTTP_OK},${HTTP_NO_CONTENT}] 1059 1060 1061Verify DHCPv6 Property 1062 [Documentation] Verify DHCPv6 settings is enabled or disabled. 1063 [Arguments] ${dhcpv6_operating_mode} ${channel_number}=${CHANNEL_NUMBER} 1064 1065 # Description of Argument(s): 1066 # dhcpv6_operating_mode Enable/ Disable DHCPv6. 1067 # channel_number Channel number 1 or 2. 1068 1069 ${ethernet_interface}= Set Variable ${active_channel_config['${channel_number}']['name']} 1070 1071 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 1072 ${dhcpv6_verify}= Get From Dictionary ${resp.dict} DHCPv6 1073 1074 Should Be Equal '${dhcpv6_verify['OperatingMode']}' '${dhcpv6_operating_mode}' 1075 1076 Sleep 30s 1077 1078 @{ipv6_addressorigin_list} ${ipv6_dhcpv6_addr}= 1079 ... Get Address Origin List And IPv4 or IPv6 Address IPv6Addresses ${channel_number} 1080 1081 IF "${dhcpv6_operating_mode}" == "Enabled" 1082 @{ipv6_addressorigin_list} ${ipv6_dhcpv6_addr}= 1083 ... Get Address Origin List And Address For Type DHCPv6 ${channel_number} 1084 Should Not Be Empty ${ipv6_dhcpv6_addr} msg=DHCPv6 must be present. 1085 ELSE 1086 Should Not Contain ${ipv6_addressorigin_list} DHCPv6 1087 END 1088 1089 1090 1091Get IPv6 Static Default Gateway 1092 [Documentation] Get IPv6 static default gateway. 1093 1094 ${active_channel_config}= Get Active Channel Config 1095 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${active_channel_config['${CHANNEL_NUMBER}']['name']} 1096 1097 @{ipv6_static_defgw_configurations}= Get From Dictionary ${resp.dict} IPv6StaticDefaultGateways 1098 RETURN @{ipv6_static_defgw_configurations} 1099 1100 1101Configure IPv6 Static Default Gateway On BMC 1102 [Documentation] Configure IPv6 static default gateway on BMC. 1103 [Arguments] ${ipv6_gw_addr} ${prefix_length_def} 1104 ... ${valid_status_codes}=${HTTP_OK} 1105 1106 # Description of argument(s): 1107 # ipv6_gw_addr IPv6 Static Default Gateway address to be configured. 1108 # prefix_len_def Prefix length value (Range 1 to 128). 1109 # valid_status_codes Expected return code from patch operation 1110 # (e.g. "200", "204".) 1111 1112 # Prefix Length is passed as None. 1113 IF '${prefix_length_def}' == '${None}' 1114 ${ipv6_gw}= Create Dictionary Address=${ipv6_gw_addr} 1115 ELSE 1116 ${ipv6_gw}= Create Dictionary Address=${ipv6_gw_addr} Prefix Length=${prefix_length_def} 1117 END 1118 1119 ${ipv6_static_def_gw}= Get IPv6 Static Default Gateway 1120 1121 ${num_entries}= Get Length ${ipv6_static_def_gw} 1122 1123 ${patch_list}= Create List 1124 ${empty_dict}= Create Dictionary 1125 1126 FOR ${INDEX} IN RANGE 0 ${num_entries} 1127 Append To List ${patch_list} ${empty_dict} 1128 END 1129 1130 ${valid_status_codes}= Set Variable If '${valid_status_codes}' == '${HTTP_OK}' 1131 ... ${HTTP_OK},${HTTP_NO_CONTENT} 1132 ... ${valid_status_codes} 1133 1134 Append To List ${patch_list} ${ipv6_gw} 1135 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list} 1136 1137 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 1138 ... body=${data} valid_status_codes=[${valid_status_codes}] 1139 1140 # Verify the added static default gateway is present in Redfish Get Output. 1141 ${ipv6_staticdef_gateway}= Get IPv6 Static Default Gateway 1142 1143 ${ipv6_static_def_gw_list}= Create List 1144 FOR ${ipv6_staticdef_gateway} IN @{ipv6_staticdef_gateway} 1145 ${value}= Get From Dictionary ${ipv6_staticdef_gateway} Address 1146 Append To List ${ipv6_static_def_gw_list} ${value} 1147 END 1148 1149 IF '${valid_status_codes}' != '${HTTP_OK},${HTTP_NO_CONTENT}' 1150 Should Not Contain ${ipv6_static_def_gw_list} ${ipv6_gw_addr} 1151 ELSE 1152 Should Contain ${ipv6_static_def_gw_list} ${ipv6_gw_addr} 1153 END 1154 1155 1156Modify IPv6 Static Default Gateway On BMC 1157 [Documentation] Modify and verify IPv6 address of BMC. 1158 [Arguments] ${ipv6_gw_addr} ${new_static_def_gw} ${prefix_length} 1159 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED}] 1160 1161 # Description of argument(s): 1162 # ipv6_gw_addr IPv6 static default gateway address to be replaced (e.g. "2001:AABB:CCDD::AAFF"). 1163 # new_static_def_gw New static default gateway address to be configured. 1164 # prefix_length Prefix length value (Range 1 to 128). 1165 # valid_status_codes Expected return code from patch operation 1166 # (e.g. "200", "204"). 1167 1168 ${empty_dict}= Create Dictionary 1169 ${patch_list}= Create List 1170 # Prefix Length is passed as None. 1171 IF '${prefix_length_def}' == '${None}' 1172 ${modified_ipv6_gw_addripv6_data}= Create Dictionary Address=${new_static_def_gw} 1173 ELSE 1174 ${modified_ipv6_gw_addripv6_data}= Create Dictionary Address=${new_static_def_gw} Prefix Length=${prefix_length_def} 1175 END 1176 1177 @{ipv6_static_def_gw_list}= Get IPv6 Static Default Gateway 1178 1179 FOR ${ipv6_static_def_gw} IN @{ipv6_static_def_gw_list} 1180 IF '${ipv6_static_def_gw['Address']}' == '${ipv6_gw_addr}' 1181 Append To List ${patch_list} ${modified_ipv6_gw_addripv6_data} 1182 ELSE 1183 Append To List ${patch_list} ${empty_dict} 1184 END 1185 END 1186 1187 # Modify the IPv6 address only if given IPv6 static default gateway is found. 1188 ${ip_static_def_gw_found}= Run Keyword And Return Status List Should Contain Value 1189 ... ${patch_list} ${modified_ipv6_gw_addripv6_data} msg=${ipv6_gw_addr} does not exist on BMC 1190 Pass Execution If ${ip_static_def_gw_found} == ${False} ${ipv6_gw_addr} does not exist on BMC 1191 1192 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list} 1193 1194 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 1195 ... body=&{data} valid_status_codes=${valid_status_codes} 1196 1197 ${ipv6_staticdef_gateway}= Get IPv6 Static Default Gateway 1198 1199 ${ipv6_static_def_gw_list}= Create List 1200 FOR ${ipv6_staticdef_gateway} IN @{ipv6_staticdef_gateway} 1201 ${value}= Get From Dictionary ${ipv6_staticdef_gateway} Address 1202 Append To List ${ipv6_static_def_gw_list} ${value} 1203 END 1204 1205 Should Contain ${ipv6_static_def_gw_list} ${new_static_def_gw} 1206 # Verify if old static default gateway address is erased. 1207 Should Not Contain ${ipv6_static_def_gw_list} ${ipv6_gw_addr} 1208 1209 1210Delete IPv6 Static Default Gateway 1211 [Documentation] Delete IPv6 static default gateway on BMC. 1212 [Arguments] ${ipv6_gw_addr} 1213 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}] 1214 1215 # Description of argument(s): 1216 # ipv6_gw_addr IPv6 Static Default Gateway address to be deleted. 1217 # valid_status_codes Expected return code from patch operation 1218 # (e.g. "200"). 1219 1220 ${patch_list}= Create List 1221 ${empty_dict}= Create Dictionary 1222 1223 ${ipv6_static_def_gw_list}= Create List 1224 @{ipv6_static_defgw_configurations}= Get IPv6 Static Default Gateway 1225 1226 FOR ${ipv6_staticdef_gateway} IN @{ipv6_static_defgw_configurations} 1227 ${value}= Get From Dictionary ${ipv6_staticdef_gateway} Address 1228 Append To List ${ipv6_static_def_gw_list} ${value} 1229 END 1230 1231 ${defgw_found}= Run Keyword And Return Status List Should Contain Value 1232 ... ${ipv6_static_def_gw_list} ${ipv6_gw_addr} msg=${ipv6_gw_addr} does not exist on BMC 1233 Skip If ${defgw_found} == ${False} ${ipv6_gw_addr} does not exist on BMC 1234 1235 FOR ${ipv6_static_def_gw} IN @{ipv6_static_defgw_configurations} 1236 IF '${ipv6_static_def_gw['Address']}' == '${ipv6_gw_addr}' 1237 Append To List ${patch_list} ${null} 1238 ELSE 1239 Append To List ${patch_list} ${empty_dict} 1240 END 1241 END 1242 1243 # Run patch command only if given IP is found on BMC. 1244 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list} 1245 1246 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data} 1247 ... valid_status_codes=${valid_status_codes} 1248 1249 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list} 1250 1251 @{ipv6_static_defgw_configurations}= Get IPv6 Static Default Gateway 1252 Should Not Contain Match ${ipv6_static_defgw_configurations} ${ipv6_gw_addr} 1253 ... msg=IPv6 Static default gateway does not exist. 1254 1255 1256Check Coexistence Of Linklocalv6 And Static IPv6 1257 [Documentation] Verify both linklocalv6 and static IPv6 exist. 1258 1259 # Verify the address origin contains static and linklocal. 1260 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal 1261 1262 Should Match Regexp ${ipv6_linklocal_addr} ${linklocal_addr_format} 1263 Should Contain ${ipv6_addressorigin_list} Static 1264 1265 1266Check Coexistence Of Static IPv6 And SLAAC 1267 [Documentation] Verify both static IPv6 and SLAAC coexist. 1268 1269 # Verify the address origin contains static and slaac. 1270 @{ipv6_addressorigin_list} ${ipv6_static_addr}= 1271 ... Get Address Origin List And Address For Type Static 1272 1273 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}= 1274 ... Get Address Origin List And Address For Type SLAAC 1275 1276 1277Check Coexistence Of Link Local And SLAAC 1278 [Documentation] Verify both link local and SLAAC coexist. 1279 1280 # Verify the address origin contains SLAAC and link local. 1281 @{ipv6_addressorigin_list} ${ipv6_link_local_addr}= 1282 ... Get Address Origin List And Address For Type LinkLocal 1283 1284 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}= 1285 ... Get Address Origin List And Address For Type SLAAC 1286 1287 Should Match Regexp ${ipv6_link_local_addr} ${linklocal_addr_format} 1288 1289 1290Check Coexistence Of Link Local And DHCPv6 1291 [Documentation] Verify both link local and dhcpv6 coexist. 1292 1293 # Verify the address origin contains dhcpv6 and link local. 1294 @{ipv6_address_origin_list} ${ipv6_link_local_addr}= 1295 ... Get Address Origin List And Address For Type LinkLocal 1296 1297 @{ipv6_address_origin_list} ${ipv6_dhcpv6_addr}= 1298 ... Get Address Origin List And Address For Type DHCPv6 1299 1300 Should Match Regexp ${ipv6_link_local_addr} ${linklocal_addr_format} 1301 1302 1303Check If Linklocal Address Is In Correct Format 1304 [Documentation] Linklocal address has network part fe80 and host part EUI64. 1305 1306 # Fetch the linklocal address. 1307 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal 1308 1309 # Follow EUI64 from MAC. 1310 ${system_mac}= Get BMC MAC Address 1311 ${split_octets}= Split String ${system_mac} : 1312 ${first_octet}= Evaluate int('${split_octets[0]}', 16) 1313 ${flipped_hex}= Evaluate format(${first_octet} ^ 2, '02x') 1314 ${grp1}= Evaluate re.sub(r'^0+', '', '${flipped_hex}${split_octets[1]}') modules=re 1315 ${grp2}= Evaluate re.sub(r'^0+', '', '${split_octets[2]}ff') modules=re 1316 ${grp3}= Evaluate re.sub(r'^0+', '', '${split_octets[4]}${split_octets[5]}') modules=re 1317 ${linklocal}= Set Variable fe80::${grp1}:${grp2}:fe${split_octets[3]}:${grp3} 1318 1319 # Verify the linklocal obtained is the same as on the machine. 1320 Should Be Equal ${linklocal} ${ipv6_linklocal_addr} 1321 1322 1323Check BMC Gets SLAAC Address 1324 [Documentation] Check BMC gets slaac address. 1325 1326 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}= Get Address Origin List And Address For Type SLAAC 1327 1328 1329Get The Initial DHCPv6 Setting On Each Interface 1330 [Documentation] Get the initial DHCPv6 setting of each interface. 1331 [Arguments] ${channel_number} 1332 1333 # Description of the argument(s): 1334 # channel_number Channel number 1 or 2. 1335 1336 ${ethernet_interface}= Set Variable ${active_channel_config['${channel_number}']['name']} 1337 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 1338 ${initial_dhcpv6_iface}= Get From Dictionary ${resp.dict} DHCPv6 1339 IF ${channel_number}==${1} 1340 Set Test Variable ${dhcpv6_channel_1} ${initial_dhcpv6_iface['OperatingMode']} 1341 ELSE 1342 Set Test Variable ${dhcpv6_channel_2} ${initial_dhcpv6_iface['OperatingMode']} 1343 END 1344 1345 1346Get The Initial DHCPv6 Settings 1347 [Documentation] Get the initial DHCPv6 settings of both the interfaces. 1348 1349 Get The Initial DHCPv6 Setting On Each Interface ${1} 1350 Get The Initial DHCPv6 Setting On Each Interface ${2} 1351 1352 1353Get The Initial SLAAC Settings 1354 [Documentation] Get the initial SLAAC settings of both the interfaces. 1355 1356 Get The Initial SLAAC Setting On Each Interface ${1} 1357 Get The Initial SLAAC Setting On Each Interface ${2} 1358 1359 1360Get The Initial SLAAC Setting On Each Interface 1361 [Documentation] Get the initial SLAAC setting of the interface. 1362 [Arguments] ${channel_number} 1363 1364 # Description of the argument(s): 1365 # channel_number Channel number 1 or 2. 1366 1367 ${ethernet_interface}= Set Variable ${active_channel_config['${channel_number}']['name']} 1368 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 1369 ${initial_slaac_iface}= Get From Dictionary ${resp.dict} StatelessAddressAutoConfig 1370 IF ${channel_number}==${1} 1371 Set Test Variable ${slaac_channel_1} ${initial_slaac_iface['IPv6AutoConfigEnabled']} 1372 ELSE 1373 Set Test Variable ${slaac_channel_2} ${initial_slaac_iface['IPv6AutoConfigEnabled']} 1374 END 1375 1376 1377Get Address Origin List And IPv4 or IPv6 Address 1378 [Documentation] Get address origin list and address for type. 1379 [Arguments] ${ip_address_type} ${channel_number}=${CHANNEL_NUMBER} 1380 1381 # Description of the argument(s): 1382 # ip_address_type Type of IPv4 or IPv6 address to be checked. 1383 # channel_number Channel number 1(eth0) or 2(eth1). 1384 1385 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${active_channel_config['${channel_number}']['name']} 1386 @{ip_addresses}= Get From Dictionary ${resp.dict} ${ip_address_type} 1387 1388 ${ip_addressorigin_list}= Create List 1389 ${ip_addr_list}= Create List 1390 FOR ${ip_address} IN @{ip_addresses} 1391 ${ip_addressorigin}= Get From Dictionary ${ip_address} AddressOrigin 1392 Append To List ${ip_addressorigin_list} ${ip_addressorigin} 1393 Append To List ${ip_addr_list} ${ip_address['Address']} 1394 END 1395 RETURN ${ip_addressorigin_list} ${ip_addr_list} 1396 1397 1398Verify All The Addresses Are Intact 1399 [Documentation] Verify all the addresses and address origins remain intact. 1400 [Arguments] ${channel_number}=${CHANNEL_NUMBER} 1401 ... ${initial_ipv4_addressorigin_list}=${initial_ipv4_addressorigin_list} 1402 ... ${initial_ipv4_addr_list}=${initial_ipv4_addr_list} 1403 1404 # Description of argument(s): 1405 # channel_number Channel number 1(eth0) or 2(eth1). 1406 # initial_ipv4_addressorigin_list Initial IPv4 address origin list. 1407 # initial_ipv4_addr_list Initial IPv4 address list. 1408 1409 # Verify that it will not impact the IPv4 configuration. 1410 Sleep ${NETWORK_TIMEOUT} 1411 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 1412 1413 # IPv6 Linklocal address must be present. 1414 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}= 1415 ... Get Address Origin List And Address For Type LinkLocal ${channel_number} 1416 1417 # IPv4 addresses must remain intact. 1418 ${ipv4_addressorigin_list} ${ipv4_addr_list}= 1419 ... Get Address Origin List And IPv4 or IPv6 Address IPv4Addresses ${channel_number} 1420 1421 Should be Equal ${initial_ipv4_addressorigin_list} ${ipv4_addressorigin_list} 1422 Should be Equal ${initial_ipv4_addr_list} ${ipv4_addr_list} 1423 1424 1425Get Interface ID Of IPv6 1426 [Documentation] Get interface id of IPv6 address. 1427 [Arguments] ${ipv6_address} 1428 1429 # Description of the argument(s): 1430 # ${ipv6_address} IPv6 Address to extract the last 4 hextets. 1431 1432 # Last 64 bits of SLAAC and Linklocal must be the same. 1433 # Sample IPv6 network configurations. 1434 #"IPv6AddressPolicyTable": [], 1435 # "IPv6Addresses": [ 1436 # { 1437 # "Address": "fe80::xxxx:xxxx:xxxx:xxxx", 1438 # "AddressOrigin": "LinkLocal", 1439 # "AddressState": null, 1440 # "PrefixLength": xx 1441 # } 1442 # ], 1443 # { 1444 # "Address": "2002:xxxx:xxxx:xxxx:xxxx", 1445 # "AddressOrigin": "SLAAC", 1446 # "PrefixLength": 64 1447 # } 1448 # ], 1449 1450 ${split_ip_address}= Split String ${ipv6_address} : 1451 ${missing_ip}= Evaluate 8 - len(${split_ip_address}) + 1 1452 ${expanded_ip}= Create List 1453 1454 FOR ${hextet} IN @{split_ip_address} 1455 IF '${hextet}' == '' 1456 FOR ${i} IN RANGE ${missing_ip} 1457 Append To List ${expanded_ip} 0000 1458 END 1459 ELSE 1460 Append To List ${expanded_ip} ${hextet} 1461 END 1462 END 1463 ${interface_id}= Evaluate ':'.join(${expanded_ip}[-4:]) 1464 RETURN ${interface_id} 1465 1466 1467Set And Verify SLAAC Property On Both Interfaces 1468 [Documentation] Set and verify SLAAC property on both interfaces. 1469 [Arguments] ${slaac_value_1} ${slaac_value_2} 1470 1471 # Description of the argument(s): 1472 # slaac_value_1 SLAAC value for channel 1. 1473 # slaac_value_2 SLAAC value for channel 2. 1474 1475 Set SLAAC Configuration State And Verify ${slaac_value_1} [${HTTP_OK}] ${1} 1476 Set SLAAC Configuration State And Verify ${slaac_value_2} [${HTTP_OK}] ${2} 1477 1478 Sleep 30s 1479 1480 # Check SLAAC Settings for eth0. 1481 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}= 1482 ... Get Address Origin List And IPv4 or IPv6 Address IPv6Addresses ${1} 1483 IF "${slaac_value_1}" == "${True}" 1484 Should Not Be Empty ${ipv6_slaac_addr} SLAAC 1485 ELSE 1486 Should Not Contain ${ipv6_addressorigin_list} SLAAC 1487 END 1488 1489 # Check SLAAC Settings for eth1. 1490 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}= 1491 ... Get Address Origin List And IPv4 or IPv6 Address IPv6Addresses ${2} 1492 IF "${slaac_value_2}" == "${True}" 1493 Should Not Be Empty ${ipv6_slaac_addr} SLAAC 1494 ELSE 1495 Should Not Contain ${ipv6_addressorigin_list} SLAAC 1496 END 1497 1498 Verify All The Addresses Are Intact ${1} 1499 Verify All The Addresses Are Intact ${2} 1500 ... ${eth1_initial_ipv4_addressorigin_list} ${eth1_initial_ipv4_addr_list} 1501 1502 1503Set And Verify DHCPv6 Property On Both Interfaces 1504 [Documentation] Set and verify DHCPv6 property on both interfaces. 1505 [Arguments] ${dhcpv6_value_1} ${dhcpv6_value_2} 1506 1507 # Description of the argument(s): 1508 # dhcpv6_value_1 DHCPv6 value for channel 1. 1509 # dhcpv6_value_2 DHCPv6 value for channel 2. 1510 1511 Set And Verify DHCPv6 Property ${dhcpv6_value_1} ${1} 1512 Set And Verify DHCPv6 Property ${dhcpv6_value_2} ${2} 1513 1514 Verify All The Addresses Are Intact ${1} 1515 Verify All The Addresses Are Intact ${2} 1516 ... ${eth1_initial_ipv4_addressorigin_list} ${eth1_initial_ipv4_addr_list} 1517 1518 1519Verify IPv6 Addresses Coexist 1520 [Documentation] Verify IPv6 address type coexist. 1521 [Arguments] ${ipv6_address_type1} ${ipv6_address_type2} 1522 1523 # Description of the argument(s): 1524 # ipv6_address_type1 IPv6 address type. 1525 # ipv6_address_type2 IPv6 address type. 1526 # Valid IPv6 address type (Static, DHCPv6, SLAAC). 1527 1528 IF '${ipv6_address_type1}' == 'Static' and '${ipv6_address_type2}' == 'DHCPv6' 1529 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} 1530 Set And Verify DHCPv6 Property Enabled 1531 ELSE IF '${ipv6_address_type1}' == 'DHCPv6' and '${ipv6_address_type2}' == 'SLAAC' 1532 Set And Verify DHCPv6 Property Enabled 1533 Set SLAAC Configuration State And Verify ${True} 1534 ELSE IF '${ipv6_address_type1}' == 'SLAAC' and '${ipv6_address_type2}' == 'Static' 1535 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} 1536 Set SLAAC Configuration State And Verify ${True} 1537 ELSE IF '${ipv6_address_type1}' == 'Static' and '${ipv6_address_type2}' == 'Static' 1538 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length} 1539 Configure IPv6 Address On BMC ${test_ipv6_addr1} ${test_prefix_length} 1540 END 1541 1542 Sleep ${NETWORK_TIMEOUT}s 1543 1544 # Verify coexistence. 1545 Verify The Coexistence Of The Address Type ${ipv6_address_type1} ${ipv6_address_type2} 1546 1547 IF '${ipv6_address_type1}' == 'Static' or '${ipv6_address_type2}' == 'Static' 1548 Delete IPv6 Address ${test_ipv6_addr} 1549 END 1550 IF '${ipv6_address_type1}' == 'Static' and '${ipv6_address_type2}' == 'Static' 1551 Delete IPv6 Address ${test_ipv6_addr1} 1552 END 1553 1554 Set And Verify DHCPv6 Property Disabled 1555 Set SLAAC Configuration State And Verify ${False} 1556