Spdk/python/spdk/rpc/sock.py
Boris Glimcher 6212597bda sock/ssl: Add psk_key and psk_identity options to spdk_sock_impl_opts
Note, this change only sets defaults for the ID/KEY,
more specific use cases like NVMe/TCP may set the ID and KEY on a per connection basis.

Also simplify PSK identity string, that isn't NVMe focused.
NVMe libraries using this will need to construct more complicated
identity strings and pass them to the sock layer.

Example:
  rpc.py sock_impl_set_options -i ssl --psk-key 4321DEADBEEF1234
  rpc.py sock_impl_set_options -i ssl --psk-identity psk.spdk.io

  ./build/examples/perf --psk-key 4321DEADBEEF1234 --psk-identity psk.spdk.io

  ./build/examples/hello_sock --psk-key 4321DEADBEEF1234 --psk-identity psk.spdk.io

Change-Id: I1cb5b0b706bdeafbccbc71f8320bc8e2961cbb55
Signed-off-by: Boris Glimcher <Boris.Glimcher@emc.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13759
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
2022-08-15 16:52:28 +00:00

87 lines
3.4 KiB
Python

def sock_impl_get_options(client, impl_name=None):
"""Get parameters for the socket layer implementation.
Args:
impl_name: name of socket implementation, e.g. posix
"""
params = {}
params['impl_name'] = impl_name
return client.call('sock_impl_get_options', params)
def sock_impl_set_options(client,
impl_name=None,
recv_buf_size=None,
send_buf_size=None,
enable_recv_pipe=None,
enable_quickack=None,
enable_placement_id=None,
enable_zerocopy_send_server=None,
enable_zerocopy_send_client=None,
zerocopy_threshold=None,
tls_version=None,
enable_ktls=None,
psk_key=None,
psk_identity=None):
"""Set parameters for the socket layer implementation.
Args:
impl_name: name of socket implementation, e.g. posix
recv_buf_size: size of socket receive buffer in bytes (optional)
send_buf_size: size of socket send buffer in bytes (optional)
enable_recv_pipe: enable or disable receive pipe (optional)
enable_quickack: enable or disable quickack (optional)
enable_placement_id: option for placement_id. 0:disable,1:incoming_napi,2:incoming_cpu (optional)
enable_zerocopy_send_server: enable or disable zerocopy on send for server sockets(optional)
enable_zerocopy_send_client: enable or disable zerocopy on send for client sockets(optional)
zerocopy_threshold: set zerocopy_threshold in bytes(optional)
tls_version: set TLS protocol version (optional)
enable_ktls: enable or disable Kernel TLS (optional)
psk_key: set psk_key (optional)
psk_identity: set psk_identity (optional)
"""
params = {}
params['impl_name'] = impl_name
if recv_buf_size is not None:
params['recv_buf_size'] = recv_buf_size
if send_buf_size is not None:
params['send_buf_size'] = send_buf_size
if enable_recv_pipe is not None:
params['enable_recv_pipe'] = enable_recv_pipe
if enable_quickack is not None:
params['enable_quickack'] = enable_quickack
if enable_placement_id is not None:
params['enable_placement_id'] = enable_placement_id
if enable_zerocopy_send_server is not None:
params['enable_zerocopy_send_server'] = enable_zerocopy_send_server
if enable_zerocopy_send_client is not None:
params['enable_zerocopy_send_client'] = enable_zerocopy_send_client
if zerocopy_threshold is not None:
params['zerocopy_threshold'] = zerocopy_threshold
if tls_version is not None:
params['tls_version'] = tls_version
if enable_ktls is not None:
params['enable_ktls'] = enable_ktls
if psk_key is not None:
params['psk_key'] = psk_key
if psk_identity is not None:
params['psk_identity'] = psk_identity
return client.call('sock_impl_set_options', params)
def sock_set_default_impl(client, impl_name=None):
"""Set the default socket implementation.
Args:
impl_name: name of socket implementation, e.g. posix
"""
params = {}
params['impl_name'] = impl_name
return client.call('sock_set_default_impl', params)