#include <Tree.h>

Inheritance diagram for Acl::Tree:
Collaboration diagram for Acl::Tree:

Public Member Functions

template<class ActionToStringConverter >
SBufList treeDump (const char *name, ActionToStringConverter converter) const
Answer winningAction () const
 Returns the corresponding action after a successful tree match. More...
Answer lastAction () const
 what action to use if no nodes matched More...
void add (ACL *rule, const Answer &action)
 appends and takes control over the rule with a given action More...
void add (ACL *rule)
 same as InnerNode::add() More...
char const * typeString () const override
void parse () override
 parses node representation in squid.conf; dies on failures More...
bool resumeMatchingAt (ACLChecklist *checklist, Acl::Nodes::const_iterator pos) const
 Resumes matching (suspended by an async call) at the given position. More...
Nodes::size_type childrenCount () const
 the number of children nodes More...
void prepareForUse () override
bool empty () const override
SBufList dump () const override
size_t lineParse ()
void * operator new (size_t)
void operator delete (void *)
void context (const char *name, const char *configuration)
 sets user-specified ACL name and squid.conf context More...
bool matches (ACLChecklist *checklist) const
void parseFlags ()
 configures ACL options, throwing on configuration errors More...
virtual bool isProxyAuth () const
virtual bool valid () const
int cacheMatchAcl (dlink_list *cache, ACLChecklist *)
virtual int matchForCache (ACLChecklist *checklist)
SBufList dumpOptions ()

Static Public Member Functions

static void ParseAclLine (ConfigParser &parser, ACL **head)
static void Initialize ()
static ACLFindByName (const char *name)

Public Attributes

char name [ACL_NAME_SZ]
char * cfgline
bool registered
 added to the global list of ACLs via aclRegister() More...

Protected Types

typedef std::vector< AnswerActions
 if not empty, contains actions corresponding to InnerNode::nodes More...

Protected Member Functions

bool bannedAction (ACLChecklist *, Nodes::const_iterator) const override
 Acl::OrNode API. More...
Answer actionAt (const Nodes::size_type pos) const
 computes action that corresponds to the position of the matched rule More...
int match (ACLChecklist *checklist) override
 Matches the actual data in checklist against this ACL. More...

Protected Attributes

Actions actions
Nodes::const_iterator lastMatch_
std::vector< ACL * > nodes
 children nodes of this intermediate node More...

Private Member Functions

int doMatch (ACLChecklist *checklist, Nodes::const_iterator start) const override
virtual bool requiresAle () const
 whether our (i.e. shallow) match() requires checklist to have a AccessLogEntry More...
virtual bool requiresRequest () const
 whether our (i.e. shallow) match() requires checklist to have a request More...
virtual bool requiresReply () const
 whether our (i.e. shallow) match() requires checklist to have a reply More...
virtual const Acl::Optionsoptions ()
virtual const Acl::OptionslineOptions ()

Detailed Description

An ORed set of rules at the top of the ACL expression tree, providing two unique properties: cbdata protection and optional rule actions.

Definition at line 20 of file Tree.h.

Member Typedef Documentation

◆ Actions

Definition at line 48 of file Tree.h.

Member Function Documentation

◆ actionAt()

Acl::Answer Acl::Tree::actionAt ( const Nodes::size_type  pos) const

Definition at line 32 of file Tree.cc.

References ACCESS_ALLOWED, and assert.

Referenced by winningAction().

◆ add() [1/2]

void Acl::Tree::add ( ACL rule)

Definition at line 53 of file Tree.cc.

References Acl::InnerNode::add(), and assert.

◆ add() [2/2]

