sock: add get_placement_id function.
Placement_id is related with getsockopt with the optname= SO_INCOMING_NAPI_ID. For some testing platform, it is not supported with this macro, so use ifdef to avoid send this to the kernel. Change-Id: I9e49e6e15810af0cd5085b92469c15a53ac09ada Signed-off-by: Ziye Yang <ziye.yang@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/454468 Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Maciej Szwed <maciej.szwed@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
17b77d79ee
commit
404d27263f
@ -85,6 +85,7 @@ struct spdk_net_impl {
|
||||
bool (*is_ipv6)(struct spdk_sock *sock);
|
||||
bool (*is_ipv4)(struct spdk_sock *sock);
|
||||
|
||||
int (*get_placement_id)(struct spdk_sock *sock, int *placement_id);
|
||||
struct spdk_sock_group_impl *(*group_impl_create)(void);
|
||||
int (*group_impl_add_sock)(struct spdk_sock_group_impl *group, struct spdk_sock *sock);
|
||||
int (*group_impl_remove_sock)(struct spdk_sock_group_impl *group, struct spdk_sock *sock);
|
||||
|
@ -469,6 +469,24 @@ spdk_posix_sock_is_ipv4(struct spdk_sock *_sock)
|
||||
return (sa.ss_family == AF_INET);
|
||||
}
|
||||
|
||||
static int
|
||||
spdk_posix_sock_get_placement_id(struct spdk_sock *_sock, int *placement_id)
|
||||
{
|
||||
int rc = -1;
|
||||
|
||||
#if defined(SO_INCOMING_NAPI_ID)
|
||||
struct spdk_posix_sock *sock = __posix_sock(_sock);
|
||||
socklen_t salen = sizeof(int);
|
||||
|
||||
rc = getsockopt(sock->fd, SOL_SOCKET, SO_INCOMING_NAPI_ID, placement_id, &salen);
|
||||
if (rc != 0) {
|
||||
SPDK_ERRLOG("getsockopt() failed (errno=%d)\n", errno);
|
||||
}
|
||||
|
||||
#endif
|
||||
return rc;
|
||||
}
|
||||
|
||||
static struct spdk_sock_group_impl *
|
||||
spdk_posix_sock_group_impl_create(void)
|
||||
{
|
||||
@ -604,6 +622,7 @@ static struct spdk_net_impl g_posix_net_impl = {
|
||||
.set_sendbuf = spdk_posix_sock_set_sendbuf,
|
||||
.is_ipv6 = spdk_posix_sock_is_ipv6,
|
||||
.is_ipv4 = spdk_posix_sock_is_ipv4,
|
||||
.get_placement_id = spdk_posix_sock_get_placement_id,
|
||||
.group_impl_create = spdk_posix_sock_group_impl_create,
|
||||
.group_impl_add_sock = spdk_posix_sock_group_impl_add_sock,
|
||||
.group_impl_remove_sock = spdk_posix_sock_group_impl_remove_sock,
|
||||
|
@ -974,6 +974,12 @@ spdk_vpp_sock_is_ipv4(struct spdk_sock *_sock)
|
||||
return __vpp_session(_sock)->app_session.transport.is_ip4;
|
||||
}
|
||||
|
||||
static int
|
||||
spdk_vpp_sock_get_placement_id(struct spdk_sock *_sock, int *placement_id)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
static struct spdk_sock_group_impl *
|
||||
spdk_vpp_sock_group_impl_create(void)
|
||||
{
|
||||
@ -1387,6 +1393,7 @@ static struct spdk_net_impl g_vpp_net_impl = {
|
||||
.set_sendbuf = spdk_vpp_sock_set_sendbuf,
|
||||
.is_ipv6 = spdk_vpp_sock_is_ipv6,
|
||||
.is_ipv4 = spdk_vpp_sock_is_ipv4,
|
||||
.get_placement_id = spdk_vpp_sock_get_placement_id,
|
||||
.group_impl_create = spdk_vpp_sock_group_impl_create,
|
||||
.group_impl_add_sock = spdk_vpp_sock_group_impl_add_sock,
|
||||
.group_impl_remove_sock = spdk_vpp_sock_group_impl_remove_sock,
|
||||
|
@ -244,6 +244,12 @@ spdk_ut_sock_is_ipv4(struct spdk_sock *_sock)
|
||||
return true;
|
||||
}
|
||||
|
||||
static int
|
||||
spdk_ut_sock_get_placement_id(struct spdk_sock *_sock, int *placement_id)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
static struct spdk_sock_group_impl *
|
||||
spdk_ut_sock_group_impl_create(void)
|
||||
{
|
||||
@ -317,6 +323,7 @@ static struct spdk_net_impl g_ut_net_impl = {
|
||||
.set_sendbuf = spdk_ut_sock_set_sendbuf,
|
||||
.is_ipv6 = spdk_ut_sock_is_ipv6,
|
||||
.is_ipv4 = spdk_ut_sock_is_ipv4,
|
||||
.get_placement_id = spdk_ut_sock_get_placement_id,
|
||||
.group_impl_create = spdk_ut_sock_group_impl_create,
|
||||
.group_impl_add_sock = spdk_ut_sock_group_impl_add_sock,
|
||||
.group_impl_remove_sock = spdk_ut_sock_group_impl_remove_sock,
|
||||
|
Loading…
Reference in New Issue
Block a user