Class: Rule

Inherits:
Object
  • Object
show all
Defined in:
lib/netconfdev/vrouter/rule.rb

Overview

The class that defines a Firewall Rule.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rule_number: nil, action: nil, source_address: nil, icmp_typename: nil) ⇒ Rule

Parameters

  • rule_number

    Integer: The rule number. e.g. 40

  • action

    String: The action for the rule. e.g. “drop” or “accept”

  • source_address

    String: The source IP address on which the rule will match. e.g. “172.22.17.107”

  • icmp_typename

    String : [optional] ICMP type. e.g. “ping”

Raises:

  • (ArgumentError)


47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/netconfdev/vrouter/rule.rb', line 47

def initialize(rule_number: nil, action: nil, source_address: nil,
  icmp_typename: nil)
  raise ArgumentError, "Rule number (rule_number) required" unless rule_number
  raise ArgumentError, "Action (action) required" unless action
  # either of the other two required? at least one required?
  
  @number = rule_number
  @action = action
  @src_address = source_address
  @icmp_typename = icmp_typename
  @protocol = "icmp" if icmp_typename
end

Instance Attribute Details

#actionObject (readonly)

String: The action for the rule. e.g. “drop” or “accept”



37
38
39
# File 'lib/netconfdev/vrouter/rule.rb', line 37

def action
  @action
end

#numberObject (readonly)

Integer: The rule number. e.g. 40



35
36
37
# File 'lib/netconfdev/vrouter/rule.rb', line 35

def number
  @number
end

#src_addressObject (readonly)

String: The source IP address on which the rule will match. e.g. “172.22.17.107”



39
40
41
# File 'lib/netconfdev/vrouter/rule.rb', line 39

def src_address
  @src_address
end

Instance Method Details

#to_hashObject

:nodoc:



60
61
62
63
64
65
# File 'lib/netconfdev/vrouter/rule.rb', line 60

def to_hash #:nodoc:
  hash = {:action => @action, :source => {:address => @src_address},
    :tagnode => @number, :protocol => @protocol, :icmp =>
      {'type-name' => @icmp_typename}}
  hash.compact
end