[farsight2/master] transmitters: set the ToS field on outgoing packets
Olivier Crête
olivier.crete at collabora.co.uk
Tue Jul 14 11:49:59 PDT 2009
Set the ToS field to the highest priority in the hope that this will help
reduce latency.
---
transmitters/multicast/fs-multicast-transmitter.c | 11 ++++++++++-
transmitters/rawudp/fs-rawudp-transmitter.c | 11 ++++++++++-
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/transmitters/multicast/fs-multicast-transmitter.c b/transmitters/multicast/fs-multicast-transmitter.c
index 0b7511c..00475cd 100644
--- a/transmitters/multicast/fs-multicast-transmitter.c
+++ b/transmitters/multicast/fs-multicast-transmitter.c
@@ -53,7 +53,7 @@
#else /*G_OS_WIN32*/
# include <netdb.h>
# include <sys/socket.h>
-# include <netinet/in.h>
+# include <netinet/ip.h>
# include <arpa/inet.h>
#endif /*G_OS_WIN32*/
@@ -550,6 +550,7 @@ _bind_port (
#else
struct ip_mreq mreq;
#endif
+ int tos, prio;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
@@ -638,6 +639,14 @@ _bind_port (
goto error;
}
+ tos = IPTOS_LOWDELAY;
+ if (setsockopt (sock, IPPROTO_IP, IP_TOS, &tos, sizeof (tos)) < 0)
+ GST_WARNING ("could not set TOS: %s", g_strerror (errno));
+
+ prio = 6;
+ if (setsockopt (sock, SOL_SOCKET, SO_PRIORITY, &prio, sizeof (tos)) < 0)
+ GST_WARNING ( "could not set socket priority: %s", g_strerror (errno));
+
address.sin_port = htons (port);
retval = bind (sock, (struct sockaddr *) &address, sizeof (address));
if (retval != 0)
diff --git a/transmitters/rawudp/fs-rawudp-transmitter.c b/transmitters/rawudp/fs-rawudp-transmitter.c
index 4a1aab7..6de1fb0 100644
--- a/transmitters/rawudp/fs-rawudp-transmitter.c
+++ b/transmitters/rawudp/fs-rawudp-transmitter.c
@@ -53,7 +53,7 @@
#else /*G_OS_WIN32*/
# include <netdb.h>
# include <sys/socket.h>
-# include <netinet/in.h>
+# include <netinet/ip.h>
# include <arpa/inet.h>
#endif /*G_OS_WIN32*/
@@ -548,6 +548,7 @@ _bind_port (
int sock;
struct sockaddr_in address;
int retval;
+ int tos, prio;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
@@ -597,6 +598,14 @@ _bind_port (
*used_port = port;
+ tos = IPTOS_LOWDELAY;
+ if (setsockopt (sock, IPPROTO_IP, IP_TOS, &tos, sizeof (tos)) < 0)
+ GST_WARNING ( "could not set TOS: %s", g_strerror (errno));
+
+ prio = 6;
+ if (setsockopt (sock, SOL_SOCKET, SO_PRIORITY, &prio, sizeof (tos)) < 0)
+ GST_WARNING ( "could not set socket priority: %s", g_strerror (errno));
+
return sock;
}
--
1.5.6.5
More information about the farsight-commits
mailing list