Stub infrastructure for storing and retrieving SO_COOKIE. Not storing
the actual cookie to avoid increasing vcl session size.
Type: improvement
Change-Id: Ibdcb31eb33ceab9a0250eae94694ba69e4ecf502
Signed-off-by: Florin Coras <[email protected]>
case SO_BINDTODEVICE:
rv = 0;
break;
+ case SO_COOKIE:
+ rv = vls_attr (vlsh, VPPCOM_ATTR_GET_COOKIE, optval, optlen);
+ break;
default:
LDBG (0, "ERROR: fd %d: getsockopt SOL_SOCKET: vlsh %u "
"optname %d unsupported!", fd, vlsh, optname);
case SO_LINGER:
rv = 0;
break;
+ case SO_COOKIE:
+ rv = vls_attr (vlsh, VPPCOM_ATTR_SET_COOKIE, (void *) optval,
+ &optlen);
+ break;
default:
LDBG (0, "ERROR: fd %d: setsockopt SOL_SOCKET: vlsh %u "
"optname %d unsupported!", fd, vlsh, optname);
rv = VPPCOM_EINVAL;
break;
+ case VPPCOM_ATTR_GET_COOKIE:
+ if (buffer && buflen && (*buflen == sizeof (u64)))
+ {
+ /* VPP-TBD */
+ *(u64 *) buffer = 0;
+
+ VDBG (2, "VPPCOM_ATTR_GET_COOKIE: %d, buflen %d, #VPP-TBD#",
+ *(int *) buffer, *buflen);
+ }
+ else
+ rv = VPPCOM_EINVAL;
+ break;
+
+ case VPPCOM_ATTR_SET_COOKIE:
+ if (buffer && buflen && (*buflen == sizeof (u64)))
+ {
+ VDBG (2, "VPPCOM_ATTR_SET_COOKIE: %d, buflen %d, #VPP-TBD#",
+ *(u64 *) buffer, *buflen);
+ }
+ else
+ rv = VPPCOM_EINVAL;
+ break;
+
case VPPCOM_ATTR_GET_V6ONLY:
if (buffer && buflen && (*buflen >= sizeof (int)))
{
VPPCOM_ATTR_GET_ORIGINAL_DST,
VPPCOM_ATTR_GET_NWRITEQ,
VPPCOM_ATTR_GET_EXT_ENDPT,
+ VPPCOM_ATTR_GET_COOKIE,
+ VPPCOM_ATTR_SET_COOKIE,
} vppcom_attr_op_t;
typedef struct _vcl_poll