class Tablomat::IPTables::Table

Puts the Table in IPTables

Attributes

active[R]
chains[R]
name[R]
owned[RW]
system[R]

Public Class Methods

new(system, name, owned = true) click to toggle source
# File lib/tablomat/iptables/table.rb, line 12
def initialize(system, name, owned = true)
  @system = system
  @name = name
  @chains = {}
  # whether this table is owned/created by us or external
  @owned = owned
  @active = false
  activate if @system.active
end

Public Instance Methods

activate(override = false) click to toggle source
# File lib/tablomat/iptables/table.rb, line 57
def activate(override = false)
  return unless @owned || override

  @active = true
  return if override

  @chains.each do |_name, chain|
    chain.activate
  end
end
append(chain_name, data) click to toggle source
# File lib/tablomat/iptables/table.rb, line 47
def append(chain_name, data)
  chain(chain_name).append(data)
end
chain(name, owned = true, &block) click to toggle source
# File lib/tablomat/iptables/table.rb, line 26
def chain(name, owned = true, &block)
  key = get_key name
  (@chains[key] || Chain.new(self, name, owned)).tap do |chain|
    @chains[key] = chain
    block&.call(chain)
  end
end
chain_exists(name) click to toggle source
# File lib/tablomat/iptables/table.rb, line 34
def chain_exists(name)
  key = get_key name
  return true if @chains.key? key

  false
end
deactivate(override = false) click to toggle source
# File lib/tablomat/iptables/table.rb, line 68
def deactivate(override = false)
  return unless @owned || override

  @active = false
  return if override

  @chains.each do |_name, chain|
    chain.deactivate
  end
end
delete(chain_name, data) click to toggle source
# File lib/tablomat/iptables/table.rb, line 51
def delete(chain_name, data)
  chain chain_name do |chain|
    chain.delete(data)
  end
end
get_key(name) click to toggle source
# File lib/tablomat/iptables/table.rb, line 22
def get_key(name)
  name.to_s.downcase[0, 28]
end
insert(chain_name, data, pos) click to toggle source
# File lib/tablomat/iptables/table.rb, line 41
def insert(chain_name, data, pos)
  chain chain_name do |chain|
    chain.insert(data, pos)
  end
end
print() click to toggle source