From: Amos Jeffries Date: Mon, 2 Feb 2015 18:51:25 +0000 (-0800) Subject: Cleanup: migrate acl_tos and acl_nfmark to CBDATA_CLASS API X-Git-Tag: merge-candidate-3-v1~299 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=60019fea98c2560837c5b5b70a8f77d93e65bdc6;p=thirdparty%2Fsquid.git Cleanup: migrate acl_tos and acl_nfmark to CBDATA_CLASS API Also a little documentation and syntax polishing. --- diff --git a/src/FwdState.cc b/src/FwdState.cc index 2072553b00..4845af5722 100644 --- a/src/FwdState.cc +++ b/src/FwdState.cc @@ -1197,9 +1197,7 @@ FwdState::logReplyStatus(int tries, const Http::StatusCode status) tos_t aclMapTOS(acl_tos * head, ACLChecklist * ch) { - acl_tos *l; - - for (l = head; l; l = l->next) { + for (acl_tos *l = head; l; l = l->next) { if (!l->aclList || ch->fastCheck(l->aclList) == ACCESS_ALLOWED) return l->tos; } @@ -1211,9 +1209,7 @@ aclMapTOS(acl_tos * head, ACLChecklist * ch) nfmark_t aclMapNfmark(acl_nfmark * head, ACLChecklist * ch) { - acl_nfmark *l; - - for (l = head; l; l = l->next) { + for (acl_nfmark *l = head; l; l = l->next) { if (!l->aclList || ch->fastCheck(l->aclList) == ACCESS_ALLOWED) return l->nfmark; } diff --git a/src/cache_cf.cc b/src/cache_cf.cc index d497e240d3..6cd55985df 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1397,8 +1397,6 @@ free_acl_address(Acl::Address ** head) *head = NULL; } -CBDATA_TYPE(acl_tos); - static void dump_acl_tos(StoreEntry * entry, const char *name, acl_tos * head) { @@ -1416,18 +1414,9 @@ dump_acl_tos(StoreEntry * entry, const char *name, acl_tos * head) } } -static void -freed_acl_tos(void *data) -{ - acl_tos *l = static_cast(data); - aclDestroyAclList(&l->aclList); -} - static void parse_acl_tos(acl_tos ** head) { - acl_tos *l; - acl_tos **tail = head; /* sane name below */ unsigned int tos; /* Initially uint for strtoui. Casted to tos_t before return */ char *token = ConfigParser::NextToken(); @@ -1447,14 +1436,13 @@ parse_acl_tos(acl_tos ** head) tos = chTos; } - CBDATA_INIT_TYPE_FREECB(acl_tos, freed_acl_tos); - - l = cbdataAlloc(acl_tos); + acl_tos *l = new acl_tos; l->tos = (tos_t)tos; aclParseAclList(LegacyParser, &l->aclList, token); + acl_tos **tail = head; /* sane name below */ while (*tail) tail = &(*tail)->next; @@ -1464,24 +1452,16 @@ parse_acl_tos(acl_tos ** head) static void free_acl_tos(acl_tos ** head) { - while (*head) { - acl_tos *l = *head; - *head = l->next; - l->next = NULL; - cbdataFree(l); - } + delete *head; + head = NULL; } #if SO_MARK && USE_LIBCAP -CBDATA_TYPE(acl_nfmark); - static void dump_acl_nfmark(StoreEntry * entry, const char *name, acl_nfmark * head) { - acl_nfmark *l; - - for (l = head; l; l = l->next) { + for (acl_nfmark *l = head; l; l = l->next) { if (l->nfmark > 0) storeAppendPrintf(entry, "%s 0x%02X", name, l->nfmark); else @@ -1493,18 +1473,9 @@ dump_acl_nfmark(StoreEntry * entry, const char *name, acl_nfmark * head) } } -static void -freed_acl_nfmark(void *data) -{ - acl_nfmark *l = static_cast(data); - aclDestroyAclList(&l->aclList); -} - static void parse_acl_nfmark(acl_nfmark ** head) { - acl_nfmark *l; - acl_nfmark **tail = head; /* sane name below */ nfmark_t mark; char *token = ConfigParser::NextToken(); @@ -1518,14 +1489,13 @@ parse_acl_nfmark(acl_nfmark ** head) return; } - CBDATA_INIT_TYPE_FREECB(acl_nfmark, freed_acl_nfmark); - - l = cbdataAlloc(acl_nfmark); + acl_nfmark *l = new acl_nfmark; l->nfmark = mark; aclParseAclList(LegacyParser, &l->aclList, token); + acl_nfmark **tail = head; /* sane name below */ while (*tail) tail = &(*tail)->next; @@ -1535,12 +1505,8 @@ parse_acl_nfmark(acl_nfmark ** head) static void free_acl_nfmark(acl_nfmark ** head) { - while (*head) { - acl_nfmark *l = *head; - *head = l->next; - l->next = NULL; - cbdataFree(l); - } + delete *head; + head = NULL; } #endif /* SO_MARK */ diff --git a/src/ip/QosConfig.cc b/src/ip/QosConfig.cc index 7731c215d7..1d8a1c8620 100644 --- a/src/ip/QosConfig.cc +++ b/src/ip/QosConfig.cc @@ -22,6 +22,22 @@ #include +CBDATA_CLASS_INIT(acl_tos); + +acl_tos::~acl_tos() +{ + aclDestroyAclList(&aclList); + delete next; +} + +CBDATA_CLASS_INIT(acl_nfmark); + +acl_nfmark::~acl_nfmark() +{ + aclDestroyAclList(&aclList); + delete next; +} + void Ip::Qos::getTosFromServer(const Comm::ConnectionPointer &server, fde *clientFde) { diff --git a/src/ip/QosConfig.h b/src/ip/QosConfig.h index 882e1426a4..62eaca313a 100644 --- a/src/ip/QosConfig.h +++ b/src/ip/QosConfig.h @@ -24,21 +24,28 @@ class fde; // TODO: move to new ACL framework -// not integrated in namespace, as this class uses a strange CBDATA definition -// POD class acl_tos { + CBDATA_CLASS(acl_tos); + public: + acl_tos() : next(NULL), aclList(NULL) {} + ~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 { + CBDATA_CLASS(acl_nfmark); + public: + acl_nfmark() : next(NULL), aclList(NULL) {} + ~acl_nfmark(); + acl_nfmark *next; ACLList *aclList; nfmark_t nfmark;