vcl: support sockopt of SO_REUSEPORT and SO_DOMAIN

Type: fix

Signed-off-by: wanghanlin <wanghanlin@corp.netease.com>
Change-Id: I800cfffb07bf7d4c4d1454b73febdba03f7d6b75
This commit is contained in:
wanghanlin
2021-02-22 10:38:36 +08:00
committed by Florin Coras
parent f86b967c36
commit 0674f85c80
3 changed files with 26 additions and 0 deletions
+10
View File
@@ -1952,9 +1952,15 @@ getsockopt (int fd, int level, int optname,
case SO_REUSEADDR:
rv = vls_attr (vlsh, VPPCOM_ATTR_GET_REUSEADDR, optval, optlen);
break;
case SO_REUSEPORT:
rv = vls_attr (vlsh, VPPCOM_ATTR_GET_REUSEPORT, optval, optlen);
break;
case SO_BROADCAST:
rv = vls_attr (vlsh, VPPCOM_ATTR_GET_BROADCAST, optval, optlen);
break;
case SO_DOMAIN:
rv = vls_attr (vlsh, VPPCOM_ATTR_GET_DOMAIN, optval, optlen);
break;
case SO_ERROR:
rv = vls_attr (vlsh, VPPCOM_ATTR_GET_ERROR, optval, optlen);
break;
@@ -2053,6 +2059,10 @@ setsockopt (int fd, int level, int optname,
rv = vls_attr (vlsh, VPPCOM_ATTR_SET_REUSEADDR,
(void *) optval, &optlen);
break;
case SO_REUSEPORT:
rv = vls_attr (vlsh, VPPCOM_ATTR_SET_REUSEPORT, (void *) optval,
&optlen);
break;
case SO_BROADCAST:
rv = vls_attr (vlsh, VPPCOM_ATTR_SET_BROADCAST,
(void *) optval, &optlen);
+15
View File
@@ -3636,6 +3636,21 @@ vppcom_session_attr (uint32_t session_handle, uint32_t op,
*buflen = sizeof (u32);
break;
case VPPCOM_ATTR_GET_DOMAIN:
if (buffer && buflen && (*buflen >= sizeof (int)))
{
if (session->transport.is_ip4)
*(int *) buffer = AF_INET;
else
*(int *) buffer = AF_INET6;
*buflen = sizeof (int);
}
else
rv = VPPCOM_EINVAL;
VDBG (2, "VPPCOM_ATTR_GET_DOMAIN: %d, buflen %u", *(int *) buffer,
*buflen);
break;
default:
rv = VPPCOM_EINVAL;
break;
+1
View File
@@ -141,6 +141,7 @@ typedef enum
VPPCOM_ATTR_SET_CKPAIR,
VPPCOM_ATTR_SET_VRF,
VPPCOM_ATTR_GET_VRF,
VPPCOM_ATTR_GET_DOMAIN,
} vppcom_attr_op_t;
typedef struct _vcl_poll