[PATCH] Unix IO: Set socket priority after setting family specific options

Vincent Bernat bernat at luffy.cx
Mon Jan 22 10:52:05 CET 2018


From: Vincent Bernat <vincent at bernat.im>

On Linux, setting the ToS will also set the priority and the range of
accepted values is quite limited (masked by 0x1e). Therefore, 0xc0 is
translated to a priority of 0, not something we want, overriding the
"7" priority which was set previously explicitely. To avoid that, just
move setting priority later in the code.
---
 sysdep/unix/io.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c
index 8773f4c41e86..1c81acbf4518 100644
--- a/sysdep/unix/io.c
+++ b/sysdep/unix/io.c
@@ -1226,10 +1226,6 @@ sk_setup(sock *s)
 #endif
   }
 
-  if (s->priority >= 0)
-    if (sk_set_priority(s, s->priority) < 0)
-      return -1;
-
   if (sk_is_ipv4(s))
   {
     if (s->flags & SKF_LADDR_RX)
@@ -1280,6 +1276,10 @@ sk_setup(sock *s)
 	return -1;
   }
 
+  if (s->priority >= 0)
+    if (sk_set_priority(s, s->priority) < 0)
+      return -1;
+
   return 0;
 }
 
-- 
2.15.1



More information about the Bird-users mailing list