Commit 5e1a9f84 authored by Pavel Emelyanov's avatar Pavel Emelyanov

sk: Support SO_PASSSEC and SO_PASSCRED options

There's some bug in show fn for options :( Will be fixed later.
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent b53d6d90
......@@ -11,4 +11,6 @@ message sk_opts_entry {
optional uint32 so_priority = 8;
optional uint32 so_rcvlowat = 9;
optional uint32 so_mark = 10;
optional bool so_passcred = 11;
optional bool so_passsec = 12;
}
......@@ -72,7 +72,7 @@ int do_restore_opt(int sk, int level, int name, void *val, int len)
int restore_socket_opts(int sk, SkOptsEntry *soe)
{
int ret = 0;
int ret = 0, val;
struct timeval tv;
pr_info("%d restore sndbuf %d rcv buf %d\n", sk, soe->so_sndbuf, soe->so_rcvbuf);
......@@ -90,6 +90,16 @@ int restore_socket_opts(int sk, SkOptsEntry *soe)
pr_debug("\trestore mark %d for socket\n", soe->so_mark);
ret |= restore_opt(sk, SOL_SOCKET, SO_MARK, &soe->so_mark);
}
if (soe->has_so_passcred && soe->so_passcred) {
val = 1;
pr_debug("\tset passcred for socket\n");
ret |= restore_opt(sk, SOL_SOCKET, SO_PASSCRED, &val);
}
if (soe->has_so_passsec && soe->so_passsec) {
val = 1;
pr_debug("\tset passsec for socket\n");
ret |= restore_opt(sk, SOL_SOCKET, SO_PASSSEC, &val);
}
tv.tv_sec = soe->so_snd_tmo_sec;
tv.tv_usec = soe->so_snd_tmo_usec;
......@@ -148,6 +158,14 @@ int dump_socket_opts(int sk, SkOptsEntry *soe)
soe->reuseaddr = val ? true : false;
soe->has_reuseaddr = true;
ret |= dump_opt(sk, SOL_SOCKET, SO_PASSCRED, &val);
soe->has_so_passcred = true;
soe->so_passcred = val ? true : false;
ret |= dump_opt(sk, SOL_SOCKET, SO_PASSSEC, &val);
soe->has_so_passsec = true;
soe->so_passsec = val ? true : false;
return ret;
}
......
......@@ -12,7 +12,7 @@ const char *test_author = "Pavel Emelyanov <xemul@parallels.com>";
#define TEST_PORT 59687
#define TEST_ADDR INADDR_ANY
#define NOPTS 3
#define NOPTS 5
int main(int argc, char ** argv)
{
......@@ -22,6 +22,8 @@ int main(int argc, char ** argv)
vname[0] = SO_PRIORITY;
vname[1] = SO_RCVLOWAT;
vname[2] = SO_MARK;
vname[3] = SO_PASSCRED;
vname[4] = SO_PASSSEC;
test_init(argc, argv);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment