]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/ip/QosConfig.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / ip / QosConfig.h
index 2b801648cf826c0550e5341e880291993431c8b2..a288f7f5d608fad5518f3ee9625ba789938258a8 100644 (file)
@@ -1,38 +1,51 @@
+/*
+ * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
+ *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
+ */
+
 #ifndef SQUID_QOSCONFIG_H
 #define SQUID_QOSCONFIG_H
 
+#include "acl/forward.h"
 #include "hier_code.h"
 #include "ip/forward.h"
 
 #if HAVE_LIBNETFILTER_CONNTRACK_LIBNETFILTER_CONNTRACK_H
 #include <libnetfilter_conntrack/libnetfilter_conntrack.h>
 #endif
-
 #if HAVE_LIBNETFILTER_CONNTRACK_LIBNETFILTER_CONNTRACK_TCP_H
 #include <libnetfilter_conntrack/libnetfilter_conntrack_tcp.h>
 #endif
-
-#if HAVE_LIMITS
 #include <limits>
-#endif
 
-class ACLList;
 class fde;
 
 // TODO: move to new ACL framework
-// not integrated in namespace, as this class uses a strange CBDATA definition
-// POD
-class acl_tos {
+class acl_tos
+{
+    CBDATA_CLASS(acl_tos);
+
 public:
+    acl_tos() : next(NULL), aclList(NULL), tos(0) {}
+    ~acl_tos();
+
     acl_tos *next;
     ACLList *aclList;
     tos_t tos;
 };
+
 // TODO: move to new ACL framework
-// not integrated in namespace, as this class uses a strange CBDATA definition
-// POD
-class acl_nfmark {
+class acl_nfmark
+{
+    CBDATA_CLASS(acl_nfmark);
+
 public:
+    acl_nfmark() : next(NULL), aclList(NULL), nfmark(0) {}
+    ~acl_nfmark();
+
     acl_nfmark *next;
     ACLList *aclList;
     nfmark_t nfmark;
@@ -124,6 +137,14 @@ int doNfmarkLocalHit(const Comm::ConnectionPointer &conn);
 */
 _SQUID_INLINE_ int setSockTos(const Comm::ConnectionPointer &conn, tos_t tos);
 
+/**
+* The low level variant of setSockTos function to set TOS value of packets.
+* Avoid if you can use the Connection-based setSockTos().
+* @param fd Descriptor of socket to set the TOS for
+* @param type The socket family, AF_INET or AF_INET6
+*/
+_SQUID_INLINE_ int setSockTos(const int fd, tos_t tos, int type);
+
 /**
 * Function to set the netfilter mark value of packets. Sets the value on the
 * socket which then gets copied to the packets. Called from Ip::Qos::doNfmarkLocalMiss
@@ -131,6 +152,14 @@ _SQUID_INLINE_ int setSockTos(const Comm::ConnectionPointer &conn, tos_t tos);
 */
 _SQUID_INLINE_ int setSockNfmark(const Comm::ConnectionPointer &conn, nfmark_t mark);
 
+/**
+* The low level variant of setSockNfmark function to set the netfilter mark
+* value of packets.
+* Avoid if you can use the Connection-based setSockNfmark().
+* @param fd Descriptor of socket to set the mark for
+*/
+_SQUID_INLINE_ int setSockNfmark(const int fd, nfmark_t mark);
+
 /**
  * QOS configuration class. Contains all the parameters for QOS functions as well
  * as functions to check whether either TOS or MARK QOS is enabled.
@@ -140,7 +169,7 @@ class Config
 public:
 
     Config();
-    ~Config() {};
+    ~Config() {}
 
     void parseConfigLine();
 
@@ -200,13 +229,13 @@ public:
 extern Config TheConfig;
 
 /* legacy parser access wrappers */
-#define parse_QosConfig(X)     (X)->parseConfigLine()
+#define parse_QosConfig(X)  (X)->parseConfigLine()
 #define free_QosConfig(X)
 #define dump_QosConfig(e,n,X) do { \
-               char temp[256]; /* random number. change as needed. max config line length. */ \
-               (X).dumpConfigLine(temp,n); \
-               storeAppendPrintf(e, "%s", temp); \
-       } while(0);
+        char temp[256]; /* random number. change as needed. max config line length. */ \
+        (X).dumpConfigLine(temp,n); \
+            storeAppendPrintf(e, "%s", temp); \
+    } while(0);
 
 } // namespace Qos
 
@@ -217,3 +246,4 @@ extern Config TheConfig;
 #endif
 
 #endif /* SQUID_QOSCONFIG_H */
+