if (len < sizeof(vsi))
return false;
- else if (!umove_or_printaddr(tcp, addr, &vsi)) {
- PRINT_FIELD_U("{", vsi, vsi_mgr_id);
- PRINT_FIELD_STRING(", ", vsi, vsi_type_id,
- sizeof(vsi.vsi_type_id), QUOTE_FORCE_HEX);
- PRINT_FIELD_U(", ", vsi, vsi_type_version);
- tprints("}");
- }
+ if (umove_or_printaddr(tcp, addr, &vsi))
+ return true;
+
+ PRINT_FIELD_U("{", vsi, vsi_mgr_id);
+ PRINT_FIELD_STRING(", ", vsi, vsi_type_id,
+ sizeof(vsi.vsi_type_id), QUOTE_FORCE_HEX);
+ PRINT_FIELD_U(", ", vsi, vsi_type_version);
+
+ if (!IS_ARRAY_ZERO(vsi.pad))
+ PRINT_FIELD_HEX_ARRAY(", ", vsi, pad);
+
+ tprints("}");
return true;
}
printf(", vsi_type_id=\"\\x61\\x62\\x63\"");
PRINT_FIELD_U(", ", vsi, vsi_type_version);
printf("}"));
+
+ static const struct ifla_port_vsi vsi2 = {
+ .vsi_mgr_id = 0xab,
+ .vsi_type_id = { 10, 0, 255 },
+ .vsi_type_version = 0xef,
+ .pad = { 0, 1, 2 },
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_ifinfomsg, print_ifinfomsg,
+ IFLA_PORT_VSI_TYPE, pattern, vsi2,
+ PRINT_FIELD_U("{", vsi2, vsi_mgr_id);
+ printf(", vsi_type_id=\"\\x0a\\x00\\xff\"");
+ PRINT_FIELD_U(", ", vsi2, vsi_type_version);
+ printf(", pad=\"\\x00\\x01\\x02\"");
+ printf("}"));
#endif
puts("+++ exited with 0 +++");