X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=udpstream.cpp;h=5f5d8468e3c19c68ebbe82219d668705f19e9876;hp=5ed16df2f177d22a72ff008937b5e68f0d45743a;hb=d6d6dc64f1de88ad86ef475a454e8f3d758a4d7a;hpb=8cdf715a5a6320a0b8c1152a28c40bc0dd86676b diff --git a/udpstream.cpp b/udpstream.cpp index 5ed16df..5f5d846 100644 --- a/udpstream.cpp +++ b/udpstream.cpp @@ -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()