Commit 293eca31 authored by Pavel Emelyanov's avatar Pavel Emelyanov

sk: Support SO_NO_CHECK option

Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 9988c38d
...@@ -14,4 +14,5 @@ message sk_opts_entry { ...@@ -14,4 +14,5 @@ message sk_opts_entry {
optional bool so_passcred = 11; optional bool so_passcred = 11;
optional bool so_passsec = 12; optional bool so_passsec = 12;
optional bool so_dontroute = 13; optional bool so_dontroute = 13;
optional bool so_no_check = 14;
} }
...@@ -105,6 +105,11 @@ int restore_socket_opts(int sk, SkOptsEntry *soe) ...@@ -105,6 +105,11 @@ int restore_socket_opts(int sk, SkOptsEntry *soe)
pr_debug("\tset dontroute for socket\n"); pr_debug("\tset dontroute for socket\n");
ret |= restore_opt(sk, SOL_SOCKET, SO_DONTROUTE, &val); ret |= restore_opt(sk, SOL_SOCKET, SO_DONTROUTE, &val);
} }
if (soe->has_so_no_check && soe->so_no_check) {
val = 1;
pr_debug("\tset no_check for socket\n");
ret |= restore_opt(sk, SOL_SOCKET, SO_NO_CHECK, &val);
}
tv.tv_sec = soe->so_snd_tmo_sec; tv.tv_sec = soe->so_snd_tmo_sec;
tv.tv_usec = soe->so_snd_tmo_usec; tv.tv_usec = soe->so_snd_tmo_usec;
...@@ -175,6 +180,10 @@ int dump_socket_opts(int sk, SkOptsEntry *soe) ...@@ -175,6 +180,10 @@ int dump_socket_opts(int sk, SkOptsEntry *soe)
soe->has_so_dontroute = true; soe->has_so_dontroute = true;
soe->so_dontroute = val ? true : false; soe->so_dontroute = val ? true : false;
ret |= dump_opt(sk, SOL_SOCKET, SO_NO_CHECK, &val);
soe->has_so_no_check = true;
soe->so_no_check = val ? true : false;
return ret; return ret;
} }
......
...@@ -12,7 +12,7 @@ const char *test_author = "Pavel Emelyanov <xemul@parallels.com>"; ...@@ -12,7 +12,7 @@ const char *test_author = "Pavel Emelyanov <xemul@parallels.com>";
#define TEST_PORT 59687 #define TEST_PORT 59687
#define TEST_ADDR INADDR_ANY #define TEST_ADDR INADDR_ANY
#define NOPTS 6 #define NOPTS 7
int main(int argc, char ** argv) int main(int argc, char ** argv)
{ {
...@@ -25,6 +25,7 @@ int main(int argc, char ** argv) ...@@ -25,6 +25,7 @@ int main(int argc, char ** argv)
vname[3] = SO_PASSCRED; vname[3] = SO_PASSCRED;
vname[4] = SO_PASSSEC; vname[4] = SO_PASSSEC;
vname[5] = SO_DONTROUTE; vname[5] = SO_DONTROUTE;
vname[6] = SO_NO_CHECK;
test_init(argc, argv); 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