aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2017-01-09 00:22:37 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2017-01-24 01:52:49 +0200
commitd7f3c465a48b8ee2bb62bf3f92e9735f930b0b37 (patch)
tree951ae95d684041dede07fc081686e659efe14c26
parenta76485aeb36af1441cd3baf114bf8d60650653c5 (diff)
downloadawall-d7f3c465a48b8ee2bb62bf3f92e9735f930b0b37.tar.bz2
awall-d7f3c465a48b8ee2bb62bf3f92e9735f930b0b37.tar.xz
Limit: split netmask functions into new class
-rw-r--r--awall/model.lua33
1 files changed, 20 insertions, 13 deletions
diff --git a/awall/model.lua b/awall/model.lua
index 783ad7f..9927b1c 100644
--- a/awall/model.lua
+++ b/awall/model.lua
@@ -676,19 +676,10 @@ function M.Rule:extrarules(label, cls, options)
end
-M.Limit = M.class(M.ConfigObject)
+M.Maskable = M.class(M.ConfigObject)
-function M.Limit:init(...)
- M.Limit.super(self):init(...)
-
- if not self.count then
- if not self[1] then
- self:error('Packet count not defined for limit')
- end
- self.count = self[1]
- end
-
- setdefault(self, 'interval', 1)
+function M.Maskable:init(...)
+ M.Maskable.super(self):init(...)
-- alpine v3.5 compatibility
if self.mask then
@@ -729,7 +720,7 @@ function M.Limit:initmask()
end
end
-function M.Limit:maskmode(family)
+function M.Maskable:maskmode(family)
local res
for _, addr in ipairs{'src', 'dest'} do
local mask = self[addr..'-mask'][family]
@@ -741,6 +732,22 @@ function M.Limit:maskmode(family)
if res then return table.unpack(res) end
end
+
+M.Limit = M.class(M.Maskable)
+
+function M.Limit:init(...)
+ M.Limit.super(self):init(...)
+
+ if not self.count then
+ if not self[1] then
+ self:error('Packet count not defined for limit')
+ end
+ self.count = self[1]
+ end
+
+ setdefault(self, 'interval', 1)
+end
+
function M.Limit:rate() return self.count / self.interval end
function M.Limit:intrate() return math.ceil(self:rate()) end