Commit b53d6d90 authored by Pavel Emelyanov's avatar Pavel Emelyanov

sk: Support SO_MARK socket option

Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 0a9ef15e
...@@ -10,4 +10,5 @@ message sk_opts_entry { ...@@ -10,4 +10,5 @@ message sk_opts_entry {
optional uint32 so_priority = 8; optional uint32 so_priority = 8;
optional uint32 so_rcvlowat = 9; optional uint32 so_rcvlowat = 9;
optional uint32 so_mark = 10;
} }
...@@ -86,6 +86,10 @@ int restore_socket_opts(int sk, SkOptsEntry *soe) ...@@ -86,6 +86,10 @@ int restore_socket_opts(int sk, SkOptsEntry *soe)
pr_debug("\trestore rcvlowat %d for socket\n", soe->so_rcvlowat); pr_debug("\trestore rcvlowat %d for socket\n", soe->so_rcvlowat);
ret |= restore_opt(sk, SOL_SOCKET, SO_RCVLOWAT, &soe->so_rcvlowat); ret |= restore_opt(sk, SOL_SOCKET, SO_RCVLOWAT, &soe->so_rcvlowat);
} }
if (soe->has_so_mark) {
pr_debug("\trestore mark %d for socket\n", soe->so_mark);
ret |= restore_opt(sk, SOL_SOCKET, SO_MARK, &soe->so_mark);
}
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;
...@@ -129,6 +133,8 @@ int dump_socket_opts(int sk, SkOptsEntry *soe) ...@@ -129,6 +133,8 @@ int dump_socket_opts(int sk, SkOptsEntry *soe)
ret |= dump_opt(sk, SOL_SOCKET, SO_PRIORITY, &soe->so_priority); ret |= dump_opt(sk, SOL_SOCKET, SO_PRIORITY, &soe->so_priority);
soe->has_so_rcvlowat = true; soe->has_so_rcvlowat = true;
ret |= dump_opt(sk, SOL_SOCKET, SO_RCVLOWAT, &soe->so_rcvlowat); ret |= dump_opt(sk, SOL_SOCKET, SO_RCVLOWAT, &soe->so_rcvlowat);
soe->has_so_mark = true;
ret |= dump_opt(sk, SOL_SOCKET, SO_MARK, &soe->so_mark);
ret |= dump_opt(sk, SOL_SOCKET, SO_SNDTIMEO, &tv); ret |= dump_opt(sk, SOL_SOCKET, SO_SNDTIMEO, &tv);
soe->so_snd_tmo_sec = tv.tv_sec; soe->so_snd_tmo_sec = tv.tv_sec;
......
...@@ -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 2 #define NOPTS 3
int main(int argc, char ** argv) int main(int argc, char ** argv)
{ {
...@@ -21,6 +21,7 @@ int main(int argc, char ** argv) ...@@ -21,6 +21,7 @@ int main(int argc, char ** argv)
vname[0] = SO_PRIORITY; vname[0] = SO_PRIORITY;
vname[1] = SO_RCVLOWAT; vname[1] = SO_RCVLOWAT;
vname[2] = SO_MARK;
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