X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=udpstream.cpp;h=11e152746111568407d7ef5c6714eede9f63a217;hp=18522435ba82b6174c8e7d5a0045b10ec0cb05e2;hb=ce0d42a14da5686366d0c73fa9b152e90619ff91;hpb=7b3d494100ef1063578b1ef76818baee4ab53ada diff --git a/udpstream.cpp b/udpstream.cpp index 1852243..11e1527 100644 --- a/udpstream.cpp +++ b/udpstream.cpp @@ -1,12 +1,20 @@ +#include +#include + #include "log.h" #include "markpool.h" #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) { @@ -23,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 != 0) { + log_perror("setsockopt(SO_MAX_PACING_RATE)"); + } + } } UDPStream::~UDPStream()