diff options
| author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2017-01-09 00:22:37 +0200 |
|---|---|---|
| committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2017-01-24 01:52:49 +0200 |
| commit | d7f3c465a48b8ee2bb62bf3f92e9735f930b0b37 (patch) | |
| tree | 951ae95d684041dede07fc081686e659efe14c26 | |
| parent | a76485aeb36af1441cd3baf114bf8d60650653c5 (diff) | |
| download | awall-d7f3c465a48b8ee2bb62bf3f92e9735f930b0b37.tar.bz2 awall-d7f3c465a48b8ee2bb62bf3f92e9735f930b0b37.tar.xz | |
Limit: split netmask functions into new class
| -rw-r--r-- | awall/model.lua | 33 |
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 |
