socket). Callable by root context only. To avoid having to register a
new sockopt number, #define SO_SETXID to be SO_PASSCRED (which is not
usually callable by setsockopt()):
#if !defined(SO_SETXID)
#define SO_SETXID SO_PASSCRED
#endif
int xid;
setsockopt(fd, SOL_SOCKET, SO_SETXID, &xid, sizeof(xid));
clear_bit(SOCK_PASS_CRED, &sock->flags);
break;
+ case SO_SETXID:
+ if (current->xid) {
+ ret = -EPERM;
+ break;
+ }
+ if (val < 0 || val > MAX_S_CONTEXT) {
+ ret = -EINVAL;
+ break;
+ }
+ sk->sk_xid = val;
+ break;
+
case SO_TIMESTAMP:
sk->sk_rcvtstamp = valbool;
if (valbool)