From 59b5ba5ca9ed4b86c54d3e19ece951c2c3289026 Mon Sep 17 00:00:00 2001 From: Evgeniy Kochetov Date: Thu, 23 Jul 2020 11:21:33 +0300 Subject: [PATCH] sock/posix: Add helper macros to get/set fields in sock_impl_opts structure Signed-off-by: Evgeniy Kochetov Change-Id: I2fe650556edf22e253976dcd4ddf07d649789d11 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3498 Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto Reviewed-by: Ben Walker --- module/sock/posix/posix.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/module/sock/posix/posix.c b/module/sock/posix/posix.c index 048a8bae8..6e56f2b9d 100644 --- a/module/sock/posix/posix.c +++ b/module/sock/posix/posix.c @@ -1325,13 +1325,15 @@ posix_sock_impl_get_opts(struct spdk_sock_impl_opts *opts, size_t *len) #define FIELD_OK(field) \ offsetof(struct spdk_sock_impl_opts, field) + sizeof(opts->field) <= *len - if (FIELD_OK(recv_buf_size)) { - opts->recv_buf_size = g_spdk_posix_sock_impl_opts.recv_buf_size; - } - if (FIELD_OK(send_buf_size)) { - opts->send_buf_size = g_spdk_posix_sock_impl_opts.send_buf_size; +#define GET_FIELD(field) \ + if (FIELD_OK(field)) { \ + opts->field = g_spdk_posix_sock_impl_opts.field; \ } + GET_FIELD(recv_buf_size); + GET_FIELD(send_buf_size); + +#undef GET_FIELD #undef FIELD_OK *len = spdk_min(*len, sizeof(g_spdk_posix_sock_impl_opts)); @@ -1349,13 +1351,15 @@ posix_sock_impl_set_opts(const struct spdk_sock_impl_opts *opts, size_t len) #define FIELD_OK(field) \ offsetof(struct spdk_sock_impl_opts, field) + sizeof(opts->field) <= len - if (FIELD_OK(recv_buf_size)) { - g_spdk_posix_sock_impl_opts.recv_buf_size = opts->recv_buf_size; - } - if (FIELD_OK(send_buf_size)) { - g_spdk_posix_sock_impl_opts.send_buf_size = opts->send_buf_size; +#define SET_FIELD(field) \ + if (FIELD_OK(field)) { \ + g_spdk_posix_sock_impl_opts.field = opts->field; \ } + SET_FIELD(recv_buf_size); + SET_FIELD(send_buf_size); + +#undef SET_FIELD #undef FIELD_OK return 0;