--- src/zabbix_server/ipmi/checks_ipmi.c 2018-02-13 11:52:50.867463154 +0100 +++ src/zabbix_server/ipmi/checks_ipmi.c 2018-02-13 12:38:32.104415709 +0100 @@ -1246,10 +1246,33 @@ addrs[0] = strdup(h->ip); ports[0] = zbx_dsprintf(NULL, "%d", h->port); - if (0 != (ret = ipmi_ip_setup_con(addrs, ports, 1, - h->authtype == -1 ? (unsigned int)IPMI_AUTHTYPE_DEFAULT : (unsigned int)h->authtype, - (unsigned int)h->privilege, h->username, strlen(h->username), - h->password, strlen(h->password), os_hnd, NULL, &h->con))) + // Alex/AT: this patch allows us to use RMCP+ in BMCPICK mode, resolving multiple issues + ipmi_lanp_parm_t ipmi_parms[9]; + + ipmi_parms[0].parm_id = IPMI_LANP_PARMID_ADDRS; + ipmi_parms[0].parm_data = (void *) addrs; + ipmi_parms[0].parm_data_len = 1; + ipmi_parms[1].parm_id = IPMI_LANP_PARMID_PORTS; + ipmi_parms[1].parm_data = (void *) ports; + ipmi_parms[1].parm_data_len = 1; + ipmi_parms[2].parm_id = IPMI_LANP_PARMID_AUTHTYPE; + ipmi_parms[2].parm_val = h->authtype == -1 ? (unsigned int)IPMI_AUTHTYPE_DEFAULT : (unsigned int)h->authtype; + ipmi_parms[3].parm_id = IPMI_LANP_PARMID_PRIVILEGE; + ipmi_parms[3].parm_val = (unsigned int)h->privilege; + ipmi_parms[4].parm_id = IPMI_LANP_PARMID_USERNAME; + ipmi_parms[4].parm_data = h->username; + ipmi_parms[4].parm_data_len = strlen(h->username); + ipmi_parms[5].parm_id = IPMI_LANP_PARMID_PASSWORD; + ipmi_parms[5].parm_data = h->password; + ipmi_parms[5].parm_data_len = strlen(h->password); + ipmi_parms[6].parm_id = IPMI_LANP_AUTHENTICATION_ALGORITHM; + ipmi_parms[6].parm_val = IPMI_LANP_AUTHENTICATION_ALGORITHM_BMCPICK; + ipmi_parms[7].parm_id = IPMI_LANP_INTEGRITY_ALGORITHM; + ipmi_parms[7].parm_val = IPMI_LANP_INTEGRITY_ALGORITHM_BMCPICK; + ipmi_parms[8].parm_id = IPMI_LANP_CONFIDENTIALITY_ALGORITHM; + ipmi_parms[8].parm_val = IPMI_LANP_CONFIDENTIALITY_ALGORITHM_BMCPICK; + + if (0 != (ret = ipmi_lanp_setup_con(ipmi_parms, 9, os_hnd, NULL, &h->con))) { h->err = zbx_dsprintf(h->err, "Cannot connect to IPMI host [%s]:%d." " ipmi_ip_setup_con() returned error 0x%x",