int SYSTEM_HW_CHASSIS(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { char tmp[8], buf[MAX_STRING_LEN]; int ret = SYSINFO_RET_FAIL; if (1 < num_param(param)) return ret; if (0 != get_param(param, 1, tmp, sizeof(tmp))) *tmp = '\0'; if ('\0' == *tmp || 0 == strcmp(tmp, "full")) /* show full info by default */ ret = get_dmi_info(buf, sizeof(buf), DMI_GET_TYPE | DMI_GET_VENDOR | DMI_GET_MODEL | DMI_GET_SERIAL); else if (0 == strcmp(tmp, "type")) ret = get_dmi_info(buf, sizeof(buf), DMI_GET_TYPE); else if (0 == strcmp(tmp, "vendor")) ret = get_dmi_info(buf, sizeof(buf), DMI_GET_VENDOR); else if (0 == strcmp(tmp, "model")) ret = get_dmi_info(buf, sizeof(buf), DMI_GET_MODEL); else if (0 == strcmp(tmp, "serial")) ret = get_dmi_info(buf, sizeof(buf), DMI_GET_SERIAL); if (SYSINFO_RET_OK == ret) SET_STR_RESULT(result, zbx_strdup(NULL, buf + 1)); /* buf has a leading space */ return ret; }
int SYSTEM_HW_CHASSIS(AGENT_REQUEST *request, AGENT_RESULT *result) { char *mode, buf[MAX_STRING_LEN]; int ret = SYSINFO_RET_FAIL; if (1 < request->nparam) return ret; mode = get_rparam(request, 0); if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "full")) /* show full info by default */ ret = get_dmi_info(buf, sizeof(buf), DMI_GET_TYPE | DMI_GET_VENDOR | DMI_GET_MODEL | DMI_GET_SERIAL); else if (0 == strcmp(mode, "type")) ret = get_dmi_info(buf, sizeof(buf), DMI_GET_TYPE); else if (0 == strcmp(mode, "vendor")) ret = get_dmi_info(buf, sizeof(buf), DMI_GET_VENDOR); else if (0 == strcmp(mode, "model")) ret = get_dmi_info(buf, sizeof(buf), DMI_GET_MODEL); else if (0 == strcmp(mode, "serial")) ret = get_dmi_info(buf, sizeof(buf), DMI_GET_SERIAL); if (SYSINFO_RET_OK == ret) SET_STR_RESULT(result, zbx_strdup(NULL, buf + 1)); /* buf has a leading space */ return ret; }