-| | ... | ${sub_settings['identifier']}
-| | Should be equal as strings | ${vat_data['sub_number_of_tags']}
-| | ... | ${sub_settings['number-of-tags']}
-| | Run keyword if | ${sub_settings['match-any-outer-id']} == ${TRUE}
-| | ... | Should be equal as integers | ${vat_data['sub_outer_vlan_id_any']}
-| | ... | ${sub_settings['match-any-outer-id']}
-| | Run keyword if | ${sub_settings['match-any-inner-id']} == ${TRUE}
-| | ... | Should be equal as integers | ${vat_data['sub_inner_vlan_id_any']}
-| | ... | ${sub_settings['match-any-inner-id']}
-| | Run keyword if | ${sub_settings['exact-match']} == ${TRUE}
-| | ... | Should be equal as integers | ${vat_data['sub_exact_match']}
-| | ... | ${sub_settings['exact-match']}
-| | Run keyword if | ${sub_settings['default-subif']} == ${TRUE}
-| | ... | Should be equal as integers | ${vat_data['sub_default']}
-| | ... | ${sub_settings['default-subif']}
+| | ... | ${sub_interface_settings['identifier']}
+| | Should be equal as strings
+| | ... | ${vat_data['interface_name']} | ${sub_interface}
+| | Run keyword if | ${vat_data['link_up_down']} == 0
+| | ... | Should be equal as strings
+| | ... | ${sub_interface_settings['oper-status']} | down
+| | Run keyword if | ${vat_data['link_up_down']} == 1
+| | ... | Should be equal as strings
+| | ... | ${sub_interface_settings['oper-status']} | up
+
+| Sub-interface state from VAT should be
+| | [Documentation] | Retrieves sub-interface configuration through VAT and \
+| | ... | checks the administrative and operational state.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - Information about a DUT node. Type: dictionary
+| | ... | - sub_interface - Name of an sub-interface on the specified node. \
+| | ... | Type: string
+| | ... | - admin_state - Required administrative state - up or down. \
+| | ... | Type: string
+| | ... | - oper_state - Required operational state - up or down. Type: string
+| | ...
+| | ... | *Example:*
+| | ... | \| Sub-interface state from VAT should be \
+| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0.1 \| up \| up \|
+| | ...
+| | [Arguments] | ${node} | ${sub_interface} | ${admin_state} | ${oper_state}
+| | ...
+| | ${vat_data}= | InterfaceCLI.VPP get interface data
+| | ... | ${node} | ${sub_interface}
+| | Run keyword if | '${admin_state}' == 'down'
+| | ... | Should be equal as strings | ${vat_data['admin_up_down']} | 0
+| | Run keyword if | '${admin_state}' == 'up'
+| | ... | Should be equal as strings | ${vat_data['admin_up_down']} | 1
+| | Run keyword if | '${oper_state}' == 'down'
+| | ... | Should be equal as strings | ${vat_data['link_up_down']} | 0
+| | Run keyword if | '${oper_state}' == 'up'
+| | ... | Should be equal as strings | ${vat_data['link_up_down']} | 1
+
+| Sub-interface indices from Honeycomb and VAT should correspond
+| | [Documentation] | Uses VAT and Honeycomb to get operational data about the\
+| | ... | given sub-interface and compares the interface indexes. The
+| | ... | sub-interface index from Honeycomb should be greater than index from
+| | ... | VAT by one.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - Information about a DUT node. Type: dictionary
+| | ... | - super_interface - Super-interface. Type: string
+| | ... | - identifier - Sub-interface ID. Type: integer or string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Sub-interface indices from Honeycomb and VAT should correspond \
+| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \|
+| | ...
+| | [Arguments] | ${node} | ${super_interface} | ${identifier}
+| | ...
+| | ${api_data}= | interfaceAPI.Get sub interface oper data
+| | ... | ${node} | ${super_interface} | ${identifier}
+| | ${vat_data}= | InterfaceCLI.VPP get interface data
+| | ... | ${node} | ${super_interface}.${identifier}
+| | ${sw_if_index}= | EVALUATE | ${vat_data['sw_if_index']} + 1
+| | Should be equal as strings
+| | ... | ${api_data['if-index']} | ${sw_if_index}
+
+| Honeycomb sets the sub-interface up
+| | [Documentation] | Honeycomb sets the sub-interface up.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - Information about a DUT node. Type: dictionary
+| | ... | - super_interface - Super-interface. Type: string
+| | ... | - identifier - Sub-interface ID. Type: integer or string
+| | ...
+| | ... | *Example:*
+| | ... | Honeycomb sets the sub-interface up\
+| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \|
+| | ...
+| | [Arguments] | ${node} | ${super_interface} | ${identifier}
+| | ...
+| | interfaceAPI.Set sub interface state
+| | ... | ${node} | ${super_interface} | ${identifier} | up
+
+| Honeycomb sets the sub-interface down
+| | [Documentation] | Honeycomb sets the sub-interface down.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - Information about a DUT node. Type: dictionary
+| | ... | - super_interface - Super-interface. Type: string
+| | ... | - identifier - Sub-interface ID. Type: integer or string
+| | ...
+| | ... | *Example:*
+| | ... | Honeycomb sets the sub-interface down\
+| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \|
+| | ...
+| | [Arguments] | ${node} | ${super_interface} | ${identifier}
+| | ...
+| | interfaceAPI.Set sub interface state
+| | ... | ${node} | ${super_interface} | ${identifier} | down
+
+| Honeycomb fails to set sub-interface up
+| | [Documentation] | Honeycomb tries to set sub-interface up and expects error.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - Information about a DUT node. Type: dictionary
+| | ... | - super_interface - Super-interface. Type: string
+| | ... | - identifier - Sub-interface ID. Type: integer or string
+| | ...
+| | ... | *Example:*
+| | ... | \| Honeycomb fails to set sub-interface up\
+| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \|
+| | ...
+| | [Arguments] | ${node} | ${super_interface} | ${identifier}
+| | ...
+| | Run keyword and expect error | *HoneycombError: * was not successful. * 500.
+| | ... | interfaceAPI.Set sub interface state
+| | ... | ${node} | ${super_interface} | ${identifier} | up