void Acl::Tree::add ( ACL rule,
const Answer action 

Definition at line 44 of file Tree.cc.

References action(), Acl::InnerNode::add(), and assert.

Referenced by aclParseAclList().

◆ bannedAction()

bool Acl::Tree::bannedAction ( ACLChecklist checklist,
Nodes::const_iterator  node 
) const

Reimplemented from Acl::OrNode.

Definition at line 61 of file Tree.cc.

References assert, and ACLChecklist::bannedAction().

◆ cacheMatchAcl()


Acl::Tree::CBDATA_CLASS ( Tree  )

◆ childrenCount()

Nodes::size_type Acl::InnerNode::childrenCount ( ) const

Definition at line 30 of file InnerNode.h.

References Acl::InnerNode::nodes.

Referenced by Acl::AllOf::parse().

◆ context()

void ACL::context ( const char *  name,
const char *  configuration 

◆ doMatch()

int Acl::OrNode::doMatch ( ACLChecklist checklist,
Nodes::const_iterator  start 
) const

checks whether the nodes match, starting with the given one kids determine what a match means for their type of intermediate nodes

Implements Acl::InnerNode.

Definition at line 106 of file BoolOps.cc.

References ACLChecklist::keepMatching(), and ACLChecklist::matchChild().

◆ dump()

SBufList Acl::InnerNode::dump ( ) const

Implements ACL.

Definition at line 80 of file InnerNode.cc.

◆ dumpOptions()

SBufList ACL::dumpOptions ( )
approximate options configuration

Definition at line 326 of file Acl.cc.

References SBufStream::buf(), SBuf::isEmpty(), and ACL::options().

Referenced by dump_acl().

◆ empty()

bool Acl::InnerNode::empty ( ) const

Implements ACL.

Definition at line 29 of file InnerNode.cc.

Referenced by aclParseAccessLine().

◆ FindByName()

ACL * ACL::FindByName ( const char *  name)

◆ Initialize()

void ACL::Initialize ( )

Definition at line 438 of file Acl.cc.

References SquidConfig::aclList, Config, debugs, ACL::next, and ACL::prepareForUse().

Referenced by serverConnectionsOpen().

◆ isProxyAuth()

bool ACL::isProxyAuth ( ) const

Reimplemented in ACLProxyAuth, ACLExternal, and ACLIdent.

Definition at line 309 of file Acl.cc.

Referenced by aclIsProxyAuth().

◆ lastAction()

Acl::Answer Acl::Tree::lastAction ( ) const

Definition at line 23 of file Tree.cc.

References ACCESS_DUNNO.

Referenced by ACLChecklist::calcImplicitAnswer().

◆ lineOptions()

◆ lineParse()

size_t Acl::InnerNode::lineParse ( )

parses a [ [!]acl1 [!]acl2... ] sequence, appending to nodes

the number of parsed ACL names

Definition at line 44 of file InnerNode.cc.

References config_input_line, DBG_CRITICAL, debugs, ACL::FindByName(), self_destruct(), ConfigParser::strtokFile(), and xstrdup.

Referenced by aclParseAccessLine(), aclParseAclList(), Acl::AllOf::parse(), and ParseAclWithAction().

◆ match()

int Acl::InnerNode::match ( ACLChecklist checklist)

Implements ACL.

Definition at line 89 of file InnerNode.cc.

◆ matches()

bool ACL::matches ( ACLChecklist checklist) const

Orchestrates matching checklist against the ACL using match(), after checking preconditions and while providing debugging.

true if and only if there was a successful match. Updates the checklist state on match, async, and failure.

Definition at line 146 of file Acl.cc.

References AclMatchedName, ACLChecklist::asyncInProgress(), DBG_IMPORTANT, debugs, ACLChecklist::hasAle(), ACLChecklist::hasReply(), ACLChecklist::hasRequest(), ACL::match(), ACL::name, ACL::requiresAle(), ACL::requiresReply(), ACL::requiresRequest(), and ACLChecklist::verifyAle().

Referenced by ACLChecklist::matchAndFinish(), and ACLChecklist::matchChild().

◆ matchForCache()

int ACL::matchForCache ( ACLChecklist checklist)

Reimplemented in ACLProxyAuth.

Definition at line 349 of file Acl.cc.

References fatal().

Referenced by ACL::cacheMatchAcl().


Acl::OrNode::MEMPROXY_CLASS ( OrNode  )

◆ operator delete()

void ACL::operator delete ( void *  )

Definition at line 112 of file Acl.cc.

References fatal().

◆ operator new()

void * ACL::operator new ( size_t  )

Definition at line 105 of file Acl.cc.

References fatal().

◆ options()

virtual const Acl::Options & ACL::options ( )
(linked) 'global' Options supported by this ACL

Reimplemented in Acl::DestinationDomainCheck, ACLDestinationIP, Acl::AnnotationCheck, Acl::ServerNameCheck, and ACLMaxUserIP.

Definition at line 105 of file Acl.h.

References Acl::NoOptions().

Referenced by ACL::dumpOptions(), and ACL::parseFlags().

◆ parse()

void Acl::OrNode::parse ( )

Implements ACL.

Definition at line 128 of file BoolOps.cc.

References assert.

◆ ParseAclLine()

◆ parseFlags()

void ACL::parseFlags ( )

Definition at line 315 of file Acl.cc.

References ACL::lineOptions(), ACL::options(), and Acl::ParseFlags().

◆ prepareForUse()

void Acl::InnerNode::prepareForUse ( )

Reimplemented from ACL.

Definition at line 22 of file InnerNode.cc.

References Acl::InnerNode::nodes.

◆ requiresAle()

bool ACL::requiresAle ( ) const

Reimplemented in ACLExternal.

Definition at line 409 of file Acl.cc.

Referenced by ACL::matches().

◆ requiresReply()

bool ACL::requiresReply ( ) const

Reimplemented in Acl::HttpRepHeaderCheck, ACLHTTPStatus, and Acl::ReplyHeaderCheck< header >.

Definition at line 415 of file Acl.cc.

Referenced by ACL::matches().

◆ requiresRequest()

◆ resumeMatchingAt()

bool Acl::InnerNode::resumeMatchingAt ( ACLChecklist checklist,
Acl::Nodes::const_iterator  pos 
) const

Definition at line 95 of file InnerNode.cc.

References ACLChecklist::asyncInProgress(), and debugs.

Referenced by ACLChecklist::matchAndFinish(), and ACLChecklist::matchChild().

◆ treeDump()

template<class ActionToStringConverter >
SBufList Acl::Tree::treeDump ( const char *  name,
ActionToStringConverter  converter 
) const

dumps <name, action, rule, new line> tuples the supplied converter maps action.kind to a string

Definition at line 60 of file Tree.h.

References action(), actions, SBuf::end(), Acl::InnerNode::nodes, and text.

◆ typeString()

char const * Acl::OrNode::typeString ( ) const

Implements ACL.

Definition at line 94 of file BoolOps.cc.

◆ valid()

bool ACL::valid ( ) const

Reimplemented in ACLMaxConnection, ACLRandom, Acl::ServerNameCheck, ACLMaxUserIP, ACLProxyAuth, and ACLExternal.

Definition at line 140 of file Acl.cc.

◆ winningAction()

Acl::Answer Acl::Tree::winningAction ( ) const

Definition at line 17 of file Tree.cc.

References actionAt(), Acl::OrNode::lastMatch_, and Acl::InnerNode::nodes.

Referenced by ACLChecklist::matchAndFinish().

Member Data Documentation

◆ actions

Actions Acl::Tree::actions

Definition at line 49 of file Tree.h.

Referenced by treeDump().

◆ cfgline

char* ACL::cfgline

Definition at line 88 of file Acl.h.

Referenced by ACL::~ACL(), ACL::context(), and Acl::AllOf::parse().

◆ lastMatch_

Nodes::const_iterator Acl::OrNode::lastMatch_

Definition at line 72 of file BoolOps.h.

Referenced by winningAction().

◆ name

◆ next

ACL* ACL::next

Definition at line 89 of file Acl.h.

Referenced by dump_acl(), ACL::FindByName(), and ACL::Initialize().

◆ nodes

std::vector<ACL*> Acl::InnerNode::nodes

◆ registered

bool ACL::registered

Definition at line 90 of file Acl.h.

Referenced by aclDeregister(), aclDestroyAcls(), and aclRegister().

The documentation for this class was generated from the following files:






Web Site Translations