From: Amos Jeffries Date: Mon, 2 Feb 2015 16:20:11 +0000 (-0800) Subject: Cleanup: migrate AclAddress to CBDATA_CLASS API X-Git-Tag: merge-candidate-3-v1~301 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=289848cafb1ed860eadd5fb49791db5358492500;p=thirdparty%2Fsquid.git Cleanup: migrate AclAddress to CBDATA_CLASS API Also, shuffle into the Acl:: namespace --- diff --git a/src/FwdState.cc b/src/FwdState.cc index 8397fe4435..2072553b00 100644 --- a/src/FwdState.cc +++ b/src/FwdState.cc @@ -10,7 +10,7 @@ #include "squid.h" #include "AccessLogEntry.h" -#include "acl/AclAddress.h" +#include "acl/Address.h" #include "acl/FilledChecklist.h" #include "acl/Gadgets.h" #include "anyp/PortCfg.h" @@ -1259,8 +1259,7 @@ getOutgoingAddress(HttpRequest * request, Comm::ConnectionPointer conn) // TODO use the connection details in ACL. // needs a bit of rework in ACLFilledChecklist to use Comm::Connection instead of ConnStateData - AclAddress *l; - for (l = Config.accessList.outgoing_address; l; l = l->next) { + for (Acl::Address *l = Config.accessList.outgoing_address; l; l = l->next) { /* check if the outgoing address is usable to the destination */ if (conn->remote.isIPv4() != l->addr.isIPv4()) continue; diff --git a/src/SquidConfig.h b/src/SquidConfig.h index c001348dde..4ef76642e2 100644 --- a/src/SquidConfig.h +++ b/src/SquidConfig.h @@ -357,7 +357,7 @@ public: acl_access *redirector; acl_access *store_id; acl_access *reply; - AclAddress *outgoing_address; + Acl::Address *outgoing_address; #if USE_HTCP acl_access *htcp; diff --git a/src/acl/AclAddress.cc b/src/acl/Address.cc similarity index 63% rename from src/acl/AclAddress.cc rename to src/acl/Address.cc index b7ad5432c3..d789428a59 100644 --- a/src/acl/AclAddress.cc +++ b/src/acl/Address.cc @@ -7,7 +7,13 @@ */ #include "squid.h" -#include "AclAddress.h" +#include "acl/Address.h" +#include "acl/Gadgets.h" -//TODO: fill in +CBDATA_NAMESPACED_CLASS_INIT(Acl, Address); +Acl::Address::~Address() +{ + aclDestroyAclList(&aclList); + delete next; +} diff --git a/src/acl/AclAddress.h b/src/acl/Address.h similarity index 60% rename from src/acl/AclAddress.h rename to src/acl/Address.h index 149f8d300f..dbd27fb8a8 100644 --- a/src/acl/AclAddress.h +++ b/src/acl/Address.h @@ -6,21 +6,31 @@ * Please see the COPYING and CONTRIBUTORS files for details. */ -#ifndef ACLADDRESS_H_ -#define ACLADDRESS_H_ +#ifndef _SQUID_SRC_ACL_ADDRESS_H_ +#define _SQUID_SRC_ACL_ADDRESS_H_ #include "acl/Acl.h" #include "ip/Address.h" +namespace Acl +{ + /// list of address-based ACLs. -class AclAddress +class Address { + CBDATA_CLASS(Address); + public: - AclAddress *next; + Address() : next(NULL), aclList(NULL) {} + ~Address(); + + Acl::Address *next; ACLList *aclList; Ip::Address addr; }; -#endif /* ACLADDRESS_H_ */ +} // namespace Acl + +#endif /* _SQUID_SRC_ACL_ADDRESS_H_ */ diff --git a/src/acl/Makefile.am b/src/acl/Makefile.am index 54af89b740..a7e97f5167 100644 --- a/src/acl/Makefile.am +++ b/src/acl/Makefile.am @@ -33,8 +33,8 @@ libstate_la_SOURCES = \ Strategised.h \ FilledChecklist.cc \ FilledChecklist.h \ - AclAddress.h \ - AclAddress.cc + Address.h \ + Address.cc ## data-specific ACLs libacls_la_SOURCES = \ diff --git a/src/acl/forward.h b/src/acl/forward.h index 5ab9dcafdb..741fa250e9 100644 --- a/src/acl/forward.h +++ b/src/acl/forward.h @@ -16,13 +16,13 @@ class ACLChecklist; class ACLFilledChecklist; class ACLList; -class AclAddress; class AclDenyInfoList; class AclSizeLimit; namespace Acl { +class Address; class InnerNode; class NotNode; class AndNode; diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 3265ec5410..d497e240d3 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -10,10 +10,10 @@ #include "squid.h" #include "acl/Acl.h" -#include "acl/AclAddress.h" #include "acl/AclDenyInfoList.h" #include "acl/AclNameList.h" #include "acl/AclSizeLimit.h" +#include "acl/Address.h" #include "acl/Gadgets.h" #include "acl/MethodData.h" #include "acl/Tree.h" @@ -1359,15 +1359,12 @@ free_address(Ip::Address *addr) addr->setEmpty(); } -CBDATA_TYPE(AclAddress); - static void -dump_acl_address(StoreEntry * entry, const char *name, AclAddress * head) +dump_acl_address(StoreEntry * entry, const char *name, Acl::Address * head) { char buf[MAX_IPSTRLEN]; - AclAddress *l; - for (l = head; l; l = l->next) { + for (Acl::Address *l = head; l; l = l->next) { if (!l->addr.isAnyAddr()) storeAppendPrintf(entry, "%s %s", name, l->addr.toStr(buf,MAX_IPSTRLEN)); else @@ -1380,22 +1377,13 @@ dump_acl_address(StoreEntry * entry, const char *name, AclAddress * head) } static void -freed_acl_address(void *data) -{ - AclAddress *l = static_cast(data); - aclDestroyAclList(&l->aclList); -} - -static void -parse_acl_address(AclAddress ** head) +parse_acl_address(Acl::Address ** head) { - AclAddress *l; - AclAddress **tail = head; /* sane name below */ - CBDATA_INIT_TYPE_FREECB(AclAddress, freed_acl_address); - l = cbdataAlloc(AclAddress); + Acl::Address *l = new Acl::Address; parse_address(&l->addr); aclParseAclList(LegacyParser, &l->aclList, l->addr); + Acl::Address **tail = head; while (*tail) tail = &(*tail)->next; @@ -1403,13 +1391,10 @@ parse_acl_address(AclAddress ** head) } static void -free_acl_address(AclAddress ** head) +free_acl_address(Acl::Address ** head) { - while (*head) { - AclAddress *l = *head; - *head = l->next; - cbdataFree(l); - } + delete *head; + *head = NULL; } CBDATA_TYPE(acl_tos);