Author: mzugec
Date: Mon Jan 7 11:04:04 2008
New Revision: 43291
URL: http://svn.opensuse.org/viewcvs/yast?rev=43291&view=rev
Log:
interface names manage support - FaTE #300636
Modified:
trunk/network/VERSION
trunk/network/agents/ag_udev_persistent
trunk/network/package/yast2-network.changes
trunk/network/src/lan/hardware.ycp
trunk/network/src/modules/Lan.ycp
trunk/network/src/modules/LanItems.ycp
Modified: trunk/network/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/VERSION?rev=43291&r1=43290&r2=43291&view=diff
==============================================================================
--- trunk/network/VERSION (original)
+++ trunk/network/VERSION Mon Jan 7 11:04:04 2008
@@ -1 +1 @@
-2.16.17
+2.16.18
Modified: trunk/network/agents/ag_udev_persistent
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/agents/ag_udev_persistent?rev=43291&r1=43290&r2=43291&view=diff
==============================================================================
--- trunk/network/agents/ag_udev_persistent (original)
+++ trunk/network/agents/ag_udev_persistent Mon Jan 7 11:04:04 2008
@@ -155,6 +155,11 @@
if ($path eq '.rules_comment'){
return $class->set_rules_comment($args[0]);
}
+
+ if ($path eq '.nil'){
+ close FILE;
+ return 0;
+ }
}
sub Dir {
Modified: trunk/network/package/yast2-network.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/package/yast2-network.changes?rev=43291&r1=43290&r2=43291&view=diff
==============================================================================
--- trunk/network/package/yast2-network.changes (original)
+++ trunk/network/package/yast2-network.changes Mon Jan 7 11:04:04 2008
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Thu Dec 13 21:58:58 CET 2007 - mzugec@suse.cz
+
+- interface names manage support - FaTE #300636
+- 2.16.18
+
+-------------------------------------------------------------------
Thu Dec 13 18:33:06 CET 2007 - mzugec@suse.de
- in Proposal() re-read NetworkDevices again (#170558)
Modified: trunk/network/src/lan/hardware.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/hardware.ycp?rev=43291&r1=43290&r2=43291&view=diff
==============================================================================
--- trunk/network/src/lan/hardware.ycp (original)
+++ trunk/network/src/lan/hardware.ycp Mon Jan 7 11:04:04 2008
@@ -62,7 +62,6 @@
}
map hardware = nil;
-//map udev = nil;
boolean hw_standalone=false;
void initHardware(){
@@ -189,8 +188,8 @@
term UdevWidget =
`Frame(_("Udev rules"),
`HBox(
- `TextEntry(`id(`udev_rule), _("Matching rule"), ""),
- `TextEntry(`id(`device_name), _("Device Name"), "")
+ `TextEntry(`id(`device_name), _("Device Name"), ""),
+ `PushButton(`id(`change_udev), _("Change"))
)
);
@@ -199,33 +198,10 @@
term contents =
`VBox(
- UdevWidget,
+ `HBox(UdevWidget,`HStretch()),
TypeNameWidgets,
KernelBox,
`VStretch()
-/*
- `CheckBoxFrame(`id(`enable_hwcfg), caption, hardware["hwcfg"]:"" != "",
- `HBox(
- `HSpacing(2),
- `VBox(
- `VSpacing(0.5),
- TypeNameWidgets,
- `VSpacing(1.5),
- KernelBox,
- `VSpacing(1.5),
- `HBox(
- `HStretch(),
- `HSpacing(0.5),
- `PushButton(`id(`list), _("Select from &List")),
- `HSpacing(0.5),
- `HStretch()
- ),
- `VSpacing(0.5)
- ),
- `HSpacing(2),
- `VStretch()
- ))
-*/
);
UI::ReplaceWidget(`hw_content, contents);
@@ -236,11 +212,9 @@
ChangeWidgetIfExists(`id(`hwcfg), `Enabled, hardware["no_hotplug"]:false);
ChangeWidgetIfExists(`id(`usb), `Enabled, (hardware["hotplug"]:"" == "usb" || hardware["hotplug"]:"" == "") && hardware["type"]:"" != "dummy");
ChangeWidgetIfExists(`id(`pcmcia), `Enabled, (hardware["hotplug"]:"" == "pcmcia" || hardware["hotplug"]:"" == "") && hardware["type"]:"" != "dummy");
- UI::ChangeWidget(`id(`udev_rule), `Enabled, false);
UI::ChangeWidget(`id(`device_name), `Enabled, false);
UI::ChangeWidget(`id(`options), `Enabled, false);
- UI::ChangeWidget(`id(`udev_rule), `Value, LanItems::GetItemUdev()[0]:"");
UI::ChangeWidget(`id(`device_name), `Value, LanItems::GetItemUdev()[1]:"");
if (!hw_standalone) ChangeWidgetIfExists(`id(`dev), `Enabled,false);
@@ -433,6 +407,51 @@
UI::ChangeWidget(`id(`options), `Value, "");
}
}
+ if (ret==`change_udev){
+ UI::OpenDialog(
+ `VBox(
+ `RadioButtonGroup(`id(`udev_type),
+ `VBox(
+ `Label("Rule by:"),
+ `Left(`RadioButton(`id(`mac), sformat("MAC address : %1", LanItems::getCurrentItem()["hwinfo", "mac"]:""))),
+ `Left(`RadioButton(`id(`busid), sformat("BusID : %1", LanItems::getCurrentItem()["hwinfo", "busid"]:"") ))
+ )
+ ),
+ `HBox(`CheckBox(`id(`change_dev_name), `opt(`notify), _("Change DeviceName"), false),
+ `TextEntry(`id(`dev_name),`opt(`shrinkable), "", LanItems::GetItemUdev()[1]:"")),
+ `VSpacing(0.5),
+ `HBox( `PushButton (`id(`ok), `opt(`default), Label::OKButton ()),
+ `PushButton (`id(`cancel), Label::CancelButton ()) )
+ )
+
+ );
+ string rule = splitstring(LanItems::GetItemUdev()[0]:"", "==")[0]:"";
+ if (rule=="ATTR{address}") UI::ChangeWidget(`id(`udev_type), `CurrentButton, `mac);
+ else if (rule=="KERNELS") UI::ChangeWidget(`id(`udev_type), `CurrentButton, `busid);
+ else y2error("Unknown udev rule : %1", LanItems::GetItemUdev()[0]:"");
+ UI::ChangeWidget(`dev_name, `Enabled, false);
+ any ret = nil;
+ while(ret!=`cancel && ret!=`ok){
+ ret = UI::UserInput();
+ if (ret == `change_dev_name) UI::ChangeWidget(`dev_name, `Enabled, (boolean)UI::QueryWidget(`change_dev_name, `Value));
+ }
+ if (ret == `ok){
+ string old_name = LanItems::GetItemUdev()[1]:"";
+ // write new udev rule
+ LanItems::Items[LanItems::current, "udev", "net"]=["SUBSYSTEM==\"net\"",
+ "DRIVERS==\"?*\"",
+ UI::QueryWidget(`udev_type, `CurrentButton)==`mac ? sformat("ATTR{address}==\"%1\"", LanItems::getCurrentItem()["hwinfo", "mac"]:"") : sformat("KERNELS==\"%1\"", LanItems::getCurrentItem()["hwinfo", "busid"]:""),
+ sformat("NAME==\"%1\"", ((boolean)UI::QueryWidget(`change_dev_name, `Value))?UI::QueryWidget(`dev_name, `Value):LanItems::GetItemUdev()[1]:"")
+ ];
+ // when dev_name changed, rename ifcfg (both in NetworkDevices and LanItems)
+ if (LanItems::GetItemUdev()[1]:""!=old_name){
+ // NetworkDevices::Delete(old_name);
+ LanItems::Items[LanItems::current, "ifcfg"]=LanItems::GetItemUdev()[1]:"";
+ }
+ }
+ UI::CloseDialog();
+ UI::ChangeWidget(`device_name, `Value, LanItems::GetItemUdev()[1]:"");
+ }
return nil;
}
@@ -458,73 +477,6 @@
}
LanItems::setDriver((string) UI::QueryWidget(`modul, `Value));
-
-
-/*
- if(!(boolean)UI::QueryWidget(`enable_hwcfg, `Value))
- {
- NetworkModules::DeleteM(LanItems::nm_name);
- if(size(LanItems::nm_name_old)==0) LanItems::nm_name_old = LanItems::nm_name;
- LanItems::nm_name="";
- NetworkDevices::Current["_nm_name"]="";
- string tmp_name = NetworkDevices::Name;
- NetworkDevices::Commit();
- NetworkDevices::Select(tmp_name);
- } else {
-
- if(UI::WidgetExists(`id(`hwcfg))) {
- LanItems::nm_name_old = LanItems::nm_name;
- LanItems::nm_name = (string) UI::QueryWidget(`id(`hwcfg), `Value);
- }
-
- if(UI::WidgetExists(`id(`hwcfg))) {
- hardware["hwcfg"] = (string) UI::QueryWidget (`id (`hwcfg), `Value);
- if (LanItems::operation == `add || hardware["hwcfg"]:"" != LanItems::nm_name) {
- if (contains (NetworkModules::ListM(""), hardware["hwcfg"]:"")) {
- UI::SetFocus (`id (`hwcfg));
- Popup::Error(sformat(_("Hardware configuration %1 already exists.
-Choose a different one."), hardware["hwcfg"]:""));
- }
- }
- }
-
- if(LanItems::operation == `add && UI::WidgetExists(`id(`num))) {
- string nm = (string) UI::QueryWidget(`id(`num), `Value);
- if(LanItems::operation == `add || (hardware["device"]:"" != LanItems::device && hardware["type"]:"" != LanItems::type)) {
- if(contains(NetworkDevices::List(""), NetworkDevices::device_name(hardware["type"]:"", nm))) {
- Popup::Error(sformat(_("Configuration name %1 (%2) already exists.
-Choose a different one."), nm, NetworkDevices::device_name(hardware["type"]:"", nm)));
- UI::SetFocus(`id(`num));
- }
- }
- }
-
- if(UI::WidgetExists(`id(`num))) {
- string devic = (string) UI::QueryWidget(`id(`num), `Value);
- }
- NetworkModules::Alias = (string) UI::QueryWidget(`id(`modul), `Value);
- NetworkModules::Options = (string) UI::QueryWidget(`id(`options), `Value);
- }
-
-
- if(UI::WidgetExists(`id(`num)))
- LanItems::device = (string) UI::QueryWidget(`id(`num), `Value);
-
- if(UI::WidgetExists(`id(`pcmcia)) || UI::WidgetExists(`id(`usb))) {
- if(UI::QueryWidget(`id(`pcmcia), `Value) == true)
- LanItems::hotplug = "pcmcia";
- else if(UI::QueryWidget(`id(`usb), `Value) == true)
- LanItems::hotplug = "usb";
- else
- LanItems::hotplug = "";
- }
- LanItems::hotplug = "";
-
- if(UI::WidgetExists(`id(`dev))) {
- hardware["type"] = (string) UI::QueryWidget(`id(`dev), `Value);
- LanItems::type = hardware["type"]:"";
- }
-*/
}
Modified: trunk/network/src/modules/Lan.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/modules/Lan.ycp?rev=43291&r1=43290&r2=43291&view=diff
==============================================================================
--- trunk/network/src/modules/Lan.ycp (original)
+++ trunk/network/src/modules/Lan.ycp Mon Jan 7 11:04:04 2008
@@ -402,7 +402,8 @@
ProgressNextStage(_("Writing hostname and DNS configuration..."));
// write resolv.conf after change from dhcp to static (#327074)
// reload/restart network before this to put correct resolv.conf from dhcp-backup
- NetworkService::StartStop ();
+ if (LanItems::force_restart) SCR::Execute(.target.bash, "rcnetwork restart");
+ else NetworkService::StartStop ();
DNS::Write();
Host::Write();
Progress::set (orig);
Modified: trunk/network/src/modules/LanItems.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/modules/LanItems.ycp?rev=43291&r1=43290&r2=43291&view=diff
==============================================================================
--- trunk/network/src/modules/LanItems.ycp (original)
+++ trunk/network/src/modules/LanItems.ycp Mon Jan 7 11:04:04 2008
@@ -35,7 +35,8 @@
*/
global symbol operation = nil;
-
+// in special cases when rcnetwork reload is not enought
+global boolean force_restart=false;
global string description = "";
@@ -168,8 +169,28 @@
return true;
}
+global list<string> GetItemUdev(){
+// column: 0 mens rule, 1 means NAME
+ list<string> udevs=["", ""];
+ if (size(Items[current, "udev", "net"]:[])>3)
+ {
+ foreach(string row, Items[current, "udev", "net"]:[], {
+ if (issubstring(row, "ATTR{address}")||issubstring(row, "KERNELS")) udevs[0]=row;
+ else if (issubstring(row, "NAME")) udevs[1]=regexpsub (row, ".*=[\"]*([^ ]*)\"$", "\\1");
+
+ });
+/*
+ udevs[0]=Items[current, "udev", "net", 2]:"";
+ if (regexpmatch (Items[current, "udev", "net", 3]:"", ".*=[^ ]*\"$"))
+ udevs[1]=regexpsub (Items[current, "udev", "net", 3]:"", ".*=[\"]*([^ ]*)\"$", "\\1");
+*/
+ }
+ return udevs;
+}
+
+
+
global void WriteUdevRules(){
-// SCR::Write(.udev_persistent.net, udev_net_rules);
map udev_drivers_rules = $[];
foreach(integer key, (list<integer>)Map::Keys(Items), {
if (hasAnyValue(Items[key, "udev", "driver"]:""))
@@ -177,6 +198,31 @@
});
y2milestone("write udev rules: %1", udev_drivers_rules);
SCR::Write(.udev_persistent.drivers, udev_drivers_rules);
+ // write udev net rules and hwdown&hwup when NAME changed
+ list<string> changed_devices = [];
+ list<string> net_rules = [];
+ foreach(integer key, (list<integer>)Map::Keys(Items), {
+ if (size(Items[key, "udev", "net"]:[])>0) {
+ string dev_name = Items[key, "hwinfo", "dev_name"]:"";
+ current=key;
+ net_rules = add(net_rules, sformat("SUBSYSTEM==\"net\", DRIVERS==\"?*\", %1, NAME=\"%2\"",
+ GetItemUdev()[0]:"", GetItemUdev()[1]:""));
+ if (dev_name!=GetItemUdev()[1]:"") {
+ changed_devices = add(changed_devices, dev_name);
+ force_restart=true;
+ }
+
+ }
+ });
+
+ // SCR::Write(.udev_persistent.rules_comment, comment);
+ // SCR::Write(.udev_persistent.rules, rules);
+
+ SCR::Write(.udev_persistent.rules, net_rules);
+ SCR::Write(.udev_persistent.nil, []);
+ foreach(string dev, changed_devices, {
+ y2internal("renaming devices : %1", SCR::Execute(.target.bash_output, sformat("hwdown %1 && hwup %1", dev)));
+ });
}
/**
@@ -760,18 +806,6 @@
"BONDING_MODULE_OPTS": "",
];
-global list<string> GetItemUdev(){
-// column: 0 mens rule, 1 means NAME
- list<string> udevs=["", ""];
- if (size(Items[current, "udev", "net"]:[])>3)
- {
- udevs[0]=Items[current, "udev", "net", 2]:"";
- if (regexpmatch (Items[current, "udev", "net", 3]:"", ".*=[^ ]*\"$"))
- udevs[1]=regexpsub (Items[current, "udev", "net", 3]:"", ".*=[\"]*([^ ]*)\"$", "\\1");
- }
- return udevs;
-}
-
/**
* Select the given device
* @param dev device to select ("" for new device, default values)
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org