mtu, description, mockups
parent
c7290452ad
commit
edb7955f30
68
src/main.cr
68
src/main.cr
|
@ -116,6 +116,18 @@ class NetworkCommands
|
||||||
raise "(ifconfig) Cannot set ip address alias #{ip.to_string} for #{name}"
|
raise "(ifconfig) Cannot set ip address alias #{ip.to_string} for #{name}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.mtu(name : String, mtu : Int32?)
|
||||||
|
unless Do.run("ifconfig", [ name, "mtu", mtu.to_s ]).success?
|
||||||
|
raise "(ifconfig) Cannot set mtu #{mtu} for #{name}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.description(name : String, description : String)
|
||||||
|
unless Do.run("ifconfig", [ name, "description", "\"#{description}\"" ]).success?
|
||||||
|
raise "(ifconfig) Cannot set description #{description} for #{name}"
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class IPCommand
|
class IPCommand
|
||||||
|
@ -146,8 +158,20 @@ class NetworkCommands
|
||||||
raise "(ip) Cannot add ip address alias #{ip.to_string} to #{name}"
|
raise "(ip) Cannot add ip address alias #{ip.to_string} to #{name}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.mtu(name : String, mtu : Int32?)
|
||||||
|
unless Do.run("ip", [ "link", "set", "mtu", mtu.to_s, "dev", name ]).success?
|
||||||
|
raise "(ip) Cannot set mtu #{mtu} to #{name}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.description(name : String, description : String)
|
||||||
|
puts "TODO: (ip) setup description '#{description}' to interface #{name}"
|
||||||
|
# unless Do.run("ip", [ "link", "set", "description", description, "dev", name ]).success?
|
||||||
|
# raise "(ip) Cannot set description #{description} to #{name}"
|
||||||
|
# end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def self.interface_exists(name : String)
|
def self.interface_exists(name : String)
|
||||||
@@cmd_network_configuration.interface_exists(name)
|
@@cmd_network_configuration.interface_exists(name)
|
||||||
|
@ -179,6 +203,14 @@ class NetworkCommands
|
||||||
@@cmd_network_configuration.set_alias name, ip
|
@@cmd_network_configuration.set_alias name, ip
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.mtu(name : String, mtu : Int32?)
|
||||||
|
@@cmd_network_configuration.mtu name, mtu
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.description(name : String, description : String)
|
||||||
|
@@cmd_network_configuration.description name, description
|
||||||
|
end
|
||||||
|
|
||||||
def self.wireless_list_ssid(ifname : String)
|
def self.wireless_list_ssid(ifname : String)
|
||||||
cmd = @@cmd_wireless_configuration
|
cmd = @@cmd_wireless_configuration
|
||||||
case cmd
|
case cmd
|
||||||
|
@ -232,6 +264,7 @@ class InterfaceConfiguration
|
||||||
property name : String
|
property name : String
|
||||||
property up : Bool
|
property up : Bool
|
||||||
property description : String?
|
property description : String?
|
||||||
|
property mtu : Int32?
|
||||||
property wireless : Bool
|
property wireless : Bool
|
||||||
property main_ip_v4 : IPAddress | DHCP | NotSetup
|
property main_ip_v4 : IPAddress | DHCP | NotSetup
|
||||||
property main_ip_v6 : IPAddress | DHCP | NotSetup
|
property main_ip_v6 : IPAddress | DHCP | NotSetup
|
||||||
|
@ -241,8 +274,10 @@ class InterfaceConfiguration
|
||||||
|
|
||||||
def initialize (@name, @up,
|
def initialize (@name, @up,
|
||||||
@description,
|
@description,
|
||||||
|
@mtu,
|
||||||
@main_ip_v4, @main_ip_v6, aliasses,
|
@main_ip_v4, @main_ip_v6, aliasses,
|
||||||
@wireless, @wireless_networks)
|
@wireless, @wireless_networks)
|
||||||
|
|
||||||
@aliasses_v4 = Array(IPAddress).new
|
@aliasses_v4 = Array(IPAddress).new
|
||||||
@aliasses_v6 = Array(IPAddress).new
|
@aliasses_v6 = Array(IPAddress).new
|
||||||
|
|
||||||
|
@ -267,10 +302,14 @@ class InterfaceConfiguration
|
||||||
str << "#{CRED}#{@name}#{CRESET}\n"
|
str << "#{CRED}#{@name}#{CRESET}\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
str << "\t#{@up? "up" : "down"}\n"
|
|
||||||
description = @description
|
|
||||||
str << "\t#description #{description.not_nil!}\n" unless description.nil?
|
str << "\t#description #{description.not_nil!}\n" unless description.nil?
|
||||||
|
|
||||||
|
str << "\t#{@up? "up" : "down"}\n"
|
||||||
|
|
||||||
|
unless mtu.nil?
|
||||||
|
str << "\tmtu #{mtu}\n"
|
||||||
|
end
|
||||||
|
|
||||||
# ipv4
|
# ipv4
|
||||||
str << "\tinet #{@main_ip_v4}\n"
|
str << "\tinet #{@main_ip_v4}\n"
|
||||||
unless @aliasses_v4.empty?
|
unless @aliasses_v4.empty?
|
||||||
|
@ -302,6 +341,16 @@ class InterfaceConfiguration
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
mtu = @mtu
|
||||||
|
unless mtu.nil?
|
||||||
|
NetworkCommands.mtu @name, mtu
|
||||||
|
end
|
||||||
|
|
||||||
|
description = @description
|
||||||
|
unless description.nil?
|
||||||
|
NetworkCommands.description @name, description
|
||||||
|
end
|
||||||
|
|
||||||
# ipv4 configuration
|
# ipv4 configuration
|
||||||
@main_ip_v4.tap do |ip|
|
@main_ip_v4.tap do |ip|
|
||||||
case ip
|
case ip
|
||||||
|
@ -325,6 +374,7 @@ class InterfaceConfiguration
|
||||||
|
|
||||||
# ipv6 configuration
|
# ipv6 configuration
|
||||||
@main_ip_v6.tap do |ip|
|
@main_ip_v6.tap do |ip|
|
||||||
|
|
||||||
case ip
|
case ip
|
||||||
when IPAddress
|
when IPAddress
|
||||||
NetworkCommands.set_ip @name, ip
|
NetworkCommands.set_ip @name, ip
|
||||||
|
@ -366,6 +416,7 @@ class NetworkConfigurationParser
|
||||||
def self.parse (ifname : String, data : String, wireless = false) : InterfaceConfiguration
|
def self.parse (ifname : String, data : String, wireless = false) : InterfaceConfiguration
|
||||||
up = false
|
up = false
|
||||||
description = nil
|
description = nil
|
||||||
|
mtu = nil
|
||||||
main_ip_v4 = NotSetup.new
|
main_ip_v4 = NotSetup.new
|
||||||
main_ip_v6 = NotSetup.new
|
main_ip_v6 = NotSetup.new
|
||||||
|
|
||||||
|
@ -393,6 +444,9 @@ class NetworkConfigurationParser
|
||||||
else
|
else
|
||||||
main_ip_v6 = InterfaceConfiguration::DHCP.new
|
main_ip_v6 = InterfaceConfiguration::DHCP.new
|
||||||
end
|
end
|
||||||
|
when /^inet6 autoconf/
|
||||||
|
# IPaddress is autoconfigured
|
||||||
|
puts "TODO: IPv6 autoconfiguration"
|
||||||
when /^inet6? .*/
|
when /^inet6? .*/
|
||||||
ipstr = /^inet6? ([a-f0-9:.\/]+)/.match(line).try &.[1]
|
ipstr = /^inet6? ([a-f0-9:.\/]+)/.match(line).try &.[1]
|
||||||
if ipstr.nil?
|
if ipstr.nil?
|
||||||
|
@ -413,6 +467,12 @@ class NetworkConfigurationParser
|
||||||
when /^network [^ ]+ dhcp/
|
when /^network [^ ]+ dhcp/
|
||||||
puts "TODO: network SSID dhcp"
|
puts "TODO: network SSID dhcp"
|
||||||
|
|
||||||
|
when /^network [^ ]+ dns .*/
|
||||||
|
puts "TODO: network SSID dns"
|
||||||
|
|
||||||
|
when /^mtu [0-9]+/
|
||||||
|
mtu = /^mtu ([0-9]+)/.match(line).try &.[1].to_i
|
||||||
|
|
||||||
when /^#.*$/
|
when /^#.*$/
|
||||||
# simple comment
|
# simple comment
|
||||||
when /^[ \t]*$/
|
when /^[ \t]*$/
|
||||||
|
@ -424,6 +484,7 @@ class NetworkConfigurationParser
|
||||||
|
|
||||||
InterfaceConfiguration.new(ifname, up,
|
InterfaceConfiguration.new(ifname, up,
|
||||||
description,
|
description,
|
||||||
|
mtu,
|
||||||
main_ip_v4, main_ip_v6,
|
main_ip_v4, main_ip_v6,
|
||||||
aliasses,
|
aliasses,
|
||||||
wireless, wireless_networks)
|
wireless, wireless_networks)
|
||||||
|
@ -484,5 +545,6 @@ if file.nil?
|
||||||
raise "Cannot choose files yet"
|
raise "Cannot choose files yet"
|
||||||
else
|
else
|
||||||
# TODO: why having to force "not_nil!" ? Seems like a compiler bug
|
# TODO: why having to force "not_nil!" ? Seems like a compiler bug
|
||||||
NetworkConfigurationParser.parse_file(file.not_nil!).execute
|
network_configuration = NetworkConfigurationParser.parse_file(file.not_nil!)
|
||||||
|
network_configuration.execute
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue