]> git.proxmox.com Git - mirror_kronosnet.git/commitdiff
libknet: some FreeBSD compatibility fixes.
authorChristine Caulfield <ccaulfie@redhat.com>
Thu, 24 Aug 2017 08:23:16 +0000 (09:23 +0100)
committerChristine Caulfield <ccaulfie@redhat.com>
Thu, 24 Aug 2017 08:23:16 +0000 (09:23 +0100)
Also add support for KNET_LINK_FLAG_TRAFFICHIPRIO on FreeBSD

Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
libknet/internals.h
libknet/threads_tx.c
libknet/transport_common.c

index e87c35e21fe48b7518eb4613c953f6fdaaca1bc7..69760f76aea55edea7ad78c008dedc3646416000 100644 (file)
@@ -14,6 +14,7 @@
  * NOTE: you shouldn't need to include this header normally
  */
 
+#include <pthread.h>
 #include "libknet.h"
 #include "onwire.h"
 #include "compat.h"
index b4466a2e8a2199a334239b93211a73544895045f..c1a793207ec5bb6b6d987063462f3557bf103d74 100644 (file)
@@ -55,7 +55,8 @@ static int _dispatch_to_links(knet_handle_t knet_h, struct knet_host *dst_host,
                while (msg_idx < msgs_to_send) {
                        msg[msg_idx].msg_hdr.msg_name = &cur_link->dst_addr;
 
-                       for (i=0; i<msg[msg_idx].msg_hdr.msg_iovlen; i++) {
+                       /* Cast for Linux/BSD compatibility */
+                       for (i=0; i<(unsigned int)msg[msg_idx].msg_hdr.msg_iovlen; i++) {
                                cur_link->status.stats.tx_data_bytes += msg[msg_idx].msg_hdr.msg_iov[i].iov_len;
                        }
                        cur_link->status.stats.tx_data_packets++;
index b95240515bed0ec4248fac39d5b0dddc429e143c..f0f3eafb4bc92a293957fa553a41934ae1bf014d 100644 (file)
@@ -132,6 +132,18 @@ int _configure_common_socket(knet_handle_t knet_h, int sock, uint64_t flags, con
                }
        }
 #endif
+#if defined(IP_TOS) && defined(IPTOS_LOWDELAY)
+       if (flags & KNET_LINK_FLAG_TRAFFICHIPRIO) {
+               value = IPTOS_LOWDELAY;
+               if (setsockopt(sock, IPPROTO_IP, IP_TOS, &value, sizeof(value)) < 0) {
+                       savederrno = errno;
+                       err = -1;
+                       log_err(knet_h, KNET_SUB_TRANSPORT, "Unable to set %s priority: %s",
+                               type, strerror(savederrno));
+                       goto exit_error;
+               }
+       }
+#endif
 
 exit_error:
        errno = savederrno;