Author: mvidner
Date: Fri Jul 22 18:09:02 2011
New Revision: 64967
URL: http://svn.opensuse.org/viewcvs/yast?rev=64967&view=rev
Log:
2.21.0
Merged from SLE11-SP1 and SLE11-SP2:
- Support biosdevname=1 NIC naming scheme: don't write mac-based
udev rules (FATE#311332).
- STARMODE='nfsroot' also for FCoE (FATE#306855).
- Show NIC device names for unconfigured NICs (FATE#311335).
- Fixed configuring multiple interfaces with the same VLAN
(FATE#311380, FATE#309240, bnc#572747, bnc#588588)
- Make the hostname resolvable to our static address coming from
Linuxrc (bnc#664929).
- Do not enable WIRELESS_POWER by default, some APs are broken
(FATE#309255).
svn merge -r63771:HEAD http://svn.opensuse.org/svn/yast/branches/SuSE-Code-11-SP2-Branch/network
Modified:
trunk/network/ (props changed)
trunk/network/VERSION
trunk/network/package/yast2-network.changes
trunk/network/src/clients/save_network.ycp
trunk/network/src/installation/inst_hostname.ycp
trunk/network/src/lan/address.ycp
trunk/network/src/lan/hardware.ycp
trunk/network/src/modules/Host.ycp
trunk/network/src/modules/Lan.ycp
trunk/network/src/modules/LanItems.ycp
trunk/network/src/modules/LanUdevAuto.ycp
trunk/network/yast2-network.spec.in
Modified: trunk/network/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/VERSION?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/VERSION (original)
+++ trunk/network/VERSION Fri Jul 22 18:09:02 2011
@@ -1 +1 @@
-2.20.13
+2.21.0
Modified: trunk/network/package/yast2-network.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/package/yast2-network.changes?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/package/yast2-network.changes (original)
+++ trunk/network/package/yast2-network.changes Fri Jul 22 18:09:02 2011
@@ -1,4 +1,23 @@
-------------------------------------------------------------------
+Fri Jul 22 17:49:47 CEST 2011 - mvidner@suse.cz
+
+- Support biosdevname=1 NIC naming scheme: don't write mac-based udev
+ rules (FATE#311332).
+- STARMODE='nfsroot' also for FCoE (FATE#306855).
+- Show NIC device names for unconfigured NICs (FATE#311335).
+- Fixed configuring multiple interfaces with the same VLAN (FATE#311380,
+ FATE#309240, bnc#572747, bnc#588588)
+- Make the hostname resolvable to our static address coming from
+ Linuxrc (bnc#664929).
+- 2.21.0
+
+-------------------------------------------------------------------
+Fri Jul 22 17:49:46 CEST 2011 - jreidinger@suse.cz
+
+- Do not enable WIRELESS_POWER by default, some APs are broken
+ (FATE#309255).
+
+-------------------------------------------------------------------
Fri Jul 22 15:48:16 CEST 2011 - locilka@suse.cz
- Obsoleted X-KDE-SubstituteUID replaced with xdg-su in Exec in
Modified: trunk/network/src/clients/save_network.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/clients/save_network.ycp?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/src/clients/save_network.ycp (original)
+++ trunk/network/src/clients/save_network.ycp Fri Jul 22 18:09:02 2011
@@ -223,132 +223,122 @@
list<map> hardware=ReadHardware("netcard");
y2milestone("hardware %1", hardware);
+string StdoutOf(string command) {
+ map out = (map) SCR::Execute (.target.bash_output, command);
+ return out["stdout"]:"";
+}
-
-void CreateIfcfg(){
- string network_configuration="";
+void CreateIfcfg() {
+ string ifcfg="";
if (network_disk==1 && contains(NetworkStorage::getiBFTDevices(), InstallInf["netdevice"]:"")){
- network_configuration = sformat("%1STARTMODE='nfsroot'\nBOOTPROTO='ibft'\n", network_configuration);
- } else {
-
- // set BOOTPROTO=[ static | dhcp ]
- if (InstallInf["bootproto"]:"dhcp"=="static")
- {
- // add broadcast interface #suse49131
- network_configuration=sformat("BOOTPROTO='static'\nIPADDR='%1/%2'\nBROADCAST='%3'\n",
- InstallInf["ipaddr"]:"", Netmask::ToBits(InstallInf["netmask"]:""), InstallInf["bcast"]:"");
- if(size(InstallInf["ipaddr6"]:"")>0){
- network_configuration=sformat("%1\n%2", network_configuration,
- sformat("LABEL_ipv6='ipv6'\nIPADDR_ipv6='%1'\n", InstallInf["ipaddr6"]:"")
- );
- }
- }
- else
- {
- //DHCP (also for IPv6) setup
- if (InstallInf["bootproto"]:""=="dhcp") network_configuration="BOOTPROTO='dhcp4'\n";
- else if (InstallInf["bootproto"]:""=="dhcp6") network_configuration="BOOTPROTO='dhcp6'\n";
- else if (InstallInf["bootproto"]:""=="dhcp,dhcp6") network_configuration="BOOTPROTO='dhcp'\n";
-
- // set DHCP_SET_HOSTNAME=yes #suse30528
- y2milestone("set DHCLIENT_SET_HOSTNAME=yes on installed system");
- SCR::Execute(.target.bash_output, "sed -i s/\"DHCLIENT_SET_HOSTNAME=.*\"/'DHCLIENT_SET_HOSTNAME=\"yes\"'/g /etc/sysconfig/network/dhcp");
- }
-
- switch(network_disk)
- {
- case 0:
- network_configuration = sformat("%1STARTMODE='onboot'\n", network_configuration);
- break;
- case 1:
- if (!contains(NetworkStorage::getiBFTDevices(), InstallInf["netdevice"]:"")){
- network_configuration = sformat("%1STARTMODE='nfsroot'\n", network_configuration);
- }
- break;
- case 3: // FCoE case - create VLAN configuration
- map cmd = (map) SCR::Execute(.target.bash_output,
- "ls -la /sys/block/*|grep target|grep eth|cut -d'>' -f2|cut -d'/' -f5|uniq");
- y2internal("cmd %1", cmd);
- if (cmd["exit"]:-1==0){
- string ifcfg = splitstring(cmd["stdout"]:"", "\n")[0]:"";
- y2internal("ifcfg: %1", ifcfg);
- string config=sformat("BOOTPROTO=\"static\"\nSTARTMODE=\"nfsroot\"
-ETHERDEVICE=\"%1\"\nUSERCONTROL=\"no\"\n", splitstring(ifcfg, ".")[0]:"");
- y2internal("config: %1", config);
- string config_file=sformat("/etc/sysconfig/network/ifcfg-%1", ifcfg);
- y2internal("filename: %1", config_file);
- SCR::Write(.target.string, config_file, config);
- } else y2error("Command failed.");
- case 2:
- network_configuration = sformat("%1STARTMODE='nfsroot'\n", network_configuration);
- break;
- }
-
- }
-
-
- // wireless devices (bnc#223570)
- if ( size(InstallInf["WESSID"]:"")>0 )
- {
- network_configuration = sformat("%1WIRELESS_ESSID='%2'\n", network_configuration, InstallInf["WESSID"]:"");
-// network_configuration = sformat("%1WIRELESS_AUTH_MODE='%2'\n", network_configuration, InstallInf["WAuth"]:"");
- switch(InstallInf["WAuth"]:""){
- case "" : // "" means wpa-psk
- case "psk" :
- network_configuration = sformat("%1WIRELESS_WPA_PSK='%2'\n", network_configuration, InstallInf["WKey"]:"");
- network_configuration = sformat("%1WIRELESS_AUTH_MODE='psk'\n", network_configuration);
- break;
- case "open" :
- network_configuration = sformat("%1WIRELESS_AUTH_MODE='no-encryption'\n", network_configuration);
- break;
- case "wep_open" :
- case "wep_restricted" :
- string type="";
- if (InstallInf["WkeyType"]:""=="password") type="h:";
- else if (InstallInf["WkeyType"]:""=="ascii") type="s:";
- network_configuration = sformat("%1WIRELESS_AUTH_MODE='%2'\n", network_configuration, (InstallInf["WAuth"]:""=="wep-open") ? "open" : "sharedkey");
- network_configuration = sformat("%1WIRELESS_DEFAULT_KEY='0'\n", network_configuration);
- network_configuration = sformat("%1WIRELESS_KEY_0='%2%3'\n", network_configuration, type, InstallInf["WKey"]:"");
- network_configuration = sformat("%1WIRELESS_KEY_LENGTH='%2'\n", network_configuration, InstallInf["WKeyLen"]:"");
- if (size(InstallInf["WKeyType"]:"")>0 && size(InstallInf["WKey"]:"")>0)
- network_configuration = sformat("%1WIRELESS_KEY_0='%2:%3'\n", network_configuration,
- substring(InstallInf["WKeyType"]:"", 0, 1), InstallInf["WKey"]:"");
- break;
- }
- }
-
-
- // if available, write MTU
- if (size(InstallInf["mtu"]:"")>0)
- network_configuration = sformat("%1MTU='%2'\n", network_configuration, InstallInf["mtu"]:"");
+ ifcfg = sformat("%1STARTMODE='nfsroot'\nBOOTPROTO='ibft'\n", ifcfg);
+ }
+ else {
+ // set BOOTPROTO=[ static | dhcp ]
+ if (InstallInf["bootproto"]:"dhcp"=="static") {
+ // add broadcast interface #suse49131
+ ifcfg=sformat("BOOTPROTO='static'\nIPADDR='%1/%2'\nBROADCAST='%3'\n",
+ InstallInf["ipaddr"]:"", Netmask::ToBits(InstallInf["netmask"]:""), InstallInf["bcast"]:"");
+ if(size(InstallInf["ipaddr6"]:"")>0){
+ ifcfg=sformat("%1\n%2", ifcfg,
+ sformat("LABEL_ipv6='ipv6'\nIPADDR_ipv6='%1'\n", InstallInf["ipaddr6"]:"")
+ );
+ }
+ }
+ else {
+ //DHCP (also for IPv6) setup
+ if (InstallInf["bootproto"]:""=="dhcp") ifcfg="BOOTPROTO='dhcp4'\n";
+ else if (InstallInf["bootproto"]:""=="dhcp6") ifcfg="BOOTPROTO='dhcp6'\n";
+ else if (InstallInf["bootproto"]:""=="dhcp,dhcp6") ifcfg="BOOTPROTO='dhcp'\n";
+
+ // set DHCP_SET_HOSTNAME=yes #suse30528
+ y2milestone("set DHCLIENT_SET_HOSTNAME=yes on installed system");
+ SCR::Execute(.target.bash_output, "sed -i s/\"DHCLIENT_SET_HOSTNAME=.*\"/'DHCLIENT_SET_HOSTNAME=\"yes\"'/g /etc/sysconfig/network/dhcp");
+ }
+
+ if (network_disk == 0) {
+ ifcfg = sformat("%1STARTMODE='onboot'\n", ifcfg);
+ }
+ else if (network_disk > 0) {
+ ifcfg = sformat("%1STARTMODE='nfsroot'\n", ifcfg);
+ }
+ }
- // for queth devices (s390)
- // bnc#578689 - YaST2 should not write the MAC address into ifcfg file
- if ((Arch::s390()) && (size(InstallInf["hwaddr"]:"")>0))
- network_configuration = sformat("%1LLADDR='%2'\n", network_configuration, InstallInf["hwaddr"]:"");
+ // wireless devices (bnc#223570)
+ if ( size(InstallInf["WESSID"]:"")>0 ) {
+ ifcfg = sformat("%1WIRELESS_ESSID='%2'\n", ifcfg, InstallInf["WESSID"]:"");
+
+ switch(InstallInf["WAuth"]:"") {
+ case "" : // "" means wpa-psk
+ case "psk" :
+ ifcfg = sformat("%1WIRELESS_WPA_PSK='%2'\n", ifcfg, InstallInf["WKey"]:"");
+ ifcfg = sformat("%1WIRELESS_AUTH_MODE='psk'\n", ifcfg);
+ break;
+ case "open" :
+ ifcfg = sformat("%1WIRELESS_AUTH_MODE='no-encryption'\n", ifcfg);
+ break;
+ case "wep_open" :
+ case "wep_restricted" :
+ string type="";
+ if (InstallInf["WkeyType"]:""=="password") type="h:";
+ else if (InstallInf["WkeyType"]:""=="ascii") type="s:";
+ ifcfg = sformat("%1WIRELESS_AUTH_MODE='%2'\n", ifcfg, (InstallInf["WAuth"]:""=="wep-open") ? "open" : "sharedkey");
+ ifcfg = sformat("%1WIRELESS_DEFAULT_KEY='0'\n", ifcfg);
+ ifcfg = sformat("%1WIRELESS_KEY_0='%2%3'\n", ifcfg, type, InstallInf["WKey"]:"");
+ ifcfg = sformat("%1WIRELESS_KEY_LENGTH='%2'\n", ifcfg, InstallInf["WKeyLen"]:"");
+ if (size(InstallInf["WKeyType"]:"")>0 && size(InstallInf["WKey"]:"")>0) {
+ ifcfg = sformat("%1WIRELESS_KEY_0='%2:%3'\n", ifcfg,
+ substring(InstallInf["WKeyType"]:"", 0, 1), InstallInf["WKey"]:"");
+ }
+ break;
+ }
+ }
+ // if available, write MTU
+ if (size(InstallInf["mtu"]:"")>0) {
+ ifcfg = sformat("%1MTU='%2'\n", ifcfg, InstallInf["mtu"]:"");
+ }
+ // for queth devices (s390)
+ // bnc#578689 - YaST2 should not write the MAC address into ifcfg file
+ if ((Arch::s390()) && (size(InstallInf["hwaddr"]:"")>0)) {
+ ifcfg = sformat("%1LLADDR='%2'\n", ifcfg, InstallInf["hwaddr"]:"");
+ }
// point to point interface
- if (size(InstallInf["remote_ip"]:"")>0)
- network_configuration = sformat("%1REMOTE_IPADDR='%2'\n", network_configuration, InstallInf["remote_ip"]:"");
+ if (size(InstallInf["remote_ip"]:"")>0) {
+ ifcfg = sformat("%1REMOTE_IPADDR='%2'\n", ifcfg, InstallInf["remote_ip"]:"");
+ }
- string ifcfg = sformat("ifcfg-%1", netdevice);
+ string new_netdevice = netdevice;
+ if (! LanUdevAuto::AllowUdevModify()) {
+ string cmd = sformat("biosdevname --policy=all_names -i %1", netdevice);
+ string out = String::FirstChunk(StdoutOf(cmd), "\n");
+ if (out != "") {
+ y2milestone ("biosdevname renames %1 to %2", netdevice, out);
+ new_netdevice = out;
+ }
+ }
+
+ string ifcfg_name = sformat("ifcfg-%1", new_netdevice);
- string hw_name = BuildDescription(NetworkInterfaces::device_type(netdevice), NetworkInterfaces::device_num(ifcfg), $["dev_name":netdevice], hardware);
+ string hw_name = BuildDescription(NetworkInterfaces::device_type(netdevice),
+ NetworkInterfaces::device_num(ifcfg_name),
+ $["dev_name":netdevice],
+ hardware);
// protect special characters, #305343
- if (size(hw_name)>0)
- network_configuration = sformat("%1NAME='%2'\n", network_configuration, String::Quote (hw_name));
+ if (size(hw_name)>0) {
+ ifcfg = sformat("%1NAME='%2'\n", ifcfg, String::Quote (hw_name));
+ }
- y2milestone("Network Configuration:\n%1\nifcfg file: %2", network_configuration, ifcfg);
+ y2milestone("Network Configuration:\n%1\nifcfg file: %2", ifcfg, ifcfg_name);
// write only if file doesn't exists
- string dev_file=sformat("/etc/sysconfig/network/%1", ifcfg);
- // string dev_file=sformat("/tmp/%1", ifcfg);
+ string dev_file=sformat("/etc/sysconfig/network/%1", ifcfg_name);
- SCR::Write(.target.string, dev_file, network_configuration);
- y2milestone("ifcfg file: %1", dev_file);
+ SCR::Write(.target.string, dev_file, ifcfg);
+ y2milestone("ifcfg file: %1", dev_file);
}
/*
Modified: trunk/network/src/installation/inst_hostname.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/installation/inst_hostname.ycp?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/src/installation/inst_hostname.ycp (original)
+++ trunk/network/src/installation/inst_hostname.ycp Fri Jul 22 18:09:02 2011
@@ -14,6 +14,7 @@
import "Arch";
import "DNS";
import "GetInstArgs";
+import "Host";
import "NetworkConfig";
import "String";
import "Wizard";
@@ -57,6 +58,10 @@
if (ret == `next)
{
+ Host::Read();
+ Host::ResolveHostnameToStaticIPs();
+ Host::Write();
+
// do not let Lan override us, #152218
DNS::proposal_valid = true;
Modified: trunk/network/src/lan/address.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/address.ycp?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/src/lan/address.ycp (original)
+++ trunk/network/src/lan/address.ycp Fri Jul 22 18:09:02 2011
@@ -125,9 +125,6 @@
*/
void InitVLANSlave(string key)
{
- settings["ETHERDEVICE"] = NetworkInterfaces::Current["ETHERDEVICE"]:"";
- settings["VLAN_ID"] = tointeger(NetworkInterfaces::Current["VLAN_ID"]:"0");
-
list items = [];
// unconfigured devices
foreach(integer i, map a, (map)LanItems::Items,{
@@ -150,16 +147,10 @@
symbol HandleVLANSlave(string key, map event){
- if (event["EventReason"]:""=="ValueChanged"){
- string configname = sformat("%1.%2", UI::QueryWidget(`id(`vlan_eth), `Value), UI::QueryWidget(`id(`vlan_id), `Value));
- NetworkInterfaces::Name = configname;
- LanItems::Items[LanItems::current, "ifcfg"]= configname;
- UI::ChangeWidget(`id("IFCFGID"), `Value, configname);
- }
- return nil;
+ // formerly tried to edit ifcfg name. bad idea, surrounding code not ready
+ return nil;
}
-
/**
* Default function to store the value of ETHERDEVICE devices box.
* @param key id of the widget
@@ -945,6 +936,11 @@
// TODO: dynamic for dummy. or add dummy from outside?
boolean no_dhcp = is_ptp || settings["IFCFGTYPE"]:"" == "dummy" || LanItems::alias != "";
+ if (LanItems::type == "vlan") {
+ settings["ETHERDEVICE"] = LanItems::vlan_etherdevice;
+ settings["VLAN_ID"] = tointeger(LanItems::vlan_id);
+ }
+
if (contains(["tun", "tap"], LanItems::type))
{
settings = $[
@@ -1233,7 +1229,10 @@
// address tab
if(LanItems::operation == `add) {
LanItems::device = NetworkInterfaces::device_num(ifcfgname);
- LanItems::type = NetworkInterfaces::device_type(ifcfgname);
+ LanItems::type = NetworkInterfaces::GetTypeFromIfcfg(settings);
+ if (LanItems::type == nil) {
+ LanItems::type = NetworkInterfaces::device_type(ifcfgname);
+ }
}
LanItems::bootproto = settings["BOOTPROTO"]:"";
@@ -1277,9 +1276,7 @@
if (LanItems::type == "vlan"){
LanItems::vlan_etherdevice = settings["ETHERDEVICE"]:"";
-y2internal("%1, %2", LanItems::vlan_id, (integer)settings["VLAN_ID"]:0);
LanItems::vlan_id = tostring((integer)settings["VLAN_ID"]:0);
-y2internal("%1", LanItems::vlan_id);
} else if (LanItems::type == "br"){
LanItems::bridge_ports = settings["BRIDGE_PORTS"]:"";
} else if (contains(["tun", "tap"], LanItems::type)){
Modified: trunk/network/src/lan/hardware.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/hardware.ycp?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/src/lan/hardware.ycp (original)
+++ trunk/network/src/lan/hardware.ycp Fri Jul 22 18:09:02 2011
@@ -531,10 +531,9 @@
LanItems::startmode="auto";
}
if (LanItems::type=="vlan"){
- string vlanid=(string) UI::QueryWidget(`id(`num), `Value);
- NetworkInterfaces::Current["VLAN_ID"] = vlanid;
+ LanItems::vlan_id = (string) UI::QueryWidget(`id(`num), `Value);
}
- }
+}
string driver = (string) UI::QueryWidget(`modul, `Value);
LanItems::setDriver(driver);
Modified: trunk/network/src/modules/Host.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/modules/Host.ycp?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/src/modules/Host.ycp (original)
+++ trunk/network/src/modules/Host.ycp Fri Jul 22 18:09:02 2011
@@ -303,6 +303,27 @@
return summary;
}
+list<string> StaticIPs() {
+ NetworkInterfaces::Read ();
+ list<string> devs = NetworkInterfaces::Locate ("BOOTPROTO", "static");
+ devs = filter(string dev, devs, { return dev != "lo"; });
+ list<string> ips = maplist(string dev, devs, {
+ return NetworkInterfaces::GetValue(dev, "IPADDR");
+ });
+ y2milestone("ifcfgs: %1 IPs: %2", devs, ips);
+ return ips;
+}
+
+// if we have a static address,
+// make sure /etc/hosts resolves it to our, bnc#664929
+global void ResolveHostnameToStaticIPs() {
+ list<string> static_ips = StaticIPs();
+ if (size(static_ips) > 0) {// excluding lo
+ string fqhostname = Hostname::MergeFQ( DNS::hostname, DNS::domain);
+ Update(fqhostname, fqhostname, static_ips);
+ }
+}
+
/**
* Function which returns if the settings were modified
* @return boolean settings were modified
Modified: trunk/network/src/modules/Lan.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/modules/Lan.ycp?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/src/modules/Lan.ycp (original)
+++ trunk/network/src/modules/Lan.ycp Fri Jul 22 18:09:02 2011
@@ -431,8 +431,9 @@
if(Abort()) return false;
/* Progress step 3 - multiple devices may be present, really plural*/
ProgressNextStage(_("Writing device configuration..."));
- if (!Mode::autoinst())
+ if (!Mode::autoinst() && LanUdevAuto::AllowUdevModify()) {
LanItems::WriteUdevDriverRules();
+ }
NetworkInterfaces::Write("netcard");
// WriteDevices();
sleep(sl);
Modified: trunk/network/src/modules/LanItems.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/modules/LanItems.ycp?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/src/modules/LanItems.ycp (original)
+++ trunk/network/src/modules/LanItems.ycp Fri Jul 22 18:09:02 2011
@@ -473,119 +473,139 @@
list<string> overview=[];
list<string> links=[];
map startmode_descrs = $[
- // summary description of STARTMODE=auto
- "auto": _("Started automatically at boot"),
- // summary description of STARTMODE=auto
- "onboot": _("Started automatically at boot"),
- // summary description of STARTMODE=hotplug
- "hotplug": _("Started automatically at boot"),
- // summary description of STARTMODE=ifplugd
- "ifplugd": _("Started automatically on cable connection"),
- // summary description of STARTMODE=managed
- "managed": _("Managed by NetworkManager"),
- // summary description of STARTMODE=off
- "off" : _("Will not be started at all")
- ];
-
-
- foreach(integer key, (list<integer>)Map::Keys(Items), {
- string rich = "";
- string ip = _("Not configured");
- string descr = Items[key, "hwinfo", "name"]:"";
- type = Items[key, "hwinfo", "type"]:"";
- descr = CheckEmptyName (type, descr);
- list <string> bullets = [];
-
- if (hasAnyValue(Items[key, "ifcfg"]:"") ){
- NetworkInterfaces::Select(Items[key, "ifcfg"]:"");
- if (!hasAnyValue(type)) type = NetworkInterfaces::GetType(Items[key, "ifcfg"]:"");
- descr = BuildDescription(type, NetworkInterfaces::GetType(Items[key, "ifcfg"]:""), NetworkInterfaces::Current, [Items[key, "hwinfo"]:$[]]);
- string dev = NetworkInterfaces::Name; //NetworkInterfaces::device_name(type, NetworkInterfaces::Name);
- ip = DeviceProtocol(NetworkInterfaces::Current);
- string status = DeviceStatus(type, NetworkInterfaces::device_num(NetworkInterfaces::Name), NetworkInterfaces::Current);
-
-
- string startmode_descr = startmode_descrs[NetworkInterfaces::Current["STARTMODE"]:""]:_("Started manually");
-
- bullets = [
- sformat(_("Device Name: %1"), dev),
- startmode_descr,
- ];
- if (NetworkInterfaces::Current["STARTMODE"]:"" != "managed")
- {
- if (ip != "NONE")
- {
- string prefixlen = NetworkInterfaces::Current["PREFIXLEN"]:"";
- if (size(ip)>0){
- string descr = sformat("%1 %2", _("IP address assigned using"), ip);
- if (!issubstring(ip, "DHCP")) descr=(size(prefixlen)>0) ?
+ // summary description of STARTMODE=auto
+ "auto": _("Started automatically at boot"),
+ // summary description of STARTMODE=auto
+ "onboot": _("Started automatically at boot"),
+ // summary description of STARTMODE=hotplug
+ "hotplug": _("Started automatically at boot"),
+ // summary description of STARTMODE=ifplugd
+ "ifplugd": _("Started automatically on cable connection"),
+ // summary description of STARTMODE=managed
+ "managed": _("Managed by NetworkManager"),
+ // summary description of STARTMODE=off
+ "off" : _("Will not be started at all")
+ ];
+
+ foreach(integer key, (list<integer>)Map::Keys(Items), {
+ string rich = "";
+ string ip = _("Not configured");
+ string descr = Items[key, "hwinfo", "name"]:"";
+ type = Items[key, "hwinfo", "type"]:"";
+ descr = CheckEmptyName (type, descr);
+ list <string> bullets = [];
+
+ if (hasAnyValue(Items[key, "ifcfg"]:"") ){
+ NetworkInterfaces::Select(Items[key, "ifcfg"]:"");
+ if (!hasAnyValue(type)) type = NetworkInterfaces::GetType(Items[key, "ifcfg"]:"");
+ descr = BuildDescription(type, NetworkInterfaces::GetType(Items[key, "ifcfg"]:""), NetworkInterfaces::Current, [Items[key, "hwinfo"]:$[]]);
+ string dev = NetworkInterfaces::Name; //NetworkInterfaces::device_name(type, NetworkInterfaces::Name);
+ ip = DeviceProtocol(NetworkInterfaces::Current);
+ string status = DeviceStatus(type, NetworkInterfaces::device_num(NetworkInterfaces::Name), NetworkInterfaces::Current);
+
+ string startmode_descr = startmode_descrs[NetworkInterfaces::Current["STARTMODE"]:""]:_("Started manually");
+
+ bullets = [
+ sformat(_("Device Name: %1"), dev),
+ startmode_descr,
+ ];
+
+ if (NetworkInterfaces::Current["STARTMODE"]:"" != "managed") {
+ if (ip != "NONE") {
+ string prefixlen = NetworkInterfaces::Current["PREFIXLEN"]:"";
+ if (size(ip)>0) {
+ string descr = sformat("%1 %2", _("IP address assigned using"), ip);
+ if (!issubstring(ip, "DHCP"))
+ descr=(size(prefixlen)>0) ?
sformat(_("IP address: %1/%2"), ip, prefixlen) :
sformat(_("IP address: %1, subnet mask %2")
- , ip, NetworkInterfaces::Current["NETMASK"]:"");
- bullets = bullets + [ descr ];
- }
- }
- // build aliases overview
- if (size(NetworkInterfaces::Current["_aliases"]:$[])>0 && !NetworkService::IsManaged()){
- foreach(string key, map desc, (map >) NetworkInterfaces::Current["_aliases"]:$[], {
- string parameters = sformat("%1/%2", desc["IPADDR"]:"", desc["PREFIXLEN"]:"");
- bullets = add(bullets, sformat("%1 (%2)", desc["LABEL"]:"", parameters) );
- });
- }
- }
-
- if (type == "wlan" &&
- !(NetworkInterfaces::Current["WIRELESS_AUTH_MODE"]:"" != "open") &&
- !hasAnyValue(NetworkInterfaces::Current["WIRELESS_KEY_0"]:""))
- {
- // avoid colons
- dev = mergestring (splitstring (dev, ":"), "/");
- string href = "lan--wifi-encryption-" + dev;
- // interface summary: WiFi without encryption
- string warning = HTML::Colorize (_("Warning: no encryption is used."), "red");
- status = status + " " + warning + " " +
- // Hyperlink: Change the configuration of an interface
- Hyperlink (href, _("Change."));
- links = add (links, href);
- }
-
- overview = add(overview, Summary::Device(descr, status));
- } else
- overview = add(overview, Summary::Device(descr, Summary::NotConfigured()));
-
- string conn = HTML::Bold ( (Items[key, "hwinfo", "link"]:false == true)?"":sformat("(%1)", _("Not connected") ));
-
- if (size(Items[key, "hwinfo"]:$[])==0) conn = HTML::Bold(sformat("(%1)", _("No hwinfo")));
- string mac_dev = HTML::Bold ("MAC : ") + Items[key, "hwinfo", "mac"]:"" + "<br>";
- string bus_id = HTML::Bold ("BusID : ") + Items[key, "hwinfo", "busid"]:"" + "<br>";
- if (hasAnyValue(Items[key, "hwinfo", "mac"]:"")) rich = " " + conn + "<br>" + mac_dev;
- if (hasAnyValue(Items[key, "hwinfo", "busid"]:"")) rich = rich + bus_id;
- rich = HTML::Bold ( descr ) + rich;
-
- if (!hasAnyValue(Items[key, "hwinfo", "dev_name"]:"") && size(Items[key, "hwinfo"]:$[])>0 && !Arch::s390())
- rich = rich + _("<p>Unable to configure the network card because the kernel device (eth0, wlan0) is not present. This is mostly caused by missing firmware (for wlan devices). See dmesg output for details.</p>");
- else if (hasAnyValue(Items[key, "ifcfg"]:"") ) rich = rich + HTML::List (bullets);
- else {
- rich = rich + _("<p>The device is not configured. Press <b>Edit</b>
+ , ip, NetworkInterfaces::Current["NETMASK"]:"");
+ bullets = bullets + [ descr ];
+ }
+ }
+ // build aliases overview
+ if (size(NetworkInterfaces::Current["_aliases"]:$[])>0 && !NetworkService::IsManaged()){
+ foreach(string key, map desc, (map >) NetworkInterfaces::Current["_aliases"]:$[], {
+ string parameters = sformat("%1/%2", desc["IPADDR"]:"", desc["PREFIXLEN"]:"");
+ bullets = add(bullets, sformat("%1 (%2)", desc["LABEL"]:"", parameters) );
+ });
+ }
+ }
+
+ if (type == "wlan" &&
+ !(NetworkInterfaces::Current["WIRELESS_AUTH_MODE"]:"" != "open") &&
+ !hasAnyValue(NetworkInterfaces::Current["WIRELESS_KEY_0"]:"")) {
+ // avoid colons
+ dev = mergestring (splitstring (dev, ":"), "/");
+ string href = "lan--wifi-encryption-" + dev;
+ // interface summary: WiFi without encryption
+ string warning = HTML::Colorize (_("Warning: no encryption is used."), "red");
+ status = status + " " + warning + " " +
+ // Hyperlink: Change the configuration of an interface
+ Hyperlink (href, _("Change."));
+ links = add (links, href);
+ }
+
+ overview = add(overview, Summary::Device(descr, status));
+ }
+ else {
+ overview = add(overview, Summary::Device(descr, Summary::NotConfigured()));
+ }
+
+ string conn = HTML::Bold ( (Items[key, "hwinfo", "link"]:false == true)?"":sformat("(%1)", _("Not connected") ));
+
+ if (size(Items[key, "hwinfo"]:$[])==0) {
+ conn = HTML::Bold(sformat("(%1)", _("No hwinfo")));
+ }
+
+ string mac_dev = HTML::Bold ("MAC : ") + Items[key, "hwinfo", "mac"]:"" + "<br>";
+ string bus_id = HTML::Bold ("BusID : ") + Items[key, "hwinfo", "busid"]:"" + "<br>";
+
+ if (hasAnyValue(Items[key, "hwinfo", "mac"]:"")) {
+ rich = rich + " " + conn + "<br>";
+ rich = rich + mac_dev;
+ }
+ if (hasAnyValue(Items[key, "hwinfo", "busid"]:"")) {
+ rich = rich + bus_id;
+ }
+ // display it only if we need it, don't duplicate "dev" above
+ if (hasAnyValue(Items[key, "hwinfo", "dev_name"]:"") &&
+ ! hasAnyValue(Items[key, "ifcfg"]:"")) {
+ string dev_name = sformat(_("Device Name: %1"), Items[key, "hwinfo", "dev_name"]:"" );
+ string dev_name_r = HTML::Bold(dev_name) + "<br>";
+ rich = rich + dev_name_r;
+ }
+
+ rich = HTML::Bold ( descr ) + rich;
+
+ if (!hasAnyValue(Items[key, "hwinfo", "dev_name"]:"") && size(Items[key, "hwinfo"]:$[])>0 && !Arch::s390()) {
+ rich = rich + _("<p>Unable to configure the network card because the kernel device (eth0, wlan0) is not present. This is mostly caused by missing firmware (for wlan devices). See dmesg output for details.</p>");
+ }
+ else if (hasAnyValue(Items[key, "ifcfg"]:"") ) {
+ rich = rich + HTML::List (bullets);
+ }
+ else {
+ rich = rich + _("<p>The device is not configured. Press <b>Edit</b>
to configure.</p>
");
- integer curr=current;
- current=key;
- if(needFirmwareCurrentItem()){
- string fw = GetFirmwareForCurrentItem();
- rich = rich+ sformat("%1 : %2",
- _("Needed firmware"), (fw!="") ? fw : _("unknown"));
- }
- current=curr;
- }
-
- Items[key, "table_descr"] = $[
- "rich_descr" : rich,
- "table_descr": [descr, ip]
- ];
- });
- return [ Summary::DevicesList(overview), links ];
+ integer curr = current;
+ current = key;
+ if (needFirmwareCurrentItem()) {
+ string fw = GetFirmwareForCurrentItem();
+ rich = rich+ sformat("%1 : %2",
+ _("Needed firmware"),
+ (fw!="") ? fw : _("unknown"));
+ }
+ current=curr;
+ }
+
+ Items[key, "table_descr"] = $[
+ "rich_descr" : rich,
+ "table_descr": [descr, ip]
+ ];
+ });
+ return [ Summary::DevicesList(overview), links ];
}
@@ -833,7 +853,8 @@
usercontrol = GetDeviceVar (devmap, defaults, "USERCONTROL") == "yes";
description = GetDeviceVar (devmap, defaults, "NAME");
bond_option = GetDeviceVar(devmap, defaults, "BONDING_MODULE_OPTS");
- vlan_id = GetDeviceVar(devmap, defaults, "VLAN_ID");
+ vlan_etherdevice = GetDeviceVar(devmap, defaults, "ETHERDEVICE");
+ vlan_id = GetDeviceVar(devmap, defaults, "VLAN_ID"); // FIXME, remember that it can be implied from the name. probably
bond_slaves=[];
foreach(any key, any value, devmap,
@@ -927,7 +948,7 @@
"WIRELESS_FREQUENCY": "",
"WIRELESS_BITRATE": "auto",
"WIRELESS_AP": "",
- "WIRELESS_POWER": "yes",
+ "WIRELESS_POWER": "",
"PORTNAME": "",
// aliases = devmap["_aliases"]:$[]; // ?
"WIRELESS_EAP_MODE": "",
@@ -1063,11 +1084,6 @@
newdev["BOOTPROTO"] = bootproto;
}
newdev["NAME"] = description;
- // L3: bnc#585458
-// if (!issubstring(Items[current, "ifcfg"]:"", type)) newdev["INTERFACETYPE"]=type;
- // exception for VLAN
- // because of ethX.Y
-// if (deletechars(Items[current, "ifcfg"]:"", "0123456789")!=type && type!="vlan") newdev["INTERFACETYPE"]=type;
if(hotplug == "pcmcia") newdev["DHCLIENT_SET_DOWN_LINK"] = "yes";
@@ -1161,6 +1177,14 @@
"TUNNEL_SET_GROUP" : tunnel_set_group
];
}
+
+ // L3: bnc#585458
+ // FIXME: INTERFACETYPE confuses sysconfig, bnc#458412
+ // Only test when newdev has enough info for GetTypeFromIfcfg to work.
+ if (NetworkInterfaces::GetTypeFromIfcfg(newdev) != type) {
+ newdev["INTERFACETYPE"]=type;
+ }
+
NetworkInterfaces::Name = Items[current, "ifcfg"]:"";
NetworkInterfaces::Current = newdev;
y2internal("%1", newdev);
Modified: trunk/network/src/modules/LanUdevAuto.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/modules/LanUdevAuto.ycp?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/src/modules/LanUdevAuto.ycp (original)
+++ trunk/network/src/modules/LanUdevAuto.ycp Fri Jul 22 18:09:02 2011
@@ -12,6 +12,7 @@
{
module "LanUdevAuto";
import "LanItems";
+ import "Map";
include "network/routines.ycp";
textdomain "network";
@@ -20,6 +21,42 @@
list<map> s390_devices=[];
list <map> hardware=nil;
+/**
+ * @return parameter from /etc/install.inf or nil
+ * @param name parameter name, case sensitive
+ */
+string InstallInfParameter(string name) {
+ path p = add(.etc.install_inf, name);
+ return (string) SCR::Read(p);
+}
+
+/**
+ * @return parameter from the kernel(boot) command line or nil
+ * @param name parameter name, case sensitive
+ */
+string KernelCmdlineParameter(string name) {
+ string cmdline = InstallInfParameter("Cmdline");
+ map cmdmap = Map::FromString(cmdline); // handles nil too
+ return (string) cmdmap[name]:nil;
+}
+
+/**
+ * @return installation parameter or nil
+ * @param name parameter name, case sensitive
+ */
+string InstallationParameter(string name) {
+ string value = InstallInfParameter(name);
+ if (value == nil) {
+ value = KernelCmdlineParameter(name);
+ }
+ return value;
+}
+
+// FATE#311332
+global boolean AllowUdevModify() {
+ return InstallationParameter("biosdevname") != "1";
+}
+
global string getDeviceName(string oldname){
string newname=oldname;
if (hardware==nil) hardware=ReadHardware("netcard");
@@ -117,8 +154,10 @@
});
if (size(rules)>0){
y2milestone("Writing AY udev rules for network (will replace original rules from 1st stage)");
- SCR::Write(.udev_persistent.rules_comment, comment);
- SCR::Write(.udev_persistent.rules, rules);
+ if (AllowUdevModify()){
+ SCR::Write(.udev_persistent.rules_comment, comment);
+ SCR::Write(.udev_persistent.rules, rules);
+ }
} else
y2milestone("No udev rules defined by AY, nothing to write (keep original file)");
if (Arch::s390()){
Modified: trunk/network/yast2-network.spec.in
URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/yast2-network.spec.in?rev=64967&r1=64966&r2=64967&view=diff
==============================================================================
--- trunk/network/yast2-network.spec.in (original)
+++ trunk/network/yast2-network.spec.in Fri Jul 22 18:09:02 2011
@@ -10,9 +10,10 @@
BuildRequires: yast2-country
BuildRequires: yast2-installation >= 2.15.27
-# NetworkStorage: adapt functions needed for iBFT (bnc#551380)
-BuildRequires: yast2 >= 2.19.3
-Requires: yast2 >= 2.19.3
+# NetworkInterfaces::GetTypeFromIfcfg (bnc#572747)
+BuildRequires: yast2 >= 2.21.6
+Requires: yast2 >= 2.21.6
+
#netconfig (FaTE #303618)
Requires: sysconfig >= 0.71.2
#GetLanguageCountry
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org