Thread (121 messages) 121 messages, 10 authors, 2021-11-04

Re: [dpdk-dev] [v4] security: add telemetry endpoint for cryptodev security capabilities

From: Gowrishankar Muthukrishnan <hidden>
Date: 2021-11-04 04:30:09

quoted
+static int
+security_handle_cryptodev_crypto_caps(const char *cmd __rte_unused,
const char *params,
+				      struct rte_tel_data *d)
+{
+	const struct rte_security_capability *capabilities;
+	struct rte_tel_data *crypto_caps;
+	const char *capa_param;
+	int dev_id, capa_id;
+	int crypto_caps_n;
+	char *end_param;
+	int rc;
+
+	if (!params || strlen(params) == 0 || !isdigit(*params))
+		return -EINVAL;
+
+	dev_id = strtoul(params, &end_param, 0);
+	capa_param = strtok(end_param, ",");
+	if (!capa_param || strlen(capa_param) == 0 ||
!isdigit(*capa_param))
+		return -EINVAL;
+
+	capa_id = strtoul(capa_param, &end_param, 0);
+	if (*end_param != '\0')
+		CDEV_LOG_ERR("Extra parameters passed to command,
ignoring");
+
+	rc = security_capabilities_from_dev_id(dev_id, (void *)&capabilities);
+	if (rc < 0)
+		return rc;
+
+	crypto_caps = rte_tel_data_alloc();
+	RTE_PTR_OR_ERR_RET(crypto_caps, -ENOMEM);
+
+	rte_tel_data_start_dict(d);
+	crypto_caps_n = crypto_caps_array(crypto_caps, capabilities-
quoted
crypto_capabilities);
+	if (capa_id >= crypto_caps_n) {
+		CDEV_LOG_ERR("Extra parameters passed to command,
ignoring");
+		return -EINVAL;
+	}
Something is not correct here.
Capa_id is not getting used properly.
Security_capabilities should be traversed until capa_id and then extract The
corresponding crypto capabilities. Right?
Yeah right. Fixing it.

Thanks,
Gowrishankar
quoted
+
+	rte_tel_data_add_dict_container(d, "crypto_caps", crypto_caps, 0);
+	rte_tel_data_add_dict_int(d, "crypto_caps_n", crypto_caps_n);
+
+	return 0;
+}
+
+RTE_INIT(security_init_telemetry)
+{
+	rte_telemetry_register_cmd("/security/cryptodev/list",
+		security_handle_cryptodev_list,
+		"Returns list of available crypto devices by IDs. No
parameters.");
+
+	rte_telemetry_register_cmd("/security/cryptodev/sec_caps",
+		security_handle_cryptodev_sec_caps,
+		"Returns security capabilities for a cryptodev. Parameters: int
dev_id");
+
+	rte_telemetry_register_cmd("/security/cryptodev/crypto_caps",
+		security_handle_cryptodev_crypto_caps,
+		"Returns crypto capabilities for a security capability.
Parameters: int dev_id, sec_cap_id");
+}
--
2.25.1
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help