From f03bb368cfe0e063e4d1a00c1af5004fb217eefc Mon Sep 17 00:00:00 2001 From: Josef Reidinger Date: Tue, 3 Sep 2019 11:03:34 +0200 Subject: [PATCH] add zone to ifcfg file --- src/lib/y2network/connection_config/base.rb | 3 +++ src/lib/y2network/interface_config_builder.rb | 4 +++- src/lib/y2network/sysconfig/connection_config_readers/base.rb | 1 + src/lib/y2network/sysconfig/connection_config_writers/base.rb | 1 + src/lib/y2network/sysconfig/interface_file.rb | 4 ++++ 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lib/y2network/connection_config/base.rb b/src/lib/y2network/connection_config/base.rb index 8aa82df4b..a75516664 100644 --- a/src/lib/y2network/connection_config/base.rb +++ b/src/lib/y2network/connection_config/base.rb @@ -57,6 +57,8 @@ class Base attr_accessor :lladdress # @return [String] configuration for ethtools when initializing attr_accessor :ethtool_options + # @return [String] assigned firewall zone to interface + attr_accessor :firewall_zone # Constructor def initialize @@ -65,6 +67,7 @@ def initialize @startmode = Startmode.create("manual") @description = "" @ethtool_options = "" + @firewall_zone = "" end # Propose reasonable defaults for given config. Useful for newly created devices. diff --git a/src/lib/y2network/interface_config_builder.rb b/src/lib/y2network/interface_config_builder.rb index acbb80fc7..9295c3d49 100644 --- a/src/lib/y2network/interface_config_builder.rb +++ b/src/lib/y2network/interface_config_builder.rb @@ -118,6 +118,8 @@ def save yast_config.connections.add_or_update(@connection_config) yast_config.rename_interface(@old_name, name, renaming_mechanism) if renamed_interface? + # write to ifcfg always and to firewalld only when available + @connection_config.firewall_zone = firewall_zone # create new instance as name can change firewall_interface = Y2Firewall::Firewalld::Interface.new(name) if Y2Firewall::Firewalld.instance.installed? @@ -191,7 +193,7 @@ def firewall_zone # TODO: handle renaming firewall_interface = Y2Firewall::Firewalld::Interface.new(name) - @firewall_zone = firewall_interface.zone && firewall_interface.zone.name + @firewall_zone = (firewall_interface.zone && firewall_interface.zone.name) || @connection_config.firewall_zone end # sets assigned firewall zone diff --git a/src/lib/y2network/sysconfig/connection_config_readers/base.rb b/src/lib/y2network/sysconfig/connection_config_readers/base.rb index e28232912..501193550 100644 --- a/src/lib/y2network/sysconfig/connection_config_readers/base.rb +++ b/src/lib/y2network/sysconfig/connection_config_readers/base.rb @@ -55,6 +55,7 @@ def connection_config conn.startmode = Startmode.create(file.startmode || "manual") conn.startmode.priority = file.ifplugd_priority if conn.startmode.name == "ifplugd" conn.ethtool_options = file.ethtool_options + conn.firewall_zone = file.zone update_connection_config(conn) end end diff --git a/src/lib/y2network/sysconfig/connection_config_writers/base.rb b/src/lib/y2network/sysconfig/connection_config_writers/base.rb index a6182f9e8..ef6f6410e 100644 --- a/src/lib/y2network/sysconfig/connection_config_writers/base.rb +++ b/src/lib/y2network/sysconfig/connection_config_writers/base.rb @@ -46,6 +46,7 @@ def write(conn) file.startmode = conn.startmode.to_s file.ifplugd_priority = conn.startmode.priority if conn.startmode.name == "ifplugd" file.ethtool_options = conn.ethtool_options unless conn.ethtool_options.empty? + file.zone = conn.firewall_zone add_ips(conn) update_file(conn) end diff --git a/src/lib/y2network/sysconfig/interface_file.rb b/src/lib/y2network/sysconfig/interface_file.rb index b59c336be..350c02a4e 100644 --- a/src/lib/y2network/sysconfig/interface_file.rb +++ b/src/lib/y2network/sysconfig/interface_file.rb @@ -185,6 +185,10 @@ def variable_name(param_name) # @return [String] setting variables on device activation. See man ethtool define_variable(:ethtool_options) + # !@attribute [r] zone + # @return [String] assign zone to interface. Extensions then can handle it + define_variable(:zone) + # !@attribute [r] wireless_key_length # @return [Integer] Length in bits for all keys used define_variable(:wireless_key_length, :integer)