+/*
+ * 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;
*/
_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
*/
_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.
public:
Config();
- ~Config() {};
+ ~Config() {}
void parseConfigLine();
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
#endif
#endif /* SQUID_QOSCONFIG_H */
+