Author: mzugec
Date: Sun Mar 16 14:12:33 2008
New Revision: 45497
URL: http://svn.opensuse.org/viewcvs/yast?rev=45497&view=rev
Log:
for devices attached to bridge remove configuration (bnc#367938)
Added:
trunk/network/src/lan/bridge.ycp
Modified:
trunk/network/src/lan/address.ycp
trunk/network/src/modules/LanItems.ycp
Modified: trunk/network/src/lan/address.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/address.ycp?rev=45497&r1=45496&r2=45497&view=diff
==============================================================================
--- trunk/network/src/lan/address.ycp (original)
+++ trunk/network/src/lan/address.ycp Sun Mar 16 14:12:33 2008
@@ -37,6 +37,7 @@
include "network/lan/hardware.ycp";
include "network/lan/virtual.ycp";
include "network/complex.ycp";
+include "network/lan/bridge.ycp";
/**
* obsoleted by GetDefaultsForHW
@@ -102,44 +103,6 @@
settings[key] = value;
}
-/**
- * Default function to init the value of devices attached to bridge (BRIDGE_PORTS).
- * @param key id of the widget
- */
-void InitBridge(string key)
-{
- list items = [];
- string old_name=NetworkInterfaces::Name;
- // old values (preselected values)
- list<string> br_ports = splitstring(NetworkInterfaces::Current["BRIDGE_PORTS"]:"", " ");
- // from all configured netcards filter 0.0.0.0 configurations
- map configurations = NetworkInterfaces::FilterDevices("netcard");
- foreach(string devtype, splitstring(NetworkInterfaces::CardRegex["netcard"]:"", "|"), {
- foreach(string devname, (list<string>) Map::Keys(configurations[devtype]:$[]), {
-
- //filter the eth devices (IPADDR=0.0.0.0 - promiscuited mode)
- if ((string)configurations[devtype, devname, "IPADDR"]:"" == "0.0.0.0")
- {
- items = add (items, `item(`id(devname), sformat("%1 - %2",devname, NetworkInterfaces::GetValue(devname, "NAME")), contains(br_ports, devname)) );
- }
- });
- });
-
-
- // we can use also unconfigured devices
- foreach(integer row, any value, LanItems::Items,{
- LanItems::current = row;
- if (!LanItems::IsItemConfigured()){
- string dev_name = LanItems::getCurrentItem()["hwinfo", "dev_name"]:"";
- string description = BuildDescription(LanItems::type, LanItems::device, $["dev_name":dev_name], [LanItems::getCurrentItem()["hwinfo"]:$[]]);
- if (hasAnyValue(dev_name)) items = add(items, `item(`id(dev_name), sformat("%1 - %2", dev_name, description), contains(br_ports, dev_name)));
- }
- });
-
-
- NetworkInterfaces::Select(old_name);
- UI::ChangeWidget(`id(key), `Items, items);
-}
/**
* Default function to store the value of devices attached to bridge (BRIDGE_PORTS).
@@ -152,6 +115,7 @@
y2internal("store bridge %1 : %2", key, settings["BRIDGE_PORTS"]:"");
}
+
/**
* Default function to init the value of slave ETHERDEVICE box.
* @param key id of the widget
@@ -558,6 +522,8 @@
"items" : [],
"init": InitBridge,
"store": StoreBridge,
+ "validate_type": `function,
+ "validate_function": ValidateBridge,
"help": help["bridge_ports"]:"",
],
"ETHERDEVICE": $[
Added: trunk/network/src/lan/bridge.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/bridge.ycp?rev=45497&view=auto
==============================================================================
--- trunk/network/src/lan/bridge.ycp (added)
+++ trunk/network/src/lan/bridge.ycp Sun Mar 16 14:12:33 2008
@@ -0,0 +1,77 @@
+{
+
+
+/**
+ * Default function to init the value of devices attached to bridge (BRIDGE_PORTS).
+ * @param key id of the widget
+ */
+void InitBridge(string key)
+{
+ list items = [];
+ string old_name=NetworkInterfaces::Name;
+ // old values (preselected values)
+ list<string> br_ports = splitstring(NetworkInterfaces::Current["BRIDGE_PORTS"]:"", " ");
+ // from all configured netcards filter 0.0.0.0 configurations
+ map configurations = NetworkInterfaces::FilterDevices("netcard");
+ foreach(string devtype, splitstring(NetworkInterfaces::CardRegex["netcard"]:"", "|"), {
+ if (contains(["br", "vlan"], devtype)) continue;
+ foreach(string devname, (list<string>) Map::Keys(configurations[devtype]:$[]), {
+
+ //filter the eth devices (IPADDR=0.0.0.0 - promiscuited mode)
+// if ((string)configurations[devtype, devname, "IPADDR"]:"" == "0.0.0.0") comment="";
+// {
+string description = sformat("%1%2", NetworkInterfaces::GetValue(devname, "NAME"), ((string)configurations[devtype, devname, "IPADDR"]:"" != "0.0.0.0") ? sformat(" (%1)", "configuration") : "");
+ items = add (items, `item(`id(devname), sformat("%1 - %2",devname, description), contains(br_ports, devname)) );
+// }
+ });
+ });
+
+ // we can use also unconfigured devices
+ foreach(integer row, any value, LanItems::Items,{
+ LanItems::current = row;
+ if (!LanItems::IsItemConfigured()){
+ string dev_name = LanItems::getCurrentItem()["hwinfo", "dev_name"]:"";
+ string description = BuildDescription(LanItems::type, LanItems::device, $["dev_name":dev_name], [LanItems::getCurrentItem()["hwinfo"]:$[]]);
+ if (hasAnyValue(dev_name)) items = add(items, `item(`id(dev_name), sformat("%1 - %2", dev_name, description), contains(br_ports, dev_name)));
+ }
+ });
+
+
+ NetworkInterfaces::Select(old_name);
+ UI::ChangeWidget(`id(key), `Items, items);
+}
+
+boolean ValidateBridge (string key, map event) {
+ boolean valid=true;
+ boolean confirmed=false;
+ list<term> items = (list<term>)UI::QueryWidget(`id(key), `Items);
+ list<string> sel = (list<string>)UI::QueryWidget (`id("BRIDGE_PORTS"), `SelectedItems);
+ list <string> confs = [];
+ map configurations = NetworkInterfaces::FilterDevices("netcard");
+ foreach(string devtype, splitstring(NetworkInterfaces::CardRegex["netcard"]:"", "|"), {
+ confs = (list<string>)union(confs, Map::Keys(configurations[devtype]:$[]));
+ });
+ foreach(term t, items, {
+ string device = t[0, 0]:"";
+ if (contains(sel, device) && hasAnyValue(device)) {
+ if (contains(confs, device)){
+ if ((string)configurations[NetworkInterfaces::GetType(device), device, "IPADDR"]:"" != "0.0.0.0") {
+ if(!confirmed) confirmed = Popup::ContinueCancel(_("One or more selected devices are already configured.
+To work properly configuration must be removed."));
+ if (confirmed) {
+ integer i = LanItems::current;
+ if (LanItems::FindAndSelect(device)) {
+ y2internal("delete %1", device);
+ LanItems::DeleteItem();
+ NetworkInterfaces::Add();
+ LanItems::current = i;
+ }
+ } else valid=false;
+ }
+ }
+ }
+ });
+ return valid;
+}
+
+}
Modified: trunk/network/src/modules/LanItems.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/modules/LanItems.ycp?rev=45497&r1=45496&r2=45497&view=diff
==============================================================================
--- trunk/network/src/modules/LanItems.ycp (original)
+++ trunk/network/src/modules/LanItems.ycp Sun Mar 16 14:12:33 2008
@@ -290,6 +290,18 @@
return confs;
}
+global boolean FindAndSelect(string device){
+ boolean found=false;
+ foreach(integer i, map a, (map >)Items, {
+ if (a["ifcfg"]:""==device){
+ found=true;
+ current = i;
+ }
+ });
+ return found;
+}
+
+
global void ReadHw(){
Items=$[];
Hardware = ReadHardware("netcard");
@@ -695,6 +707,7 @@
mtu = GetDeviceVar (devmap, defaults, "MTU");
ethtool_options = GetDeviceVar (devmap, defaults, "ETHTOOL_OPTIONS");
startmode = GetDeviceVar (devmap, defaults, "STARTMODE");
+y2internal("startmode %1", startmode);
usercontrol = GetDeviceVar (devmap, defaults, "USERCONTROL") == "yes";
description = GetDeviceVar (devmap, defaults, "NAME");
bond_option = GetDeviceVar(devmap, defaults, "BONDING_MODULE_OPTS");
@@ -880,6 +893,8 @@
/* general stuff */
description = BuildDescription (type, device, devmap, Hardware);
+y2internal("devmap %1", devmap);
+
SetDeviceVars(devmap, SysconfigDefaults);
@@ -1350,12 +1365,6 @@
NetworkInterfaces::Commit();
Items[current, "ifcfg"] = "";
}
-/*
- if (hasAnyValue(hwcfg)) {
- NetworkModules::DeleteM(hwcfg);
- Items[current, "hwcfg"] = "";
- }
-*/
if (! (size(Items[current, "hwinfo"]:$[])>0) ){
map tmp_items = $[];
foreach(integer key, any value, Items, {
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org