diff options
author | schmirl <schmirl> | 2007-05-09 09:12:42 +0000 |
---|---|---|
committer | schmirl <schmirl> | 2007-05-09 09:12:42 +0000 |
commit | bb1ac54c87ea689e6275838c606fa7224adf4169 (patch) | |
tree | 5bce55f61bc8d7b527dc84db5ae4bd5ffbe1a1c4 /tools | |
parent | 2b103196d6fb69336a14d9167dbda701ab135183 (diff) | |
download | vdr-plugin-streamdev-bb1ac54c87ea689e6275838c606fa7224adf4169.tar.gz vdr-plugin-streamdev-bb1ac54c87ea689e6275838c606fa7224adf4169.tar.bz2 |
Set DSCP 41 on stream data packets. WMM capable WLAN accesspoints
should understand this and give precedence. For Internet streaming
it could be used by traffic shapers. Suggested by ollo@vdrportal (#237).
Modified Files:
server/connectionHTTP.c server/connectionVTP.c tools/socket.c
tools/socket.h
Diffstat (limited to 'tools')
-rw-r--r-- | tools/socket.c | 14 | ||||
-rw-r--r-- | tools/socket.h | 3 |
2 files changed, 17 insertions, 0 deletions
diff --git a/tools/socket.c b/tools/socket.c index 4b5167d..e9266c5 100644 --- a/tools/socket.c +++ b/tools/socket.c @@ -6,6 +6,15 @@ #include <errno.h> #include <fcntl.h> +// default class: best effort +#define DSCP_BE 0 +// gold class (video): assured forwarding 4 with lowest drop precedence +#define DSCP_AF41 34 << 2 +// premium class (voip): expedited forwarding +#define DSCP_EF 46 << 2 +// actual DSCP value used +#define STREAMDEV_DSCP DSCP_AF41 + cTBSocket::cTBSocket(int Type) { memset(&m_LocalAddr, 0, sizeof(m_LocalAddr)); memset(&m_RemoteAddr, 0, sizeof(m_RemoteAddr)); @@ -141,3 +150,8 @@ bool cTBSocket::Shutdown(int how) { return ::shutdown(*this, how) != -1; } + +bool cTBSocket::SetDSCP(void) { + int dscp = STREAMDEV_DSCP; + return ::setsockopt(*this, SOL_IP, IP_TOS, &dscp, sizeof(dscp)) != -1; +} diff --git a/tools/socket.h b/tools/socket.h index d1a7d62..23272ec 100644 --- a/tools/socket.h +++ b/tools/socket.h @@ -68,6 +68,9 @@ public: an appropriate value. */ virtual bool Accept(const cTBSocket &Listener); + /* Sets DSCP sockopt */ + bool SetDSCP(void); + /* LocalPort() returns the port number this socket is connected to locally. The result is undefined for a non-open socket. */ int LocalPort(void) const { return ntohs(m_LocalAddr.sin_port); } |