1 /* Inline QOS functions */
2 #include "comm/Connection.h"
5 Ip::Qos::setSockTos(const Comm::ConnectionPointer &conn, tos_t tos)
8 int x = setsockopt(conn->fd, IPPROTO_IP, IP_TOS, &tos, sizeof(tos_t));
10 debugs(50, 2, "Ip::Qos::setSockTos: setsockopt(IP_TOS) on " << conn << ": " << xstrerror());
13 debugs(50, DBG_IMPORTANT, "WARNING: setsockopt(IP_TOS) not supported on this platform");
19 Ip::Qos::setSockNfmark(const Comm::ConnectionPointer &conn, nfmark_t mark)
21 #if SO_MARK && USE_LIBCAP
22 int x = setsockopt(conn->fd, SOL_SOCKET, SO_MARK, &mark, sizeof(nfmark_t));
24 debugs(50, 2, "setSockNfmark: setsockopt(SO_MARK) on " << conn << ": " << xstrerror());
27 debugs(50, DBG_IMPORTANT, "WARNING: setsockopt(SO_MARK) not supported on this platform");
30 debugs(50, DBG_IMPORTANT, "WARNING: Netfilter marking disabled (netfilter marking requires build with LIBCAP)");
36 Ip::Qos::Config::isHitTosActive() const
38 return (tosLocalHit || tosSiblingHit || tosParentHit || tosMiss || preserveMissTos);
42 Ip::Qos::Config::isHitNfmarkActive() const
44 return (markLocalHit || markSiblingHit || markParentHit || markMiss || preserveMissMark);
48 Ip::Qos::Config::isAclNfmarkActive() const
50 acl_nfmark * nfmarkAcls [] = { nfmarkToServer, nfmarkToClient };
52 for (int i=0; i<2; ++i) {
53 while (nfmarkAcls[i]) {
54 acl_nfmark *l = nfmarkAcls[i];
57 nfmarkAcls[i] = l->next;
65 Ip::Qos::Config::isAclTosActive() const
67 acl_tos * tosAcls [] = { tosToServer, tosToClient };
69 for (int i=0; i<2; ++i) {
71 acl_tos *l = tosAcls[i];