Skip to content

Commit

Permalink
Merge pull request #79 from mchf/Code-11-SP2
Browse files Browse the repository at this point in the history
Ported fixes from SP3
  • Loading branch information
mchf committed Apr 25, 2013
2 parents 6f3a93b + 59212a8 commit 90ae89d
Show file tree
Hide file tree
Showing 12 changed files with 268 additions and 80 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.17.182.7
2.17.182.8
13 changes: 13 additions & 0 deletions package/yast2-network.changes
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
-------------------------------------------------------------------
Wed Apr 10 09:13:30 UTC 2013 - mfilka@suse.com

- bnc#813835, bnc#817006
- Crash when attempting to edit unconfigured interface.

-------------------------------------------------------------------
Tue Apr 2 07:06:49 UTC 2013 - mfilka@suse.com

- bnc#719881
- S390: only L2 capable devices can be enslaved into bond.
- 2.17.182.8

-------------------------------------------------------------------
Wed Mar 20 12:42:18 UTC 2013 - mfilka@suse.com

Expand Down
2 changes: 1 addition & 1 deletion src/clients/lan_proposal.ycp
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ else if(func == "AskUser") {
if (hasAnyValue(dev)){
foreach(integer row, any value, LanItems::Items,{
LanItems::current = row;
if (LanItems::IsItemConfigured()){
if (LanItems::IsCurrentConfigured()){
if (issubstring(dev, LanItems::getCurrentItem()["ifcfg"]:"")) {
LanItems::SetItem();
break;
Expand Down
2 changes: 1 addition & 1 deletion src/lan/YaPI/NETWORK.pm
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ sub Read {
my %interfaces = ();
foreach my $devnum (keys %{LanItems->Items}){
LanItems->current($devnum);
if (LanItems->IsItemConfigured()){
if (LanItems->IsCurrentConfigured()){
LanItems->SetItem();
my %configuration = (
'startmode' => LanItems->startmode ne ''? LanItems->startmode: 'manual',
Expand Down
40 changes: 1 addition & 39 deletions src/lan/address.ycp
Original file line number Diff line number Diff line change
Expand Up @@ -153,32 +153,6 @@ void StoreVLANSlave(string key, map event)
settings["VLAN_ID"] = UI::QueryWidget (`id(`vlan_id), `Value);
}

/**
* Searches map of known devices and decides if a device of given name and type can be enslaved in a bond device
*
* @param devtype device type. See NetworkInterfaces::CardRegex for known categories.
* @param devname particular device name (e.g. eth0)
*/
boolean IsBondable( string devtype, string devname)
{
boolean ret = true;
map<string, any> ifcfg = NetworkInterfaces::FilterDevices("netcard")[ devtype, devname]:$[];

// filter the eth devices (BOOTPROTO=none)
// don't care about STARTMODE (see bnc#652987c6)
ret = ret && ifcfg[ "BOOTPROTO"]:"" == "none";

if( Arch::s390() )
{
map<string, any> s390_config = s390_ReadQethConfig( devname);

// only devices with L2 support can be enslaved in bond. See bnc#719881
ret = ret && s390_config[ "QETH_LAYER2"]:"no" == "yes";
}

return ret;
}

/**
* Default function to init the value of slave devices box.
* @param key id of the widget
Expand All @@ -190,19 +164,7 @@ void InitSlave(string key)

settings["BONDOPTION"] = LanItems::bond_option;

list items = createUnconfigured(settings["SLAVES"]:[]);
map<string, any> configurations = NetworkInterfaces::FilterDevices("netcard");
foreach(string devtype, splitstring(NetworkInterfaces::CardRegex["netcard"]:"", "|"),
{
foreach(string devname, (list<string>) Map::Keys(configurations[devtype]:$[]),
{
if( IsBondable( devtype, devname) )
{
items = add (items, `item(`id(devname), sformat("%1 - %2", devname, configurations[devtype, devname, "NAME"]:""), contains(settings["SLAVES"]:[], devname)) );
}

});
});
list items = CreateSlaveItems( LanItems::GetBondableInterfaces(), LanItems::bond_slaves);

UI::ChangeWidget(`id(key), `Items, items);
y2debug("slaves %1", settings["SLAVES"]:[]);
Expand Down
20 changes: 13 additions & 7 deletions src/lan/complex.ycp
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,21 @@ once you have installed the firmware.")));
return true;
}

/**
* Returns true if the device can be used (means handled as normal linux device)
* or false otherwise (it is used mainly at s390 based systems where a special
* handling is needed to run linux device emulation)
*/
define boolean DeviceReady( string devname)
{
return !Arch::s390() || s390_DriverLoaded( devname);
}


define void initIPv6 (string key) {
UI::ChangeWidget (`id (`ipv6), `Value, Lan::ipv6 ? true : false);
}


define symbol handleIPv6( string key, map event ) {
if (event["EventReason"]:""=="ValueChanged") Lan::SetIPv6((boolean)UI::QueryWidget (`id (`ipv6), `Value));
return nil;
Expand Down Expand Up @@ -211,7 +220,7 @@ void enableDisableButtons(){
LanItems::current = (integer)UI::QueryWidget (`id (`_hw_items), `CurrentItem);

UI::ChangeWidget(`_hw_sum, `Value,LanItems::GetItemDescription());
if (!LanItems::IsItemConfigured()) // unconfigured
if (!LanItems::IsCurrentConfigured()) // unconfigured
UI::ChangeWidget(`id(`delete), `Enabled, false);
else UI::ChangeWidget(`id(`delete), `Enabled, true);

Expand Down Expand Up @@ -314,8 +323,6 @@ void initOverview (string key) ``{
y2milestone("LanItems %1", LanItems::Items);
}



symbol handleOverview( string key, map event ) {

if (!disableItemsIfNM([`_hw_items, `_hw_sum, `add, `edit, `delete], false))
Expand All @@ -330,7 +337,7 @@ symbol handleOverview( string key, map event ) {
Lan::Add();
return `add;
case `edit:
if( LanItems::IsItemConfigured())
if( LanItems::IsCurrentConfigured())
{
LanItems::SetItem();

Expand All @@ -356,7 +363,7 @@ the interface will no longer be managed by NetworkManager.
if (! AddInterface ())
break;

if( !s390_DeviceReady( LanItems::getCurrentItem()[ "hwinfo", "dev_name"]:"") )
if( !DeviceReady( LanItems::getCurrentItem()[ "hwinfo", "dev_name"]:"") )
{
return `init_s390;
}
Expand All @@ -365,7 +372,6 @@ the interface will no longer be managed by NetworkManager.
return `edit;

case `delete:
// if (!LanItems::IsItemConfigured()) return nil;

string pop = sformat(_("All additional addresses belonging to the interface %1
will be deleted as well.
Expand Down
15 changes: 5 additions & 10 deletions src/lan/s390.ycp
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,15 @@ const string sys_dir = "/sys/class/net";
*/
define boolean s390_DriverLoaded( string devname)
{
if( !Arch::s390())
return false;

if( IsEmptyString( devname))
return false;

return FileUtils::IsDirectory( sformat( "%1/%2", sys_dir, devname)) == true;
}

/**
* Returns true if running at s390 architecture and linux net device emulation was started successfully
*/
define boolean s390_DeviceReady( string devname)
{
return Arch::s390() && s390_DriverLoaded( devname);
}

/**
* Reads particular qeth attribute and returns its value as a string.
*
Expand All @@ -40,7 +35,7 @@ define boolean s390_DeviceReady( string devname)
*/
define string s390_ReadQethAttribute( string devname, string attrib)
{
if( !s390_DeviceReady( devname))
if( !s390_DriverLoaded( devname))
return nil;

string result = (string) SCR::Read( .target.string, sformat( "%1/%2/device/%3", sys_dir, devname, attrib));
Expand All @@ -66,7 +61,7 @@ define string s390_ReadQethAttribute( string devname, string attrib)
*/
define map<string, any> s390_ReadQethConfig( string devname)
{
if( !s390_DeviceReady( devname))
if( !s390_DriverLoaded( devname))
return $[];

map<string, any> result = $[];
Expand Down
8 changes: 4 additions & 4 deletions src/modules/Lan.ycp
Original file line number Diff line number Diff line change
Expand Up @@ -868,7 +868,7 @@ define void ProposeNMInterfaces () {
foreach (integer number, any lanitem, LanItems::Items, {
if (hasAnyValue(((map)lanitem)["hwinfo", "dev_name"]:"")) {
LanItems::current = number;
if (!LanItems::IsItemConfigured()){
if (!LanItems::IsCurrentConfigured()){
y2milestone("Nothing already configured start proposing %1 (NM)", LanItems::getCurrentItem());
LanItems::ProposeItem();
}
Expand Down Expand Up @@ -925,7 +925,7 @@ void ProposeVirtualized() {
LanItems::current = number;
boolean link = LanItems::getCurrentItem()["hwinfo", "link"]:false == true;
if (!link) y2warning("item number %1 has link:false detected", number);
if (!LanItems::IsItemConfigured() && link && !contains(skipped, LanItems::getCurrentItem()["hwinfo", "dev_name"]:"")){
if (!LanItems::IsCurrentConfigured() && link && !contains(skipped, LanItems::getCurrentItem()["hwinfo", "dev_name"]:"")){
y2milestone("Nothing already configured - start proposing");
LanItems::ProposeItem();
}
Expand Down Expand Up @@ -1026,7 +1026,7 @@ global define boolean ProposeInterfaces () {
boolean configured=false;
foreach (integer number, any lanitem, LanItems::Items, {
LanItems::current = number;
if (LanItems::IsItemConfigured()){
if (LanItems::IsCurrentConfigured()){
y2milestone("Something already configured: don't propose.");
configured = true;
break;
Expand All @@ -1043,7 +1043,7 @@ global define boolean ProposeInterfaces () {
y2warning("Will not propose wlan interfaces");
else{
if (!link) y2warning("item number %1 has link:false detected", number);
else if (!LanItems::IsItemConfigured() && link){
else if (!LanItems::IsCurrentConfigured() && link){
y2milestone("Nothing already configured - start proposing");
LanItems::ProposeItem();
break;
Expand Down
Loading

0 comments on commit 90ae89d

Please sign in to comment.