Commit b6562ed3 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Tomasz Zawadzki
Browse files

keyring/linux: add keyring_linux_set_options RPC



Change-Id: I4e2dcb5dd276c3c601474af67c867b504ed8b0ca
Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21761


Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot
parent 6610b3e4
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -12853,3 +12853,37 @@ Example response:
  ]
}
~~~

### keyring_linux_set_options {#keyring_linux_set_options}

Set options of the keyring_linux module.

#### Parameters

Name                    | Optional | Type        | Description
----------------------- | -------- | ----------- | -----------
enable                  | Optional | boolean     | Enable the module.

#### Example

Example request:
~~~json
{
  "jsonrpc": "2.0",
  "method": "keyring_linux_set_options",
  "id": 1
  "params": {
    "enable": true
  }
}
~~~

Example response:

~~~json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": true
}
~~~
+1 −1
Original line number Diff line number Diff line
@@ -196,4 +196,4 @@ endif

# module/keyring
DEPDIRS-keyring_file := log keyring util $(JSON_LIBS)
DEPDIRS-keyring_linux := json log keyring util
DEPDIRS-keyring_linux := log keyring util $(JSON_LIBS)
+1 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
SO_VER := 1
SO_MINOR := 0

C_SRCS = keyring.c
C_SRCS = keyring.c keyring_rpc.c
LIBNAME = keyring_linux

LOCAL_SYS_LIBS = -lkeyutils
+30 −1
Original line number Diff line number Diff line
@@ -3,18 +3,35 @@
 */

#include <keyutils.h>
#include "keyring_linux.h"
#include "spdk/keyring.h"
#include "spdk/keyring_module.h"
#include "spdk/log.h"
#include "spdk/string.h"
#include "spdk/util.h"

static struct keyring_linux_opts g_opts;

struct linux_key {
	key_serial_t sn;
};

static struct spdk_keyring_module g_keyring_linux;

void
keyring_linux_get_opts(struct keyring_linux_opts *opts)
{
	memcpy(opts, &g_opts, sizeof(*opts));
}

int
keyring_linux_set_opts(struct keyring_linux_opts *opts)
{
	g_opts.enable = opts->enable;

	return 0;
}

static int
linux_find_key(const char *name, key_serial_t *outsn)
{
@@ -100,10 +117,21 @@ linux_dump_info(struct spdk_key *key, struct spdk_json_write_ctx *w)
	spdk_json_write_named_uint32(w, "sn", lkey->sn);
}

static void
linux_write_config(struct spdk_json_write_ctx *w)
{
	spdk_json_write_object_begin(w);
	spdk_json_write_named_string(w, "method", "keyring_linux_set_options");
	spdk_json_write_named_object_begin(w, "params");
	spdk_json_write_named_bool(w, "enable", g_opts.enable);
	spdk_json_write_object_end(w);
	spdk_json_write_object_end(w);
}

static int
linux_init(void)
{
	return -ENODEV;
	return g_opts.enable ? 0 : -ENODEV;
}

static struct spdk_keyring_module g_keyring_linux = {
@@ -115,5 +143,6 @@ static struct spdk_keyring_module g_keyring_linux = {
	.get_key = linux_get_key,
	.get_ctx_size = linux_get_ctx_size,
	.dump_info = linux_dump_info,
	.write_config = linux_write_config,
};
SPDK_KEYRING_REGISTER_MODULE(linux, &g_keyring_linux);
+17 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: BSD-3-Clause
 * Copyright (c) 2024 Intel Corporation. All rights reserved.
 */

#ifndef SPDK_KEYRING_LINUX_H
#define SPDK_KEYRING_LINUX_H

#include "spdk/stdinc.h"

struct keyring_linux_opts {
	bool enable;
};

int keyring_linux_set_opts(struct keyring_linux_opts *opts);
void keyring_linux_get_opts(struct keyring_linux_opts *opts);

#endif /* SPDK_KEYRING_LINUX_H */
Loading