]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/acl/IntRange.cc
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
9 /* DEBUG: section 28 Access Control */
12 #include "acl/IntRange.h"
14 #include "ConfigParser.h"
15 #include "debug/Stream.h"
22 while (char *a
= ConfigParser::strtokFile()) {
23 char *b
= strchr(a
, '-');
24 unsigned short port1
, port2
;
39 RangeType
temp(port1
, port2
+1);
40 ranges
.push_back(temp
);
42 debugs(28, DBG_CRITICAL
, "ERROR: ACLIntRange::parse: Invalid port value");
49 ACLIntRange::empty() const
51 return ranges
.empty();
55 ACLIntRange::match(int i
)
57 RangeType
const toFind(i
, i
+1);
58 for (const auto &element
: ranges
) {
59 RangeType result
= element
.intersection(toFind
);
67 ACLIntRange::~ACLIntRange()
71 ACLIntRange::dump() const
74 for (const auto &element
: ranges
) {
77 if (element
.size() == 1)
78 sb
.Printf("%d", element
.start
);
80 sb
.Printf("%d-%d", element
.start
, element
.end
-1);