blob: 127b2300944485262ec40f3611c6ccbb02a50f32 [file] [log] [blame]
Prashanth Katti8abbb4d2021-01-29 02:17:45 -06001*** 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
Sweta Potthuri8ba74322025-03-19 12:29:06 -05008Resource ../../lib/external_intf/vmi_utils.robot
Sweta Potthuri2f3fbb52025-09-19 00:50:47 -05009Resource ../../lib/bmc_network_utils.robot
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060010Library ../../lib/bmc_network_utils.py
11Library Collections
Sweta Potthuri35c503b2025-07-27 23:36:20 -050012Library Process
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060013
Anvesh-Kumar_Rayankula019d9362025-09-03 22:55:12 -050014Test Setup Test Setup Execution
15Test Teardown Test Teardown Execution
16Suite Setup Suite Setup Execution
17Suite Teardown Redfish.Logout
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060018
Matt Fischer6fb70d92023-10-24 19:06:33 -060019Test Tags BMC_IPv6
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060020
21*** Variables ***
Sweta Potthuri2edacd32025-07-02 01:04:43 -050022${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
kvishal9c6774c2025-09-10 02:14:07 -050025${invalid_hexadec_ipv6} x:x:x:x:x:x:10.5.5.6
26${ipv6_multi_short} 2001::33::111
George Keishinge16f1582022-12-15 07:32:21 -060027# Valid prefix length is a integer ranges from 1 to 128.
Sweta Potthuri2edacd32025-07-02 01:04:43 -050028${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
Sweta Potthuri2f3fbb52025-09-19 00:50:47 -050032${new_mac_addr} AA:E2:84:14:28:79
abhijith-1219e190dd2025-10-15 03:35:06 -050033${linklocal_addr_format} fe80::[0-9a-f:]+$
34${link_local_addr} fe80::
35${link_local_prefix_len} 10
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060036
37*** Test Cases ***
38
39Get IPv6 Address And Verify
40 [Documentation] Get IPv6 Address And Verify.
41 [Tags] Get_IPv6_Address_And_Verify
42
43 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
44 Verify IPv6 On BMC ${ipv6_network_configuration['Address']}
45 END
46
47
Prashanth Katti2c73abc2021-03-17 07:42:25 -050048Get PrefixLength And Verify
49 [Documentation] Get IPv6 prefix length and verify.
50 [Tags] Get_PrefixLength_And_Verify
51
52 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
53 Verify IPv6 On BMC ${ipv6_network_configuration['PrefixLength']}
54 END
55
56
57Get IPv6 Default Gateway And Verify
George Keishing96143832021-03-23 07:55:08 -050058 [Documentation] Get IPv6 default gateway and verify.
George Keishingade6ab42022-07-19 11:41:03 -050059 [Tags] Get_IPv6_Default_Gateway_And_Verify
Prashanth Katti2c73abc2021-03-17 07:42:25 -050060
61 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
62 ${ipv6_gateway}= Get From Dictionary ${resp.dict} IPv6DefaultGateway
63 Verify IPv6 Default Gateway On BMC ${ipv6_gateway}
64
65
Prashanth Kattic1d2daa2022-07-26 03:53:06 -050066Verify All Configured IPv6 And PrefixLength On BMC
67 [Documentation] Verify IPv6 address and its prefix length on BMC.
68 [Tags] Verify_All_Configured_IPv6_And_PrefixLength_On_BMC
69
70 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
George Keishingf02ca2b2023-04-05 22:11:03 +053071 Verify IPv6 And PrefixLength ${ipv6_network_configuration['Address']}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -050072 ... ${ipv6_network_configuration['PrefixLength']}
73 END
74
75
76Configure IPv6 Address And Verify
77 [Documentation] Configure IPv6 address and verify.
78 [Tags] Configure_IPv6_Address_And_Verify
Anvesh-Kumar_Rayankula3a26c662025-04-16 01:19:26 -050079 [Teardown] Run Keywords
80 ... Delete IPv6 Address ${test_ipv6_addr} AND Test Teardown Execution
Prashanth Kattic1d2daa2022-07-26 03:53:06 -050081 [Template] Configure IPv6 Address On BMC
82
83
84 # IPv6 address Prefix length
85 ${test_ipv6_addr} ${test_prefix_length}
86
87
Prashanth Katti12ed4b72023-05-16 05:24:00 -050088Delete IPv6 Address And Verify
89 [Documentation] Delete IPv6 address and verify.
90 [Tags] Delete_IPv6_Address_And_Verify
91
92 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length}
93
94 Delete IPv6 Address ${test_ipv6_addr}
95
96
George Keishingcc288312024-10-22 10:13:12 +053097Modify IPv6 Address And Verify
Prashanth Katti5f7d2e42023-05-22 03:17:25 -050098 [Documentation] Modify IPv6 address and verify.
99 [Tags] Modify_IPv6_Address_And_Verify
kvishal88de8c42025-03-04 01:45:10 -0600100 [Teardown] Run Keywords
George Keishingcfdd0992025-03-17 11:59:20 +0530101 ... Delete IPv6 Address ${test_ipv6_addr1} AND Test Teardown Execution
Prashanth Katti5f7d2e42023-05-22 03:17:25 -0500102
103 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length}
104
105 Modify IPv6 Address ${test_ipv6_addr} ${test_ipv6_addr1} ${test_prefix_length}
106
107
Sweta Potthuriafe858e2025-02-25 23:52:51 -0600108Verify Persistency Of IPv6 After BMC Reboot
109 [Documentation] Verify persistency of IPv6 after BMC reboot.
110 [Tags] Verify_Persistency_Of_IPv6_After_BMC_Reboot
111 [Teardown] Run Keywords
112 ... Delete IPv6 Address ${test_ipv6_addr} AND Test Teardown Execution
113
114 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length}
115
116 Redfish OBMC Reboot (off) stack_mode=skip
117
118 # Verifying persistency of IPv6.
119 Verify IPv6 On BMC ${test_ipv6_addr}
120
121
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500122Enable SLAAC On BMC And Verify
123 [Documentation] Enable SLAAC on BMC and verify.
124 [Tags] Enable_SLAAC_On_BMC_And_Verify
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500125
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500126 Set SLAAC Configuration State And Verify ${True}
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500127
128
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500129Enable DHCPv6 Property On BMC And Verify
130 [Documentation] Enable DHCPv6 property on BMC and verify.
131 [Tags] Enable_DHCPv6_Property_On_BMC_And_Verify
132
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500133 Set And Verify DHCPv6 Property Enabled
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500134
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500135
kvishal0d199a92025-05-29 02:35:18 -0500136Disable DHCPv6 Property On BMC And Verify
137 [Documentation] Disable DHCPv6 property on BMC and verify.
138 [Tags] Disable_DHCPv6_Property_On_BMC_And_Verify
139
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500140 Set And Verify DHCPv6 Property Disabled
kvishalbd04bd62025-08-05 03:57:53 -0500141
142
143Verify Persistency Of DHCPv6 On Reboot
144 [Documentation] Verify persistency of DHCPv6 property on reboot.
145 [Tags] Verify_Persistency_Of_DHCPv6_On_Reboot
146
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500147 Set And Verify DHCPv6 Property Enabled
148 Redfish OBMC Reboot (off) stack_mode=skip
149 Verify DHCPv6 Property Enabled
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500150
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500151
Sweta Potthuricb61ff02025-04-09 05:16:09 -0500152Configure Invalid Static IPv6 And Verify
153 [Documentation] Configure invalid static IPv6 and verify.
154 [Tags] Configure_Invalid_Static_IPv6_And_Verify
155 [Template] Configure IPv6 Address On BMC
156
kvishal9c6774c2025-09-10 02:14:07 -0500157 #invalid_ipv6 prefix length valid_status_code
158 ${ipv4_hexword_addr} ${test_prefix_length} ${HTTP_BAD_REQUEST}
159 ${invalid_hexadec_ipv6} ${test_prefix_length} ${HTTP_BAD_REQUEST}
160 ${ipv6_multi_short} ${test_prefix_length} ${HTTP_BAD_REQUEST}
161
Sweta Potthuricb61ff02025-04-09 05:16:09 -0500162
Sweta Potthuri565318d2025-06-09 06:13:46 -0500163
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500164Configure IPv6 Static Default Gateway And Verify
165 [Documentation] Configure IPv6 static default gateway and verify.
166 [Tags] Configure_IPv6_Static_Default_Gateway_And_Verify
167 [Template] Configure IPv6 Static Default Gateway On BMC
Sweta Potthuri565318d2025-06-09 06:13:46 -0500168
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500169 # static_def_gw prefix length valid_status_code
170 ${ipv6_gw_addr} ${prefix_length_def} ${HTTP_OK}
171 ${invalid_staticv6_gateway} ${test_prefix_length} ${HTTP_BAD_REQUEST}
Sweta Potthuri565318d2025-06-09 06:13:46 -0500172
Sweta Potthuricb61ff02025-04-09 05:16:09 -0500173
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500174Modify Static Default Gateway And Verify
175 [Documentation] Modify static default gateway and verify.
176 [Tags] Modify_Static_Default_Gateway_And_Verify
177 [Setup] Configure IPv6 Static Default Gateway On BMC ${ipv6_gw_addr} ${prefix_length_def}
178
179 Modify IPv6 Static Default Gateway On BMC ${test_ipv6_addr1} ${prefix_length_def} ${HTTP_OK} ${ipv6_gw_addr}
180
181
Sweta Potthuri2d085732025-07-16 09:10:08 -0500182Delete IPv6 Static Default Gateway And Verify
183 [Documentation] Delete IPv6 static default gateway and verify.
184 [Tags] Delete_IPv6_Static_Default_Gateway_And_Verify
185 [Setup] Configure IPv6 Static Default Gateway On BMC ${ipv6_gw_addr} ${prefix_length_def}
186
187 Delete IPv6 Static Default Gateway ${ipv6_gw_addr}
188
189
Sweta Potthuri35c503b2025-07-27 23:36:20 -0500190Verify Coexistence Of Linklocalv6 And Static IPv6 On BMC
191 [Documentation] Verify linklocalv6 And static IPv6 both exist.
192 [Tags] Verify_Coexistence_Of_Linklocalv6_And_Static_IPv6_On_BMC
Anvesh-Kumar_Rayankula019d9362025-09-03 22:55:12 -0500193 [Setup] Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length}
194 [Teardown] Delete IPv6 Address ${test_ipv6_addr}
Sweta Potthuri35c503b2025-07-27 23:36:20 -0500195
196 Check Coexistence Of Linklocalv6 And Static IPv6
197
198
George Keishingbadb4c62025-09-18 16:14:12 +0530199Verify IPv6 Linklocal Address Is In Correct Format
200 [Documentation] Verify linklocal address has network part as fe80 and
201 ... host part as EUI64.
Sweta Potthuri3c6f97d2025-08-06 00:30:19 -0500202 [Tags] Verify_IPv6_Linklocal_Address_Is_In_Correct_Format
203
204 Check If Linklocal Address Is In Correct Format
205
206
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500207Verify BMC Gets SLAAC Address On Enabling SLAAC
208 [Documentation] On enabling SLAAC verify SLAAC address comes up.
209 [Tags] Verify_BMC_Gets_SLAAC_Address_On_Enabling_SLAAC
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500210 [Setup] Set SLAAC Configuration State And Verify ${False}
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500211
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500212 Set SLAAC Configuration State And Verify ${True}
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500213 Sleep ${NETWORK_TIMEOUT}
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500214 Check BMC Gets SLAAC Address
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500215
216
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500217Enable And Verify DHCPv6 Property On Eth1 When DHCPv6 Property Enabled On Eth0
218 [Documentation] Verify DHCPv6 on eth1 when DHCPv6 property is enabled on eth0.
219 [Tags] Enable_And_Verify_DHCPv6_Property_On_Eth1_When_DHCPv6_Property_Enabled_On_Eth0
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500220 [Setup] Get The Initial DHCPv6 Settings
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500221 [Teardown] Run Keywords Set And Verify DHCPv6 Property ${dhcpv6_channel_1} ${1}
222 ... AND Set And Verify DHCPv6 Property ${dhcpv6_channel_2} ${2}
223
224 Set And Verify DHCPv6 Property Enabled ${1}
225 Set And Verify DHCPv6 Property Enabled ${2}
226
227
Sweta Potthuri6370afd2025-10-08 00:07:46 -0500228Verify Enable And Disable SLAAC On Both Interfaces
229 [Documentation] Verify enable and disable SLAAC on both the interfaces.
230 [Tags] Verify_Enable_And_Disable_SLAAC_On_Both_Interfaces
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500231 [Setup] Get The Initial SLAAC Settings
Sweta Potthuri6370afd2025-10-08 00:07:46 -0500232 [Template] Set And Verify SLAAC Property On Both Interfaces
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500233 [Teardown] Run Keywords Set SLAAC Configuration State And Verify ${slaac_channel_1} [${HTTP_OK}] ${1}
234 ... AND Set SLAAC Configuration State And Verify ${slaac_channel_2} [${HTTP_OK}] ${2}
235
Sweta Potthuri6370afd2025-10-08 00:07:46 -0500236 # slaac_eth0 slaac_eth1
237 ${True} ${True}
238 ${True} ${False}
239 ${False} ${True}
240 ${False} ${False}
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500241
242
abhijith-1213a645902025-09-08 01:12:34 -0500243Verify Autoconfig Is Present On Ethernet Interface
244 [Documentation] Verify autoconfig is present on ethernet interface.
245 [Tags] Verify_Autoconfig_Is_Present_On_Ethernet_Interface
246
247 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
248 Should Contain ${resp.dict} StatelessAddressAutoConfig
249
250
Sweta Potthurif3d188f2025-09-08 07:17:31 -0500251Verify Interface ID Of SLAAC And LinkLocal Addresses Are Same
252 [Documentation] Validate interface id of SLAAC and link-local addresses are same.
253 [Tags] Verify_Interface_ID_Of_SLAAC_And_LinkLocal_Addresses_Are_Same
254
255 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal
256 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}= Get Address Origin List And Address For Type SLAAC
257
258 ${linklocal_interface_id}= Get Interface ID Of IPv6 ${ipv6_linklocal_addr}
259 ${slaac_interface_id}= Get Interface ID Of IPv6 ${ipv6_slaac_addr}
260
261 Should Be Equal ${linklocal_interface_id} ${slaac_interface_id}
262
263
abhijith-121c3e96d72025-09-09 11:35:09 -0500264Verify Persistency Of Link Local IPv6 On BMC Reboot
265 [Documentation] Verify persistency of link local on BMC reboot.
266 [Tags] Verify_Persistency_Of_Link_Local_IPv6_On_BMC_Reboot
267
268 # Capturing the linklocal before reboot.
269 @{ipv6_address_origin_list} ${linklocal_addr_before_reboot}=
270 ... Get Address Origin List And Address For Type LinkLocal
271
272 # Rebooting BMC.
273 Redfish OBMC Reboot (off) stack_mode=skip
274
275 @{ipv6_address_origin_list} ${linklocal_addr_after_reboot}=
276 ... Get Address Origin List And Address For Type LinkLocal
277
278 # Verifying the linklocal must be the same before and after reboot.
279 Should Be Equal ${linklocal_addr_before_reboot} ${linklocal_addr_after_reboot}
280 ... msg=IPv6 Linklocal address has changed after reboot.
281
282
Sweta Potthuri2f3fbb52025-09-19 00:50:47 -0500283Modify MAC and Verify BMC Reinitializing Linklocal
284 [Documentation] Modify MAC and verify BMC reinitializing linklocal.
285 [Tags] Modify_MAC_and_Verify_BMC_Reinitializing_Linklocal
286 [Teardown] Configure MAC Settings ${original_address}
287
288 ${original_address}= Get BMC MAC Address
289 @{ipv6_addressorigin_list} ${ipv6_before_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal
290
291 # Modify MAC Address Of Ethernet Interface.
292 Configure MAC Settings ${new_mac_addr}
293 Sleep 30s
294 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
295 @{ipv6_addressorigin_list} ${ipv6_linklocal_after_addr}= Get Address Origin List And Address For Type LinkLocal
296
297 # Verify whether the linklocal has changed and is in the the correct format.
298 Check If Linklocal Address Is In Correct Format
299 Should Not Be Equal ${ipv6_before_linklocal_addr} ${ipv6_linklocal_after_addr}
300
301
abhijith-121bfbd03a2025-09-15 01:40:35 -0500302Add Multiple IPv6 Address And Verify
303 [Documentation] Add multiple IPv6 address and verify.
304 [Tags] Add_Multiple_IPv6_Address_And_Verify
305 [Teardown] Run Keywords
306 ... Delete IPv6 Address ${test_ipv6_addr} AND Delete IPv6 Address ${test_ipv6_addr1}
307 ... AND Test Teardown Execution
308
309 Configure Multiple IPv6 Address on BMC ${test_prefix_length}
310
311
abhijith-12197078c52025-09-25 01:13:00 -0500312Verify Coexistence Of Static IPv6 And SLAAC On BMC
abhijith-1214dc01a02025-09-24 11:29:55 -0500313 [Documentation] Verify static IPv6 And SLAAC both coexist.
abhijith-12197078c52025-09-25 01:13:00 -0500314 [Tags] Verify_Coexistence_Of_Static_IPv6_And_SLAAC_On_BMC
315 [Setup] Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length}
316 Set SLAAC Configuration State And Verify ${True}
317 [Teardown] Delete IPv6 Address ${test_ipv6_addr}
318
319 Sleep ${NETWORK_TIMEOUT}s
320
321 Check Coexistence Of Static IPv6 And SLAAC
322
323
abhijith-1218ff5db42025-09-24 06:24:03 -0500324Verify Coexistence Of Link Local And DHCPv6 On BMC
325 [Documentation] Verify link local And dhcpv6 both coexist.
326 [Tags] Verify_Coexistence_Of_Link_Local_And_DHCPv6_On_BMC
327 [Setup] Set DHCPv6 Property Enabled ${2}
328
329 Sleep ${NETWORK_TIMEOUT}s
330
331 Check Coexistence Of Link Local And DHCPv6
332
333
abhijith-1214dc01a02025-09-24 11:29:55 -0500334Verify Coexistence Of Link Local And SLAAC On BMC
335 [Documentation] Verify link local And SLAAC both coexist.
336 [Tags] Verify_Coexistence_Of_Link_Local_And_SLAAC_On_BMC
337 [Setup] Set SLAAC Configuration State And Verify ${True}
338
339 Sleep ${NETWORK_TIMEOUT}s
340
341 Check Coexistence Of Link Local And SLAAC
342
343
abhijith-121ffea1912025-10-06 02:39:22 -0500344Verify Coexistence Of All IPv6 Type Addresses On BMC
345 [Documentation] Verify coexistence of link local, static, DHCPv6 and SLAAC ipv6 addresses.
346 [Tags] Verify_Coexistence_Of_All_IPv6_Type_Addresses_On_BMC
347 [Setup] Run Keywords Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length}
348 ... AND Get The Initial DHCPv6 Setting On Each Interface ${1}
349 ... AND Set And Verify DHCPv6 Property Enabled
350 ... AND Get The Initial SLAAC Setting On Each Interface ${1}
351 ... AND Set SLAAC Configuration State And Verify ${True}
352 [Teardown] Run Keywords Delete IPv6 Address ${test_ipv6_addr}
353 ... AND Set And Verify DHCPv6 Property ${dhcpv6_channel_1} ${1}
354 ... AND Set SLAAC Configuration State And Verify ${slaac_channel_1} [${HTTP_OK}] ${1}
355
356 Sleep ${NETWORK_TIMEOUT}s
357
358 # Verify link local, static, DHCPv6 and SLAAC ipv6 addresses coexist.
359 Verify The Coexistence Of The Address Type LinkLocal Static DHCPv6 SLAAC
360
361
abhijith-1219e190dd2025-10-15 03:35:06 -0500362Configure Link Local IPv6 Address And Verify
363 [Documentation] Configure link local IPv6 address and verify.
364 [Tags] Configure_Link_Local_IPv6_Address_And_Verify
365
366 Configure IPv6 Address On BMC ${link_local_addr} ${link_local_prefix_len}
367
368 # Verify the address origin contains link local.
369 @{ipv6_address_origin_list} ${ipv6_link_local_addr}=
370 ... Get Address Origin List And Address For Type LinkLocal
371
372 ${count}= Evaluate ${ipv6_address_origin_list}.count("LinkLocal")
373
374 Should Be Equal As Integers ${count} 2
375
376
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600377*** Keywords ***
378
Prashanth Katti3270fd02021-06-11 08:02:22 -0500379Suite Setup Execution
380 [Documentation] Do suite setup execution.
381
Anvesh-Kumar_Rayankula019d9362025-09-03 22:55:12 -0500382 Redfish.Login
Prashanth Katti3270fd02021-06-11 08:02:22 -0500383 ${active_channel_config}= Get Active Channel Config
Sweta Potthuri3c6f97d2025-08-06 00:30:19 -0500384 Set Suite Variable ${active_channel_config}
385
Prashanth Katti3270fd02021-06-11 08:02:22 -0500386 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
387
388 Set Suite variable ${ethernet_interface}
389
Sweta Potthuri6370afd2025-10-08 00:07:46 -0500390 # Get initial IPv4 and IPv6 addresses and address origins for eth0.
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500391 ${initial_ipv4_addressorigin_list} ${initial_ipv4_addr_list}= Get Address Origin List And IPv4 or IPv6 Address IPv4Addresses
392 ${initial_ipv6_addressorigin_list} ${initial_ipv6_addr_list}= Get Address Origin List And IPv4 or IPv6 Address IPv6Addresses
393
394 Set Suite Variable ${initial_ipv4_addressorigin_list}
395 Set Suite Variable ${initial_ipv4_addr_list}
396 Set Suite Variable ${initial_ipv6_addressorigin_list}
397 Set Suite Variable ${initial_ipv6_addr_list}
398
Sweta Potthuri6370afd2025-10-08 00:07:46 -0500399 # Get initial IPv4 and IPv6 addresses and address origins for eth1.
400 ${eth1_initial_ipv4_addressorigin_list} ${eth1_initial_ipv4_addr_list}=
401 ... Get Address Origin List And IPv4 or IPv6 Address IPv4Addresses ${2}
402 ${eth1_initial_ipv6_addressorigin_list} ${eth1_initial_ipv6_addr_list}=
403 ... Get Address Origin List And IPv4 or IPv6 Address IPv6Addresses ${2}
404 Set Suite Variable ${eth1_initial_ipv4_addressorigin_list}
405 Set Suite Variable ${eth1_initial_ipv4_addr_list}
406 Set Suite Variable ${eth1_initial_ipv6_addressorigin_list}
407 Set Suite Variable ${eth1_initial_ipv6_addr_list}
408
Prashanth Katti3270fd02021-06-11 08:02:22 -0500409
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600410Test Setup Execution
411 [Documentation] Test setup execution.
412
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600413 @{ipv6_network_configurations}= Get IPv6 Network Configuration
414 Set Test Variable @{ipv6_network_configurations}
415
416 # Get BMC IPv6 address and prefix length.
417 ${ipv6_data}= Get BMC IPv6 Info
418 Set Test Variable ${ipv6_data}
419
420
421Test Teardown Execution
422 [Documentation] Test teardown execution.
423
424 FFDC On Test Case Fail
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600425
426
427Get IPv6 Network Configuration
428 [Documentation] Get Ipv6 network configuration.
429 # Sample output:
430 # {
ganesanb4d430282023-04-27 14:33:23 +0000431 # "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/eth0",
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600432 # "@odata.type": "#EthernetInterface.v1_4_1.EthernetInterface",
433 # "DHCPv4": {
434 # "DHCPEnabled": false,
435 # "UseDNSServers": false,
436 # "UseDomainName": true,
437 # "UseNTPServers": false
438 # },
439 # "DHCPv6": {
440 # "OperatingMode": "Disabled",
441 # "UseDNSServers": false,
442 # "UseDomainName": true,
443 # "UseNTPServers": false
444 # },
445 # "Description": "Management Network Interface",
446 # "FQDN": "localhost",
447 # "HostName": "localhost",
448 # "IPv4Addresses": [
449 # {
450 # "Address": "xx.xx.xx.xx",
451 # "AddressOrigin": "Static",
452 # "Gateway": "xx.xx.xx.1",
453 # "SubnetMask": "xx.xx.xx.0"
454 # },
455 # {
456 # "Address": "169.254.xx.xx",
457 # "AddressOrigin": "IPv4LinkLocal",
458 # "Gateway": "0.0.0.0",
459 # "SubnetMask": "xx.xx.0.0"
460 # },
461 # ],
462 # "IPv4StaticAddresses": [
463 # {
464 # "Address": "xx.xx.xx.xx",
465 # "AddressOrigin": "Static",
466 # "Gateway": "xx.xx.xx.1",
467 # "SubnetMask": "xx.xx.0.0"
468 # }
469 # }
470 # ],
471 # "IPv6AddressPolicyTable": [],
472 # "IPv6Addresses": [
473 # {
474 # "Address": "fe80::xxxx:xxxx:xxxx:xxxx",
475 # "AddressOrigin": "LinkLocal",
476 # "AddressState": null,
477 # "PrefixLength": xx
478 # }
479 # ],
480 # "IPv6DefaultGateway": "",
481 # "IPv6StaticAddresses": [
482 # { "Address": "xxxx:xxxx:xxxx:xxxx::xxxx",
483 # "AddressOrigin": "Static",
484 # "AddressState": null,
485 # "PrefixLength": xxx
486 # }
487 # ],
488 # "Id": "eth0",
489 # "InterfaceEnabled": true,
490 # "LinkStatus": "LinkUp",
491 # "MACAddress": "xx:xx:xx:xx:xx:xx",
492 # "Name": "Manager Ethernet Interface",
493 # "NameServers": [],
494 # "SpeedMbps": 0,
495 # "StaticNameServers": [],
496 # "Status": {
497 # "Health": "OK",
498 # "HealthRollup": "OK",
499 # "State": "Enabled"
500 # },
501 # "VLANs": {
ganesanb4d430282023-04-27 14:33:23 +0000502 # "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/eth0/VLANs"
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600503
504
505 ${active_channel_config}= Get Active Channel Config
506 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${active_channel_config['${CHANNEL_NUMBER}']['name']}
507
508 @{ipv6_network_configurations}= Get From Dictionary ${resp.dict} IPv6StaticAddresses
George Keishing409df052024-01-17 22:36:14 +0530509 RETURN @{ipv6_network_configurations}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500510
511
512Verify IPv6 And PrefixLength
513 [Documentation] Verify IPv6 address and prefix length on BMC.
514 [Arguments] ${ipv6_addr} ${prefix_len}
515
516 # Description of the argument(s):
517 # ipv6_addr IPv6 address to be verified.
518 # prefix_len PrefixLength value to be verified.
519
520 # Catenate IPv6 address and its prefix length.
521 ${ipv6_with_prefix}= Catenate ${ipv6_addr}/${prefix_len}
522
523 # Get IPv6 address details on BMC using IP command.
524 @{ip_data}= Get BMC IPv6 Info
525
526 # Verify if IPv6 and prefix length is configured on BMC.
527
528 Should Contain ${ip_data} ${ipv6_with_prefix}
529 ... msg=IPv6 and prefix length pair does not exist.
530
531
532Configure IPv6 Address On BMC
533 [Documentation] Add IPv6 Address on BMC.
534 [Arguments] ${ipv6_addr} ${prefix_len} ${valid_status_codes}=${HTTP_OK}
535
536 # Description of argument(s):
537 # ipv6_addr IPv6 address to be added (e.g. "2001:EEEE:2222::2022").
538 # prefix_len Prefix length for the IPv6 to be added
539 # (e.g. "64").
540 # valid_status_codes Expected return code from patch operation
541 # (e.g. "200").
542
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500543 ${prefix_length}= Convert To Integer ${prefix_len}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500544 ${empty_dict}= Create Dictionary
545 ${ipv6_data}= Create Dictionary Address=${ipv6_addr}
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500546 ... PrefixLength=${prefix_length}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500547
548 ${patch_list}= Create List
549
550 # Get existing static IPv6 configurations on BMC.
551 ${ipv6_network_configurations}= Get IPv6 Network Configuration
552 ${num_entries}= Get Length ${ipv6_network_configurations}
553
554 FOR ${INDEX} IN RANGE 0 ${num_entries}
555 Append To List ${patch_list} ${empty_dict}
556 END
557
George Keishinge6e161e2025-05-08 10:18:30 +0530558 ${valid_status_codes}= Set Variable If '${valid_status_codes}' == '${HTTP_OK}'
559 ... ${HTTP_OK},${HTTP_NO_CONTENT}
560 ... ${valid_status_codes}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500561
562 # We need not check for existence of IPv6 on BMC while adding.
563 Append To List ${patch_list} ${ipv6_data}
564 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list}
565
566 ${active_channel_config}= Get Active Channel Config
567 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
568
569 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data}
570 ... valid_status_codes=[${valid_status_codes}]
571
572 Return From Keyword If '${valid_status_codes}' != '${HTTP_OK},${HTTP_NO_CONTENT}'
573
574 # Note: Network restart takes around 15-18s after patch request processing.
575 Sleep ${NETWORK_TIMEOUT}s
576 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
577
578 Verify IPv6 And PrefixLength ${ipv6_addr} ${prefix_len}
579
580 # Verify if existing static IPv6 addresses still exist.
581 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
582 Verify IPv6 On BMC ${ipv6_network_configuration['Address']}
583 END
584
585 Validate IPv6 Network Config On BMC
586
587
abhijith-121bfbd03a2025-09-15 01:40:35 -0500588Configure Multiple IPv6 Address on BMC
589 [Documentation] Add multiple IPv6 address on BMC.
590 [Arguments] ${prefix_len}
591 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_NO_CONTENT}]
592
593 # Description of argument(s):
594 # prefix_len Prefix length for the IPv6 to be added
595 # (e.g. "64").
596 # valid_status_codes Expected return code from patch operation
597 # (e.g. "200").
598
599 ${ipv6_list}= Create List ${test_ipv6_addr} ${test_ipv6_addr1}
600 ${prefix_length}= Convert To Integer ${prefix_len}
601 ${empty_dict}= Create Dictionary
602 ${patch_list}= Create List
603
604 # Get existing static IPv6 configurations on BMC.
605 ${ipv6_network_configurations}= Get IPv6 Network Configuration
606 ${num_entries}= Get Length ${ipv6_network_configurations}
607
608 FOR ${INDEX} IN RANGE 0 ${num_entries}
609 Append To List ${patch_list} ${empty_dict}
610 END
611
612 # We need not check for existence of IPv6 on BMC while adding.
613 FOR ${ipv6_addr} IN @{ipv6_list}
614 ${ipv6_data}= Create Dictionary Address=${ipv6_addr} PrefixLength=${prefix_length}
615 Append To List ${patch_list} ${ipv6_data}
616 END
617 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list}
618
619 ${active_channel_config}= Get Active Channel Config
620 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
621
622 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data}
623 ... valid_status_codes=${valid_status_codes}
624
625 IF ${valid_status_codes} != [${HTTP_OK}, ${HTTP_NO_CONTENT}]
626 Fail msg=Static address not added correctly
627 END
628
629 # Note: Network restart takes around 15-18s after patch request processing.
630 Sleep ${NETWORK_TIMEOUT}s
631 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
632
633 # Verify newly added ip address on CLI.
634 FOR ${ipv6_addr} IN @{ipv6_list}
635 Verify IPv6 And PrefixLength ${ipv6_addr} ${prefix_len}
636 END
637
638 # Verify if existing static IPv6 addresses still exist.
639 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
640 Verify IPv6 On BMC ${ipv6_network_configuration['Address']}
641 END
642
643 # Get the latest ipv6 network configurations.
644 @{ipv6_network_configurations}= Get IPv6 Network Configuration
645
646 # Verify newly added ip address on BMC.
647 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
648 Should Contain Match ${ipv6_list} ${ipv6_network_configuration['Address']}
649 END
650
651 Validate IPv6 Network Config On BMC
652
653
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500654Validate IPv6 Network Config On BMC
655 [Documentation] Check that IPv6 network info obtained via redfish matches info
656 ... obtained via CLI.
Sridevi Rameshed94c692025-09-07 23:41:10 -0500657
Prashanth Katti5f7d2e42023-05-22 03:17:25 -0500658 @{ipv6_network_configurations}= Get IPv6 Network Configuration
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500659 ${ipv6_data}= Get BMC IPv6 Info
660 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
661 Should Contain Match ${ipv6_data} ${ipv6_network_configuration['Address']}/*
662 ... msg=IPv6 address does not exist.
663 END
664
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500665
666Delete IPv6 Address
667 [Documentation] Delete IPv6 address of BMC.
Prashanth Kattibcb9dab2025-04-01 12:58:37 -0500668 [Arguments] ${ipv6_addr}
669 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}]
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500670
671 # Description of argument(s):
672 # ipv6_addr IPv6 address to be deleted (e.g. "2001:1234:1234:1234::1234").
673 # valid_status_codes Expected return code from patch operation
674 # (e.g. "200"). See prolog of rest_request
675 # method in redfish_plus.py for details.
676
677 ${empty_dict}= Create Dictionary
678 ${patch_list}= Create List
679
680 @{ipv6_network_configurations}= Get IPv6 Network Configuration
681 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
682 IF '${ipv6_network_configuration['Address']}' == '${ipv6_addr}'
683 Append To List ${patch_list} ${null}
684 ELSE
685 Append To List ${patch_list} ${empty_dict}
686 END
687 END
688
689 ${ip_found}= Run Keyword And Return Status List Should Contain Value
690 ... ${patch_list} ${null} msg=${ipv6_addr} does not exist on BMC
691 Pass Execution If ${ip_found} == ${False} ${ipv6_addr} does not exist on BMC
692
693 # Run patch command only if given IP is found on BMC
694 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list}
695
696 ${active_channel_config}= Get Active Channel Config
697 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
698
699 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data}
Sweta Potthuria1981612025-05-09 05:41:10 -0500700 ... valid_status_codes=${valid_status_codes}
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500701
702 # Note: Network restart takes around 15-18s after patch request processing
703 Sleep ${NETWORK_TIMEOUT}s
704 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
705
706 # IPv6 address that is deleted should not be there on BMC.
707 ${delete_status}= Run Keyword And Return Status Verify IPv6 On BMC ${ipv6_addr}
Anvesh-Kumar_Rayankula3a26c662025-04-16 01:19:26 -0500708 IF '${valid_status_codes}' == '[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}]'
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500709 Should Be True '${delete_status}' == '${False}'
710 ELSE
711 Should Be True '${delete_status}' == '${True}'
712 END
713
714 Validate IPv6 Network Config On BMC
Prashanth Katti5f7d2e42023-05-22 03:17:25 -0500715
716
717Modify IPv6 Address
718 [Documentation] Modify and verify IPv6 address of BMC.
719 [Arguments] ${ipv6} ${new_ipv6} ${prefix_len}
720 ... ${valid_status_codes}=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
721
722 # Description of argument(s):
723 # ipv6 IPv6 address to be replaced (e.g. "2001:AABB:CCDD::AAFF").
724 # new_ipv6 New IPv6 address to be configured.
725 # prefix_len Prefix length value (Range 1 to 128).
726 # valid_status_codes Expected return code from patch operation
727 # (e.g. "200", "201").
728
729 ${empty_dict}= Create Dictionary
730 ${patch_list}= Create List
731 ${prefix_length}= Convert To Integer ${prefix_len}
732 ${ipv6_data}= Create Dictionary
733 ... Address=${new_ipv6} PrefixLength=${prefix_length}
734
735 # Sample IPv6 network configurations:
736 # "IPv6AddressPolicyTable": [],
737 # "IPv6Addresses": [
738 # {
739 # "Address": "X002:db8:0:2::XX0",
740 # "AddressOrigin": "DHCPv6",
741 # "PrefixLength": 128
742 # },
743 # {
744 # "Address": “X002:db8:0:2:a94:XXff:fe82:XXXX",
745 # "AddressOrigin": "SLAAC",
746 # "PrefixLength": 64
747 # },
748 # {
749 # "Address": “Y002:db8:0:2:a94:efff:fe82:5000",
750 # "AddressOrigin": "Static",
751 # "PrefixLength": 56
752 # },
753 # {
754 # "Address": “Z002:db8:0:2:a94:efff:fe82:5000",
755 # "AddressOrigin": "Static",
756 # "PrefixLength": 56
757 # },
758 # {
759 # "Address": “Xe80::a94:efff:YYYY:XXXX",
760 # "AddressOrigin": "LinkLocal",
761 # "PrefixLength": 64
762 # },
763 # {
764 # "Address": “X002:db8:1:2:eff:233:fee:546",
765 # "AddressOrigin": "Static",
766 # "PrefixLength": 56
767 # }
768 # ],
769 # "IPv6DefaultGateway": “XXXX::ab2e:80fe:87df:XXXX”,
770 # "IPv6StaticAddresses": [
771 # {
772 # "Address": “X002:db8:0:2:a94:efff:fe82:5000",
773 # "PrefixLength": 56
774 # },
775 # {
776 # "Address": “Y002:db8:0:2:a94:efff:fe82:5000",
777 # "PrefixLength": 56
778 # },
779 # {
780 # "Address": “Z002:db8:1:2:eff:233:fee:546",
781 # "PrefixLength": 56
782 # }
783 # ],
784 # "IPv6StaticDefaultGateways": [],
785
786 # Find the position of IPv6 address to be modified.
787 @{ipv6_network_configurations}= Get IPv6 Network Configuration
788 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
George Keishinge6e161e2025-05-08 10:18:30 +0530789 IF '${ipv6_network_configuration['Address']}' == '${ipv6}'
790 Append To List ${patch_list} ${ipv6_data}
791 ELSE
792 Append To List ${patch_list} ${empty_dict}
793 END
Prashanth Katti5f7d2e42023-05-22 03:17:25 -0500794 END
795
796 # Modify the IPv6 address only if given IPv6 is found
797 ${ip_found}= Run Keyword And Return Status List Should Contain Value
798 ... ${patch_list} ${ipv6_data} msg=${ipv6} does not exist on BMC
799 Pass Execution If ${ip_found} == ${False} ${ipv6} does not exist on BMC
800
801 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list}
802
803 ${active_channel_config}= Get Active Channel Config
804 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
805
806 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
807 ... body=&{data} valid_status_codes=${valid_status_codes}
808
809 # Note: Network restart takes around 15-18s after patch request processing.
810 Sleep ${NETWORK_TIMEOUT}s
811 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
812
813 # Verify if new IPv6 address is configured on BMC.
814 Verify IPv6 On BMC ${new_ipv6}
815
816 # Verify if old IPv6 address is erased.
817 ${cmd_status}= Run Keyword And Return Status
818 ... Verify IPv6 On BMC ${ipv6}
819 Should Be Equal ${cmd_status} ${False} msg=Old IPv6 address is not deleted.
820
821 Validate IPv6 Network Config On BMC
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500822
823
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500824Set SLAAC Configuration State And Verify
825 [Documentation] Set SLAAC configuration state and verify.
Sridevi Rameshed94c692025-09-07 23:41:10 -0500826 [Arguments] ${slaac_state} ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}]
827 ... ${channel_number}=${CHANNEL_NUMBER}
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500828
829 # Description of argument(s):
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500830 # slaac_state SLAAC state('True' or 'False').
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500831 # valid_status_code Expected valid status codes.
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500832 # channel_number Channel number 1(eth0) or 2(eth1).
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500833
834 ${active_channel_config}= Get Active Channel Config
835 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
836
837 ${data}= Set Variable If ${slaac_state} == ${False} ${DISABLE_SLAAC} ${ENABLE_SLAAC}
838 ${resp}= Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
Sweta Potthuri610f86f2025-05-30 00:47:23 -0500839 ... body=${data} valid_status_codes=${valid_status_codes}
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500840
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500841 # Verify SLAAC is set correctly.
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500842 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
843 ${slaac_verify}= Get From Dictionary ${resp.dict} StatelessAddressAutoConfig
844
George Keishinge6e161e2025-05-08 10:18:30 +0530845 IF '${slaac_verify['IPv6AutoConfigEnabled']}' != '${slaac_state}'
Sweta Potthuriabbbeae2025-08-21 00:06:26 -0500846 Fail msg=SLAAC not set properly.
George Keishinge6e161e2025-05-08 10:18:30 +0530847 END
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500848
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500849Set And Verify DHCPv6 Property
850 [Documentation] Set DHCPv6 property and verify.
851 [Arguments] ${dhcpv6_operating_mode}=${Disabled} ${channel_number}=${CHANNEL_NUMBER}
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500852
853 # Description of argument(s):
854 # dhcpv6_operating_mode Enabled if user wants to enable DHCPv6('Enabled' or 'Disabled').
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500855 # channel_number Channel number 1 or 2.
856
857 Set DHCPv6 Property ${dhcpv6_operating_mode} ${channel_number}
858 Verify DHCPv6 Property ${dhcpv6_operating_mode} ${channel_number}
859
860
861Set DHCPv6 Property
862 [Documentation] Set DHCPv6 attribute is enables or disabled.
863 [Arguments] ${dhcpv6_operating_mode}=${Disabled} ${channel_number}=${CHANNEL_NUMBER}
864
865 # Description of argument(s):
866 # dhcpv6_operating_mode Enabled if user wants to enable DHCPv6('Enabled' or 'Disabled').
867 # channel_number Channel number 1 or 2.
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500868
869 ${data}= Set Variable If '${dhcpv6_operating_mode}' == 'Disabled' ${DISABLE_DHCPv6} ${ENABLE_DHCPv6}
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500870 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
871
872 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
873 ... body=${data} valid_status_codes=[${HTTP_OK},${HTTP_NO_CONTENT}]
874
kvishalbd04bd62025-08-05 03:57:53 -0500875
876Verify DHCPv6 Property
877 [Documentation] Verify DHCPv6 settings is enabled or disabled.
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500878 [Arguments] ${dhcpv6_operating_mode} ${channel_number}=${CHANNEL_NUMBER}
kvishalbd04bd62025-08-05 03:57:53 -0500879
880 # Description of Argument(s):
881 # dhcpv6_operating_mode Enable/ Disable DHCPv6.
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500882 # channel_number Channel number 1 or 2.
883
884 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
kvishalbd04bd62025-08-05 03:57:53 -0500885
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500886 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
887 ${dhcpv6_verify}= Get From Dictionary ${resp.dict} DHCPv6
888
889 Should Be Equal '${dhcpv6_verify['OperatingMode']}' '${dhcpv6_operating_mode}'
Sweta Potthuricb61ff02025-04-09 05:16:09 -0500890
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500891
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500892Get IPv6 Static Default Gateway
893 [Documentation] Get IPv6 static default gateway.
894
895 ${active_channel_config}= Get Active Channel Config
896 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${active_channel_config['${CHANNEL_NUMBER}']['name']}
897
898 @{ipv6_static_defgw_configurations}= Get From Dictionary ${resp.dict} IPv6StaticDefaultGateways
899 RETURN @{ipv6_static_defgw_configurations}
900
Sweta Potthuri2d085732025-07-16 09:10:08 -0500901
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500902Configure IPv6 Static Default Gateway On BMC
903 [Documentation] Configure IPv6 static default gateway on BMC.
904 [Arguments] ${ipv6_gw_addr} ${prefix_length_def}
905 ... ${valid_status_codes}=${HTTP_OK}
Sridevi Rameshed94c692025-09-07 23:41:10 -0500906
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500907 # Description of argument(s):
908 # ipv6_gw_addr IPv6 Static Default Gateway address to be configured.
909 # prefix_len_def Prefix length value (Range 1 to 128).
910 # valid_status_codes Expected return code from patch operation
911 # (e.g. "200", "204".)
912
913 # Prefix Length is passed as None.
914 IF '${prefix_length_def}' == '${None}'
915 ${ipv6_gw}= Create Dictionary Address=${ipv6_gw_addr}
916 ELSE
917 ${ipv6_gw}= Create Dictionary Address=${ipv6_gw_addr} Prefix Length=${prefix_length_def}
918 END
919
920 ${ipv6_static_def_gw}= Get IPv6 Static Default Gateway
921
922 ${num_entries}= Get Length ${ipv6_static_def_gw}
923
924 ${patch_list}= Create List
925 ${empty_dict}= Create Dictionary
926
927 FOR ${INDEX} IN RANGE 0 ${num_entries}
928 Append To List ${patch_list} ${empty_dict}
929 END
930
931 ${valid_status_codes}= Set Variable If '${valid_status_codes}' == '${HTTP_OK}'
932 ... ${HTTP_OK},${HTTP_NO_CONTENT}
933 ... ${valid_status_codes}
934
935 Append To List ${patch_list} ${ipv6_gw}
936 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list}
937
938 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
939 ... body=${data} valid_status_codes=[${valid_status_codes}]
940
941 # Verify the added static default gateway is present in Redfish Get Output.
942 ${ipv6_staticdef_gateway}= Get IPv6 Static Default Gateway
943
944 ${ipv6_static_def_gw_list}= Create List
945 FOR ${ipv6_staticdef_gateway} IN @{ipv6_staticdef_gateway}
946 ${value}= Get From Dictionary ${ipv6_staticdef_gateway} Address
947 Append To List ${ipv6_static_def_gw_list} ${value}
948 END
949
950 IF '${valid_status_codes}' != '${HTTP_OK},${HTTP_NO_CONTENT}'
951 Should Not Contain ${ipv6_static_def_gw_list} ${ipv6_gw_addr}
952 ELSE
953 Should Contain ${ipv6_static_def_gw_list} ${ipv6_gw_addr}
954 END
955
Sweta Potthuri2d085732025-07-16 09:10:08 -0500956
Anvesh-Kumar_Rayankula019d9362025-09-03 22:55:12 -0500957Modify IPv6 Static Default Gateway On BMC
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500958 [Documentation] Modify and verify IPv6 address of BMC.
959 [Arguments] ${ipv6_gw_addr} ${new_static_def_gw} ${prefix_length}
960 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED}]
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500961
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500962 # Description of argument(s):
963 # ipv6_gw_addr IPv6 static default gateway address to be replaced (e.g. "2001:AABB:CCDD::AAFF").
964 # new_static_def_gw New static default gateway address to be configured.
Sridevi Rameshed94c692025-09-07 23:41:10 -0500965 # prefix_length Prefix length value (Range 1 to 128).
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500966 # valid_status_codes Expected return code from patch operation
967 # (e.g. "200", "204").
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500968
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500969 ${empty_dict}= Create Dictionary
970 ${patch_list}= Create List
971 # Prefix Length is passed as None.
972 IF '${prefix_length_def}' == '${None}'
973 ${modified_ipv6_gw_addripv6_data}= Create Dictionary Address=${new_static_def_gw}
974 ELSE
975 ${modified_ipv6_gw_addripv6_data}= Create Dictionary Address=${new_static_def_gw} Prefix Length=${prefix_length_def}
976 END
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500977
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500978 @{ipv6_static_def_gw_list}= Get IPv6 Static Default Gateway
979
980 FOR ${ipv6_static_def_gw} IN @{ipv6_static_def_gw_list}
981 IF '${ipv6_static_def_gw['Address']}' == '${ipv6_gw_addr}'
982 Append To List ${patch_list} ${modified_ipv6_gw_addripv6_data}
983 ELSE
984 Append To List ${patch_list} ${empty_dict}
985 END
986 END
987
988 # Modify the IPv6 address only if given IPv6 static default gateway is found.
989 ${ip_static_def_gw_found}= Run Keyword And Return Status List Should Contain Value
990 ... ${patch_list} ${modified_ipv6_gw_addripv6_data} msg=${ipv6_gw_addr} does not exist on BMC
991 Pass Execution If ${ip_static_def_gw_found} == ${False} ${ipv6_gw_addr} does not exist on BMC
992
993 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list}
994
995 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
996 ... body=&{data} valid_status_codes=${valid_status_codes}
997
998 ${ipv6_staticdef_gateway}= Get IPv6 Static Default Gateway
999
1000 ${ipv6_static_def_gw_list}= Create List
1001 FOR ${ipv6_staticdef_gateway} IN @{ipv6_staticdef_gateway}
Sweta Potthuri2d085732025-07-16 09:10:08 -05001002 ${value}= Get From Dictionary ${ipv6_staticdef_gateway} Address
Sweta Potthuri4b0083f2025-07-09 11:34:40 -05001003 Append To List ${ipv6_static_def_gw_list} ${value}
1004 END
1005
1006 Should Contain ${ipv6_static_def_gw_list} ${new_static_def_gw}
1007 # Verify if old static default gateway address is erased.
1008 Should Not Contain ${ipv6_static_def_gw_list} ${ipv6_gw_addr}
1009
Sweta Potthuri2d085732025-07-16 09:10:08 -05001010
1011Delete IPv6 Static Default Gateway
1012 [Documentation] Delete IPv6 static default gateway on BMC.
1013 [Arguments] ${ipv6_gw_addr}
1014 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}]
1015
1016 # Description of argument(s):
1017 # ipv6_gw_addr IPv6 Static Default Gateway address to be deleted.
1018 # valid_status_codes Expected return code from patch operation
1019 # (e.g. "200").
1020
1021 ${patch_list}= Create List
1022 ${empty_dict}= Create Dictionary
1023
1024 ${ipv6_static_def_gw_list}= Create List
1025 @{ipv6_static_defgw_configurations}= Get IPv6 Static Default Gateway
1026
1027 FOR ${ipv6_staticdef_gateway} IN @{ipv6_static_defgw_configurations}
1028 ${value}= Get From Dictionary ${ipv6_staticdef_gateway} Address
1029 Append To List ${ipv6_static_def_gw_list} ${value}
1030 END
1031
1032 ${defgw_found}= Run Keyword And Return Status List Should Contain Value
1033 ... ${ipv6_static_def_gw_list} ${ipv6_gw_addr} msg=${ipv6_gw_addr} does not exist on BMC
1034 Skip If ${defgw_found} == ${False} ${ipv6_gw_addr} does not exist on BMC
1035
1036 FOR ${ipv6_static_def_gw} IN @{ipv6_static_defgw_configurations}
1037 IF '${ipv6_static_def_gw['Address']}' == '${ipv6_gw_addr}'
1038 Append To List ${patch_list} ${null}
1039 ELSE
1040 Append To List ${patch_list} ${empty_dict}
1041 END
1042 END
1043
1044 # Run patch command only if given IP is found on BMC.
1045 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list}
1046
1047 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data}
1048 ... valid_status_codes=${valid_status_codes}
1049
1050 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list}
1051
1052 @{ipv6_static_defgw_configurations}= Get IPv6 Static Default Gateway
1053 Should Not Contain Match ${ipv6_static_defgw_configurations} ${ipv6_gw_addr}
1054 ... msg=IPv6 Static default gateway does not exist.
Sweta Potthuri35c503b2025-07-27 23:36:20 -05001055
1056
1057Check Coexistence Of Linklocalv6 And Static IPv6
1058 [Documentation] Verify both linklocalv6 and static IPv6 exist.
1059
Sweta Potthuri35c503b2025-07-27 23:36:20 -05001060 # Verify the address origin contains static and linklocal.
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -05001061 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal
Sweta Potthuri35c503b2025-07-27 23:36:20 -05001062
Sweta Potthuri35c503b2025-07-27 23:36:20 -05001063 Should Match Regexp ${ipv6_linklocal_addr} ${linklocal_addr_format}
Sweta Potthuri35c503b2025-07-27 23:36:20 -05001064 Should Contain ${ipv6_addressorigin_list} Static
Sweta Potthuri3c6f97d2025-08-06 00:30:19 -05001065
1066
abhijith-12197078c52025-09-25 01:13:00 -05001067Check Coexistence Of Static IPv6 And SLAAC
abhijith-1214dc01a02025-09-24 11:29:55 -05001068 [Documentation] Verify both static IPv6 and SLAAC coexist.
abhijith-12197078c52025-09-25 01:13:00 -05001069
1070 # Verify the address origin contains static and slaac.
1071 @{ipv6_addressorigin_list} ${ipv6_static_addr}=
1072 ... Get Address Origin List And Address For Type Static
1073
1074 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}=
1075 ... Get Address Origin List And Address For Type SLAAC
1076
1077
abhijith-1214dc01a02025-09-24 11:29:55 -05001078Check Coexistence Of Link Local And SLAAC
1079 [Documentation] Verify both link local and SLAAC coexist.
1080
1081 # Verify the address origin contains SLAAC and link local.
1082 @{ipv6_addressorigin_list} ${ipv6_link_local_addr}=
1083 ... Get Address Origin List And Address For Type LinkLocal
1084
1085 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}=
1086 ... Get Address Origin List And Address For Type SLAAC
1087
1088 Should Match Regexp ${ipv6_link_local_addr} ${linklocal_addr_format}
1089
1090
abhijith-1218ff5db42025-09-24 06:24:03 -05001091Check Coexistence Of Link Local And DHCPv6
1092 [Documentation] Verify both link local and dhcpv6 coexist.
1093
1094 # Verify the address origin contains dhcpv6 and link local.
1095 @{ipv6_address_origin_list} ${ipv6_link_local_addr}=
1096 ... Get Address Origin List And Address For Type LinkLocal
1097
1098 @{ipv6_address_origin_list} ${ipv6_dhcpv6_addr}=
1099 ... Get Address Origin List And Address For Type DHCPv6
1100
1101 Should Match Regexp ${ipv6_link_local_addr} ${linklocal_addr_format}
1102
1103
Sweta Potthuri3c6f97d2025-08-06 00:30:19 -05001104Check If Linklocal Address Is In Correct Format
1105 [Documentation] Linklocal address has network part fe80 and host part EUI64.
1106
1107 # Fetch the linklocal address.
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -05001108 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal
Sweta Potthuri3c6f97d2025-08-06 00:30:19 -05001109
1110 # Follow EUI64 from MAC.
1111 ${system_mac}= Get BMC MAC Address
1112 ${split_octets}= Split String ${system_mac} :
1113 ${first_octet}= Evaluate int('${split_octets[0]}', 16)
1114 ${flipped_hex}= Evaluate format(${first_octet} ^ 2, '02x')
1115 ${grp1}= Evaluate re.sub(r'^0+', '', '${flipped_hex}${split_octets[1]}') modules=re
1116 ${grp2}= Evaluate re.sub(r'^0+', '', '${split_octets[2]}ff') modules=re
1117 ${grp3}= Evaluate re.sub(r'^0+', '', '${split_octets[4]}${split_octets[5]}') modules=re
1118 ${linklocal}= Set Variable fe80::${grp1}:${grp2}:fe${split_octets[3]}:${grp3}
1119
1120 # Verify the linklocal obtained is the same as on the machine.
1121 Should Be Equal ${linklocal} ${ipv6_linklocal_addr}
1122
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -05001123
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001124Check BMC Gets SLAAC Address
1125 [Documentation] Check BMC gets slaac address.
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -05001126
1127 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}= Get Address Origin List And Address For Type SLAAC
1128
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -05001129
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001130Get The Initial DHCPv6 Setting On Each Interface
1131 [Documentation] Get the initial DHCPv6 setting of each interface.
1132 [Arguments] ${channel_number}
Sweta Potthuridb4a6d62025-08-18 11:29:16 -05001133
1134 # Description of the argument(s):
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001135 # channel_number Channel number 1 or 2.
Sweta Potthuridb4a6d62025-08-18 11:29:16 -05001136
1137 ${ethernet_interface}= Set Variable ${active_channel_config['${channel_number}']['name']}
1138 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
1139 ${initial_dhcpv6_iface}= Get From Dictionary ${resp.dict} DHCPv6
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001140 IF ${channel_number}==${1}
1141 Set Test Variable ${dhcpv6_channel_1} ${initial_dhcpv6_iface['OperatingMode']}
1142 ELSE
1143 Set Test Variable ${dhcpv6_channel_2} ${initial_dhcpv6_iface['OperatingMode']}
1144 END
1145
1146
1147Get The Initial DHCPv6 Settings
1148 [Documentation] Get the initial DHCPv6 settings of both the interfaces.
1149
1150 Get The Initial DHCPv6 Setting On Each Interface ${1}
1151 Get The Initial DHCPv6 Setting On Each Interface ${2}
1152
1153
1154Get The Initial SLAAC Settings
1155 [Documentation] Get the initial SLAAC settings of both the interfaces.
1156
Sweta Potthuri6370afd2025-10-08 00:07:46 -05001157 Get The Initial SLAAC Setting On Each Interface ${1}
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001158 Get The Initial SLAAC Setting On Each Interface ${2}
1159
1160
1161Get The Initial SLAAC Setting On Each Interface
1162 [Documentation] Get the initial SLAAC setting of the interface.
1163 [Arguments] ${channel_number}
1164
1165 # Description of the argument(s):
1166 # channel_number Channel number 1 or 2.
1167
1168 ${ethernet_interface}= Set Variable ${active_channel_config['${channel_number}']['name']}
1169 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
1170 ${initial_slaac_iface}= Get From Dictionary ${resp.dict} StatelessAddressAutoConfig
1171 IF ${channel_number}==${1}
1172 Set Test Variable ${slaac_channel_1} ${initial_slaac_iface['IPv6AutoConfigEnabled']}
1173 ELSE
1174 Set Test Variable ${slaac_channel_2} ${initial_slaac_iface['IPv6AutoConfigEnabled']}
1175 END
Sweta Potthuridb4a6d62025-08-18 11:29:16 -05001176
1177
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001178Get Address Origin List And IPv4 or IPv6 Address
1179 [Documentation] Get address origin list and address for type.
Sweta Potthuri6370afd2025-10-08 00:07:46 -05001180 [Arguments] ${ip_address_type} ${channel_number}=${CHANNEL_NUMBER}
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001181
1182 # Description of the argument(s):
Sridevi Rameshed94c692025-09-07 23:41:10 -05001183 # ip_address_type Type of IPv4 or IPv6 address to be checked.
Sweta Potthuri6370afd2025-10-08 00:07:46 -05001184 # channel_number Channel number 1(eth0) or 2(eth1).
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001185
Sweta Potthuri6370afd2025-10-08 00:07:46 -05001186 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${active_channel_config['${channel_number}']['name']}
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001187 @{ip_addresses}= Get From Dictionary ${resp.dict} ${ip_address_type}
1188
1189 ${ip_addressorigin_list}= Create List
1190 ${ip_addr_list}= Create List
1191 FOR ${ip_address} IN @{ip_addresses}
1192 ${ip_addressorigin}= Get From Dictionary ${ip_address} AddressOrigin
1193 Append To List ${ip_addressorigin_list} ${ip_addressorigin}
1194 Append To List ${ip_addr_list} ${ip_address['Address']}
1195 END
1196 RETURN ${ip_addressorigin_list} ${ip_addr_list}
1197
1198
1199Verify All The Addresses Are Intact
1200 [Documentation] Verify all the addresses and address origins remain intact.
Sweta Potthuri6370afd2025-10-08 00:07:46 -05001201 [Arguments] ${channel_number}=${CHANNEL_NUMBER}
1202 ... ${initial_ipv4_addressorigin_list}=${initial_ipv4_addressorigin_list}
1203 ... ${initial_ipv4_addr_list}=${initial_ipv4_addr_list}
1204
1205 # Description of argument(s):
1206 # channel_number Channel number 1(eth0) or 2(eth1).
1207 # initial_ipv4_addressorigin_list Initial IPv4 address origin list.
1208 # initial_ipv4_addr_list Initial IPv4 address list.
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001209
1210 # Verify that it will not impact the IPv4 configuration.
1211 Sleep ${NETWORK_TIMEOUT}
1212 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
1213
Sweta Potthuri6370afd2025-10-08 00:07:46 -05001214 # IPv6 Linklocal address must be present.
1215 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}=
1216 ... Get Address Origin List And Address For Type LinkLocal ${channel_number}
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001217
Sweta Potthuri6370afd2025-10-08 00:07:46 -05001218 # IPv4 addresses must remain intact.
1219 ${ipv4_addressorigin_list} ${ipv4_addr_list}=
1220 ... Get Address Origin List And IPv4 or IPv6 Address IPv4Addresses ${channel_number}
Sweta Potthuriabbbeae2025-08-21 00:06:26 -05001221
1222 Should be Equal ${initial_ipv4_addressorigin_list} ${ipv4_addressorigin_list}
1223 Should be Equal ${initial_ipv4_addr_list} ${ipv4_addr_list}
Sweta Potthurif3d188f2025-09-08 07:17:31 -05001224
1225
1226Get Interface ID Of IPv6
1227 [Documentation] Get interface id of IPv6 address.
1228 [Arguments] ${ipv6_address}
1229
1230 # Description of the argument(s):
1231 # ${ipv6_address} IPv6 Address to extract the last 4 hextets.
1232
1233 # Last 64 bits of SLAAC and Linklocal must be the same.
1234 # Sample IPv6 network configurations.
1235 #"IPv6AddressPolicyTable": [],
1236 # "IPv6Addresses": [
1237 # {
1238 # "Address": "fe80::xxxx:xxxx:xxxx:xxxx",
1239 # "AddressOrigin": "LinkLocal",
1240 # "AddressState": null,
1241 # "PrefixLength": xx
1242 # }
1243 # ],
1244 # {
1245 # "Address": "2002:xxxx:xxxx:xxxx:xxxx",
1246 # "AddressOrigin": "SLAAC",
1247 # "PrefixLength": 64
1248 # }
1249 # ],
1250
1251 ${split_ip_address}= Split String ${ipv6_address} :
1252 ${missing_ip}= Evaluate 8 - len(${split_ip_address}) + 1
1253 ${expanded_ip}= Create List
1254
1255 FOR ${hextet} IN @{split_ip_address}
1256 IF '${hextet}' == ''
1257 FOR ${i} IN RANGE ${missing_ip}
1258 Append To List ${expanded_ip} 0000
1259 END
1260 ELSE
1261 Append To List ${expanded_ip} ${hextet}
1262 END
1263 END
1264 ${interface_id}= Evaluate ':'.join(${expanded_ip}[-4:])
1265 RETURN ${interface_id}
Sweta Potthuri6370afd2025-10-08 00:07:46 -05001266
1267
1268Set And Verify SLAAC Property On Both Interfaces
1269 [Documentation] Set and verify SLAAC property on both interfaces.
1270 [Arguments] ${slaac_value_1} ${slaac_value_2}
1271
1272 # Description of the argument(s):
1273 # slaac_value_1 SLAAC value for channel 1.
1274 # slaac_value_2 SLAAC value for channel 2.
1275
1276 Set SLAAC Configuration State And Verify ${slaac_value_1} [${HTTP_OK}] ${1}
1277 Set SLAAC Configuration State And Verify ${slaac_value_2} [${HTTP_OK}] ${2}
1278
1279 Sleep 30s
1280
1281 # Check SLAAC Settings for eth0.
1282 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}=
1283 ... Get Address Origin List And IPv4 or IPv6 Address IPv6Addresses ${1}
1284 IF "${slaac_value_1}" == "${True}"
1285 Should Not Be Empty ${ipv6_slaac_addr} SLAAC
1286 ELSE
1287 Should Not Contain ${ipv6_addressorigin_list} SLAAC
1288 END
1289
1290 # Check SLAAC Settings for eth1.
1291 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}=
1292 ... Get Address Origin List And IPv4 or IPv6 Address IPv6Addresses ${2}
1293 IF "${slaac_value_2}" == "${True}"
1294 Should Not Be Empty ${ipv6_slaac_addr} SLAAC
1295 ELSE
1296 Should Not Contain ${ipv6_addressorigin_list} SLAAC
1297 END
1298
1299 Verify All The Addresses Are Intact ${1}
1300 Verify All The Addresses Are Intact ${2}
1301 ... ${eth1_initial_ipv4_addressorigin_list} ${eth1_initial_ipv4_addr_list}
1302