Class: Trema::Netns
- Inherits:
-
NetworkComponent
- Object
- NetworkComponent
- Trema::Netns
- Defined in:
- ruby/trema/netns.rb
Overview
The controller class of network namespace
Instance Attribute Summary collapse
-
#interface ⇒ String
Set a network interface.
Instance Method Summary collapse
-
#initialize(stanza) ⇒ Netns
constructor
Creates a new Trema netns from DSL::Netns.
-
#method_missing(message, *args) ⇒ Object
Define netns attribute accessors.
-
#netmask ⇒ String
Returns netmask.
-
#run! ⇒ Netns
Runs a netns process.
-
#shutdown! ⇒ undefined
Kills running netns.
Methods inherited from NetworkComponent
[], add, clear, each, inherited, size
Constructor Details
#initialize(stanza) ⇒ Netns
Creates a new Trema netns from DSL::Netns
50 51 52 53 |
# File 'ruby/trema/netns.rb', line 50 def initialize stanza @stanza = stanza Netns.add self end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(message, *args) ⇒ Object
Define netns attribute accessors
66 67 68 |
# File 'ruby/trema/netns.rb', line 66 def method_missing , *args @stanza.__send__ :[], end |
Instance Attribute Details
#interface ⇒ String
Set a network interface
37 38 39 |
# File 'ruby/trema/netns.rb', line 37 def interface @interface end |
Instance Method Details
#netmask ⇒ String
Returns netmask
81 82 83 |
# File 'ruby/trema/netns.rb', line 81 def netmask @stanza[ :netmask ] || "255.255.255.255" end |
#run! ⇒ Netns
Runs a netns process
96 97 98 99 100 101 102 103 |
# File 'ruby/trema/netns.rb', line 96 def run! sh "sudo ip netns add #{ name }" sh "sudo ip link set dev #{ interface } netns #{ name }" sh "sudo ip netns exec #{ name } ifconfig lo 127.0.0.1" sh "sudo ip netns exec #{ name } ifconfig #{ interface } #{ @stanza[ :ip ] } netmask #{ netmask }" if @stanza[ :ip ] sh "sudo ip netns exec #{ name } route add -net #{ @stanza[ :net ] } gw #{ @stanza[ :gw ] }" if @stanza[ :net ] and @stanza[ :gw ] self end |
#shutdown! ⇒ undefined
Kills running netns
116 117 118 |
# File 'ruby/trema/netns.rb', line 116 def shutdown! sh "sudo ip netns delete #{ name }" end |