#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...
 
virtual const char * typeString () const
 
virtual ACLclone () const
 
virtual void parse ()
 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...
 
virtual void prepareForUse ()
 
virtual bool empty () const
 
virtual SBufList dump () const
 
void lineParse ()
 parses one "acl name type acl1 acl2..." line, appending to nodes More...
 
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
 
virtual const Acl::Optionsoptions ()
 
virtual 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
 
ACLnext
 
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

virtual 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...
 
virtual int match (ACLChecklist *checklist)
 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

 CBDATA_CLASS (Tree)
 
 MEMPROXY_CLASS (OrNode)
 
virtual int doMatch (ACLChecklist *checklist, Nodes::const_iterator start) const
 
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...
 

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
protected

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
overrideprotectedvirtual

Reimplemented from Acl::OrNode.

Definition at line 61 of file Tree.cc.

References assert, and ACLChecklist::bannedAction().

◆ cacheMatchAcl()

◆ CBDATA_CLASS()

Acl::Tree::CBDATA_CLASS ( Tree  )
private

◆ childrenCount()

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

Definition at line 30 of file InnerNode.h.

References Acl::InnerNode::nodes.

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

◆ clone()

ACL * Acl::OrNode::clone ( ) const
virtualinherited

Reimplemented in Acl::AnyOf.

Definition at line 116 of file BoolOps.cc.

◆ context()

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

◆ doMatch()

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

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 128 of file BoolOps.cc.

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

◆ dump()

SBufList Acl::InnerNode::dump ( ) const
virtualinherited

Implements ACL.

Reimplemented in Acl::NotNode, and Acl::AllOf.

Definition at line 78 of file InnerNode.cc.

◆ dumpOptions()

SBufList ACL::dumpOptions ( )
inherited
Returns
approximate options configuration

Definition at line 299 of file Acl.cc.

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

Referenced by dump_acl().

◆ empty()

bool Acl::InnerNode::empty ( ) const
virtualinherited

Implements ACL.

Definition at line 29 of file InnerNode.cc.

Referenced by aclParseAccessLine().

◆ FindByName()

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

◆ Initialize()

void ACL::Initialize ( )
staticinherited

Definition at line 407 of file Acl.cc.

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

Referenced by serverConnectionsOpen().

◆ isProxyAuth()

bool ACL::isProxyAuth ( ) const
virtualinherited

Reimplemented in ACLExternal, ACLIdent, and ACLProxyAuth.

Definition at line 286 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().

◆ lineParse()

void Acl::InnerNode::lineParse ( )
inherited

◆ match()

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

Implements ACL.

Definition at line 87 of file InnerNode.cc.

◆ matches()

bool ACL::matches ( ACLChecklist checklist) const
inherited

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

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

Definition at line 121 of file Acl.cc.

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

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

◆ matchForCache()

int ACL::matchForCache ( ACLChecklist checklist)
virtualinherited

Reimplemented in ACLProxyAuth.

Definition at line 318 of file Acl.cc.

References fatal().

Referenced by ACL::cacheMatchAcl().

◆ MEMPROXY_CLASS()

Acl::OrNode::MEMPROXY_CLASS ( OrNode  )
privateinherited

◆ operator delete()

void ACL::operator delete ( void *  )
inherited

Definition at line 87 of file Acl.cc.

References fatal().

◆ operator new()

void * ACL::operator new ( size_t  )
inherited

Definition at line 80 of file Acl.cc.

References fatal().

◆ options()

virtual const Acl::Options& ACL::options ( )
inlinevirtualinherited
Returns
(linked) Options supported by this ACL

Reimplemented in ACLStrategised< M >, ACLDestinationIP, and ACLMaxUserIP.

Definition at line 63 of file Acl.h.

References Acl::NoOptions().

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

◆ parse()

void Acl::OrNode::parse ( )
virtualinherited

Implements ACL.

Reimplemented in Acl::AnyOf.

Definition at line 150 of file BoolOps.cc.

References assert.

◆ ParseAclLine()

◆ parseFlags()

void ACL::parseFlags ( )
virtualinherited

Reimplemented in ACLIdent, ACLProxyAuth, ACLStrategised< M >, and ACLExtUser.

Definition at line 292 of file Acl.cc.

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

◆ prepareForUse()

void Acl::InnerNode::prepareForUse ( )
virtualinherited

Reimplemented from ACL.

Definition at line 22 of file InnerNode.cc.

References Acl::InnerNode::nodes.

◆ requiresAle()

bool ACL::requiresAle ( ) const
privatevirtualinherited

Reimplemented in ACLExternal.

Definition at line 378 of file Acl.cc.

Referenced by ACL::matches().

◆ requiresReply()

bool ACL::requiresReply ( ) const
privatevirtualinherited

Reimplemented in ACLStrategised< M >, and ACLHTTPStatus.

Definition at line 384 of file Acl.cc.

Referenced by ACL::matches().

◆ requiresRequest()

bool ACL::requiresRequest ( ) const
privatevirtualinherited

Reimplemented in ACLExternal, ACLProxyAuth, ACLStrategised< M >, ACLMaxUserIP, and Acl::TransactionInitiator.

Definition at line 390 of file Acl.cc.

Referenced by ACL::matches().

◆ resumeMatchingAt()

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

Definition at line 93 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
inline

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, Acl::InnerNode::nodes, and text.

◆ typeString()

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

Implements ACL.

Reimplemented in Acl::AnyOf.

Definition at line 110 of file BoolOps.cc.

◆ valid()

bool ACL::valid ( ) const
virtualinherited

Reimplemented in ACLExternal, ACLStrategised< M >, ACLProxyAuth, ACLMaxConnection, ACLMaxUserIP, and ACLRandom.

Definition at line 115 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
protected

Definition at line 49 of file Tree.h.

Referenced by treeDump().

◆ cfgline

char* ACL::cfgline
inherited

Definition at line 84 of file Acl.h.

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

◆ lastMatch_

Nodes::const_iterator Acl::OrNode::lastMatch_
mutableprotectedinherited

Definition at line 75 of file BoolOps.h.

Referenced by winningAction().

◆ name

◆ next

ACL* ACL::next
inherited

Definition at line 85 of file Acl.h.

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

◆ nodes

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

◆ registered

bool ACL::registered
inherited

Definition at line 86 of file Acl.h.

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


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

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors