]> git.sesse.net Git - cubemap/blobdiff - udpstream.cpp
The SO_MAX_PACING_RATE patches are now released in 3.13.
[cubemap] / udpstream.cpp
index 5ed16df2f177d22a72ff008937b5e68f0d45743a..5f5d8468e3c19c68ebbe82219d668705f19e9876 100644 (file)
@@ -6,10 +6,15 @@
 #include "udpstream.h"
 #include "util.h"
 
-UDPStream::UDPStream(const sockaddr_in6 &dst, MarkPool *mark_pool)
+#ifndef SO_MAX_PACING_RATE
+#define SO_MAX_PACING_RATE 47
+#endif
+
+UDPStream::UDPStream(const sockaddr_in6 &dst, MarkPool *mark_pool, uint32_t pacing_rate)
        : dst(dst),
          mark_pool(mark_pool),
-         fwmark(0)
+         fwmark(0),
+         pacing_rate(pacing_rate)
 {
        sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
        if (sock == -1) {
@@ -26,6 +31,11 @@ UDPStream::UDPStream(const sockaddr_in6 &dst, MarkPool *mark_pool)
                        }
                }
        }
+       if (setsockopt(sock, SOL_SOCKET, SO_MAX_PACING_RATE, &pacing_rate, sizeof(pacing_rate)) == -1) {
+               if (pacing_rate != ~0U) {
+                       log_perror("setsockopt(SO_MAX_PACING_RATE)");
+               }
+       }
 }
 
 UDPStream::~UDPStream()