Hello community,

here is the log from the commit of package yast2-fcoe-client for 
openSUSE:Factory checked in at 2012-01-25 11:09:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-fcoe-client (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-fcoe-client.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-fcoe-client", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-fcoe-client/yast2-fcoe-client.changes      
2012-01-09 21:44:30.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-fcoe-client.new/yast2-fcoe-client.changes 
2012-01-25 11:09:42.000000000 +0100
@@ -1,0 +2,11 @@
+Thu Jan 19 09:35:06 CET 2012 - [email protected]
+
+- Merge SP2 branch to trunk: use improved 'fipvlan' (bnc #728103),
+  set DCB_REQUIRED to "no" for Broadcom devices (bnc #728658),
+  enable service start of 'lldpad' before enabling 'fcoe',
+  don't overwrite BOOTPROTO for underlying interface,
+  set default for AUTO_VLAN to "yes" (bnc #724563),
+  Call 'fipvlan' with option --link-up (bnc #737683)
+- V 2.22.2
+
+-------------------------------------------------------------------

Old:
----
  yast2-fcoe-client-2.22.1.tar.bz2

New:
----
  yast2-fcoe-client-2.22.2.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-fcoe-client.spec ++++++
--- /var/tmp/diff_new_pack.fiqXYQ/_old  2012-01-25 11:09:44.000000000 +0100
+++ /var/tmp/diff_new_pack.fiqXYQ/_new  2012-01-25 11:09:44.000000000 +0100
@@ -15,25 +15,23 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
+
+
 Name:           yast2-fcoe-client
-Version:        2.22.1
+Version:        2.22.2
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Source0:        yast2-fcoe-client-%{version}.tar.bz2
 
+Group:          System/YaST
+License:        GPL-2.0
 Requires:       yast2 >= 2.21.22
-BuildRequires:  perl-XML-Writer
-BuildRequires:  update-desktop-files
-BuildRequires:  yast2
-BuildRequires:  yast2-devtools
-BuildRequires:  yast2-testsuite
+BuildRequires:  perl-XML-Writer update-desktop-files yast2 yast2-devtools 
yast2-testsuite
 
 BuildArch:      noarch
 
 Summary:        YaST2 - Configuration of Fibre Channel over Ethernet
-License:        GPL-2.0
-Group:          System/YaST
 
 %description
 This package contains the YaST2 component for the Fibre Channel over

++++++ yast2-fcoe-client-2.22.1.tar.bz2 -> yast2-fcoe-client-2.22.2.tar.bz2 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/VERSION 
new/yast2-fcoe-client-2.22.2/VERSION
--- old/yast2-fcoe-client-2.22.1/VERSION        2011-12-21 14:34:52.000000000 
+0100
+++ new/yast2-fcoe-client-2.22.2/VERSION        2012-01-19 09:49:35.000000000 
+0100
@@ -1 +1 @@
-2.22.1
+2.22.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/configure 
new/yast2-fcoe-client-2.22.2/configure
--- old/yast2-fcoe-client-2.22.1/configure      2011-12-21 14:35:45.000000000 
+0100
+++ new/yast2-fcoe-client-2.22.2/configure      2012-01-24 11:55:03.000000000 
+0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for yast2-fcoe-client 2.22.1.
+# Generated by GNU Autoconf 2.68 for yast2-fcoe-client 2.22.2.
 #
 # Report bugs to <http://bugs.opensuse.org/>.
 #
@@ -559,8 +559,8 @@
 # Identity of this package.
 PACKAGE_NAME='yast2-fcoe-client'
 PACKAGE_TARNAME='yast2-fcoe-client'
-PACKAGE_VERSION='2.22.1'
-PACKAGE_STRING='yast2-fcoe-client 2.22.1'
+PACKAGE_VERSION='2.22.2'
+PACKAGE_STRING='yast2-fcoe-client 2.22.2'
 PACKAGE_BUGREPORT='http://bugs.opensuse.org/'
 PACKAGE_URL=''
 
@@ -1229,7 +1229,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures yast2-fcoe-client 2.22.1 to adapt to many kinds of 
systems.
+\`configure' configures yast2-fcoe-client 2.22.2 to adapt to many kinds of 
systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1301,7 +1301,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of yast2-fcoe-client 2.22.1:";;
+     short | recursive ) echo "Configuration of yast2-fcoe-client 2.22.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1381,7 +1381,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-yast2-fcoe-client configure 2.22.1
+yast2-fcoe-client configure 2.22.2
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1398,7 +1398,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by yast2-fcoe-client $as_me 2.22.1, which was
+It was created by yast2-fcoe-client $as_me 2.22.2, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2328,7 +2328,7 @@
 
 # Define the identity of the package.
  PACKAGE='yast2-fcoe-client'
- VERSION='2.22.1'
+ VERSION='2.22.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2450,7 +2450,7 @@
 
 
 
-VERSION="2.22.1"
+VERSION="2.22.2"
 RPMNAME="yast2-fcoe-client"
 MAINTAINER="Gabriele Mohr <[email protected]>"
 
@@ -3380,7 +3380,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by yast2-fcoe-client $as_me 2.22.1, which was
+This file was extended by yast2-fcoe-client $as_me 2.22.2, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -3433,7 +3433,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-yast2-fcoe-client config.status 2.22.1
+yast2-fcoe-client config.status 2.22.2
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/configure.in 
new/yast2-fcoe-client-2.22.2/configure.in
--- old/yast2-fcoe-client-2.22.1/configure.in   2011-12-21 14:35:42.000000000 
+0100
+++ new/yast2-fcoe-client-2.22.2/configure.in   2012-01-24 11:54:58.000000000 
+0100
@@ -3,7 +3,7 @@
 dnl -- This file is generated by y2autoconf 2.21.2 - DO NOT EDIT! --
 dnl    (edit configure.in.in instead)
 
-AC_INIT(yast2-fcoe-client, 2.22.1, http://bugs.opensuse.org/, 
yast2-fcoe-client)
+AC_INIT(yast2-fcoe-client, 2.22.2, http://bugs.opensuse.org/, 
yast2-fcoe-client)
 dnl Check for presence of file 'RPMNAME'
 AC_CONFIG_SRCDIR([RPMNAME])
 
@@ -18,7 +18,7 @@
 AM_INIT_AUTOMAKE(tar-ustar -Wno-portability)
 
 dnl Important YaST2 variables
-VERSION="2.22.1"
+VERSION="2.22.2"
 RPMNAME="yast2-fcoe-client"
 MAINTAINER="Gabriele Mohr <[email protected]>"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/FcoeClient.ycp 
new/yast2-fcoe-client-2.22.2/src/FcoeClient.ycp
--- old/yast2-fcoe-client-2.22.1/src/FcoeClient.ycp     2011-11-23 
11:40:47.000000000 +0100
+++ new/yast2-fcoe-client-2.22.2/src/FcoeClient.ycp     2012-01-18 
14:04:19.000000000 +0100
@@ -272,45 +272,55 @@
 }
 
 //
-// Check whether a VLAN interface is configured for FCoE on the switch (for 
given interface)
+// Check whether VLAN interfaces are configured for FCoE on the switch
 //
 // Params:
 // string      interface       network interface card, e.g. eth3
 // Return:
 // string      Vlan interface number, e.g. 200
 // Example:
-// # fipvlan eth3
+// # fipvlan eth0 eth1 eth2 eth3
 //Fibre Channel Forwarders Discovered
 //interface       | VLAN | FCF MAC          
 //------------------------------------------
-//eth3            | 200  | 00:0d:ec:a2:ef:00
+//eth0            | 200  | 00:0d:ec:a2:ef:00
+//eth3           | 200  | 00:0d:ec:a2:ef:01
 //
-global string GetVlanInterface( string interface )
+global map GetVlanInterfaces( list net_devices )
 {
-    string vlan_interface = "";
-    map output = $[];
+    // Add option -u (or --link_up): don't shut down interfaces
+    // to be able to detect DCB state afterwards (see bnc #737683)
+    string vlan_cmd = "LANG=POSIX fipvlan -u";
+    map vlan_info = $[];
     
-    // check whether there is a VLAN interface which is configured for FCoE
-    string cmd_fcoe = sformat( "LANG=POSIX fipvlan %1", interface );
-    y2milestone( "Executing command: %1", cmd_fcoe );
-    output = (map)SCR::Execute( .target.bash_output, cmd_fcoe );
+    foreach ( string dev, (list<string>)net_devices, {
+           vlan_cmd = vlan_cmd + " " + dev;
+       } );
+    
+    // call fipvlan command for all interfaces (saves time because is executed 
in parallel)
+    y2milestone( "Executing command: %1", vlan_cmd );
+    map output = (map)SCR::Execute( .target.bash_output, vlan_cmd );
     y2milestone( "Output: %1", output );
-
+ 
     list <string> lines = splitstring( output["stdout"]:"", "\n" );
-    foreach( string line, (list<string>)lines, {
-           // check whether there is a line for the given interface, e.g.
-           // eth3            | 200  | 00:0d:ec:a2:ef:00\n
-           // and extract name/number of VLAN channel.
-           if ( String::StartsWith( line, interface ) )
-           {
-               line = deletechars( line, " \t" );
-               vlan_interface = substring( line, findfirstof( line, "|" )+1,
-                                           findlastof( line, "|" 
)-findfirstof( line, "|")-1 );
-               y2milestone( "VLAN: %1", vlan_interface );
-           }
+
+    foreach ( string dev, (list<string>)net_devices, {
+           foreach( string line, (list<string>)lines, {
+                   // check whether there is a line for the given interface, 
e.g.
+                   // eth3            | 200  | 00:0d:ec:a2:ef:00\n
+                   // and extract name/number of VLAN channel.
+                   if ( String::StartsWith( line, dev ) )
+                   {
+                       line = deletechars( line, " \t" );
+                       string vlan_interface = substring( line, findfirstof( 
line, "|" )+1,
+                                                   findlastof( line, "|" 
)-findfirstof( line, "|")-1 );
+                       y2milestone( "Interface: %1 VLAN: %2", dev, 
vlan_interface );
+                       vlan_info = add( vlan_info, dev, vlan_interface );
+                   }
+               } );
        } );
-    
-    return vlan_interface;
+    y2milestone( "VLAN info: %1", vlan_info );
+    return vlan_info;
 }
 
 //
@@ -443,7 +453,7 @@
        if ( !FileUtils::Exists( file_name ) )
        {
            y2warning( "Cannot read config file for %1 in /etc/fcoe", 
vlan_device_name );
-           Popup::Warning( sformat(_("Cannot read config file for %1.
+           Report::Warning( sformat(_("Cannot read config file for %1.
 You may edit the settings and recreate the FCoE
 VLAN interface to get a valid configuration."), vlan_device_name) );
            return status_map;
@@ -517,20 +527,32 @@
 //
 global void AdjustStartStatus( )
 {
-    y2milestone( "Setting start of /etc/init.d/boot.fcoe to %1", 
service_start["fcoe"]:false );
-    if ( service_start["fcoe"]:false == true )
-       Service::Enable("boot.fcoe");   
-    else
-       Service::Disable("boot.fcoe");
+    boolean fcoe_start = service_start["fcoe"]:false;
+    boolean lldpad_start = service_start["lldpad"]:false;
+    y2milestone( "Setting start of /etc/init.d/boot.fcoe to %1", fcoe_start );
+    y2milestone( "Setting start of /etc/init.d/lldpad to %1", lldpad_start );
 
-    y2milestone( "Setting start of /etc/init.d/lldpad to %1", 
service_start["lldpad"]:false );
-    if ( service_start["lldpad"]:false == true )
-       Service::Enable("boot.lldpad"); 
-    else
+    if ( fcoe_start && lldpad_start )
+    {
+       Service::Enable("boot.lldpad");         // enable 'lldpad' first
+       Service::Enable("boot.fcoe");
+    }
+    else if ( !fcoe_start && lldpad_start )
+    {  
+       Service::Disable("boot.fcoe");
+       Service::Enable("boot.lldpad" );
+    }
+    else if ( !fcoe_start && !lldpad_start )
+    {
+       Service::Disable("boot.fcoe");          // disable 'fcoe' first
        Service::Disable("boot.lldpad");
-    
+    }
+    // fcoe_start && !lldpad_start isn't possible -> see complex.ycp 
StoreServicesDialog 
 }
 
+//
+// Set status of services
+// 
 global void SetStartStatus( string service, boolean status )
 {
     y2milestone( "Starting service %1 on boot: %2", service, status );
@@ -563,51 +585,56 @@
 // 
 global boolean ServiceStatus()
 {
+    boolean success = true;
+    
     // Loading of modules in Stage::initial() is not required (like in 
IsciClientLib.ycp, line 523 )
     // see /etc/init.d/fcoe, line 85 (modprobe fcoe > /dev/null 2>&1)
     boolean ret = true;
-                        
-    if ( Service::Status( "boot.fcoe" ) != 0 ) 
+
+    // first start lldpad
+    if ( Service::Status( "boot.lldpad" ) != 0 ) 
     {
-       boolean success = Service::Start( "boot.fcoe" );
+       success = Service::Start( "boot.lldpad" );
        if ( success )
        {
-           y2milestone( "FCoE started (/etc/init.d/boot.fcoe start)");
-           fcoe_started = true;;
+           y2milestone( "Lldpad started (/etc/init.d/boot.lldpad start)");
+           lldpad_started = true;
        }
        else
        {
-           y2error( "Cannot start FCoE service - '/etc/init.d/boot.fcoe start' 
failed" );
-           Popup::Error( "Cannot start FCoE service.
-'/etc/init.d/boot.fcoe start' failed" );
+           y2error( "Cannot start service lldpad - '/etc/init.d/boot.lldpad 
start' failed" );
+           Report::Error( "Cannot start service lldpad.
+'/etc/init.d/boot.lldpad start' failed" );
            ret = false;
        }
     }
     else
     {
-       y2milestone( "FCoE service is running");
+       y2milestone( "Lldpad service is running");
     }
 
-    if ( Service::Status( "boot.lldpad" ) != 0 ) 
+    if ( Service::Status( "boot.fcoe" ) != 0 )
     {
-       boolean success = Service::Start( "boot.lldpad" );
+       success = Service::Start( "boot.fcoe" );
+       
        if ( success )
        {
-           y2milestone( "Lldpad started (/etc/init.d/boot.lldpad start)");
-           lldpad_started = true;
+           y2milestone( "FCoE started (/etc/init.d/boot.fcoe start)");
+           fcoe_started = true;;
        }
        else
        {
-           y2error( "Cannot start service lldpad - '/etc/init.d/boot.lldpad 
start' failed" );
-           Popup::Error( "Cannot start service lldpad.
-'/etc/init.d/boot.lldpad start' failed" );
+           y2error( "Cannot start FCoE service - '/etc/init.d/boot.fcoe start' 
failed" );
+           Report::Error( "Cannot start FCoE service.
+'/etc/init.d/boot.fcoe start' failed" );
            ret = false;
        }
     }
     else
     {
-       y2milestone( "Lldpad service is running");
+       y2milestone( "FCoE service is running");
     }
+    
     return ret;
 }
 
@@ -625,46 +652,31 @@
     if ( netcards == [] || netcards == nil )
        return false;
 
+    list net_devices = [];
+    
     foreach ( map card, netcards, {
-           // get first state map from link list in resource map
-           map state_map = card["resource", "link", 0 ]:$[];
+           net_devices = add( net_devices, card["dev_name"]:"" ); 
+       });
 
-           if ( state_map["state"]:false == false )
-           {
-               // call 'ifconfig <interface> up' here because it's not yet
-               // clear who configures the interfaces (fipvlan command itself?)
-               // -> see bnc #705171 (this applies also to installed system)
-               string cmd_ifup = sformat( "ifconfig %1 up", 
card["dev_name"]:"" );
-               y2milestone( "Executing command: %1", cmd_ifup );
-               SCR::Execute( .target.bash_output, cmd_ifup );
-
-               // ifconfig up always returns 0 -> no error message can be made
-           }
-       } );
-    // call .probe.netcard again
-    netcards = (list<map>)SCR::Read(.probe.netcard);
+    // The 'fipvlan' command which is called in GetVlanInterfaces configures 
the interfaces itself,
+    // therefore it's not needed any longer to call 'ifconfig <if> up' here.
+    map vlan_info = GetVlanInterfaces( net_devices );
 
     foreach ( map card, netcards, {
-           map state_map = card["resource", "link", 0]:$[];
            map info_map = $[];
            map <string, string> status_map = $[];
-           string vlan_interface = "";
            string fcoe_vlan_interface = "";
            string dcb_capable = "";
+           string dcb_default = "";
            
-           // only call 'fipvlan <interface>' for configured interfaces
-           if ( state_map["state"]:false == true )
-           {
-               vlan_interface = GetVlanInterface( card["dev_name"]:"" );
-           }
-           if ( vlan_interface == "" )
+           if ( vlan_info[card["dev_name"]:""]:"" == "" )
            {
                // Interface down or FCoE not enabled on the switch - we can't 
do anything here.
                fcoe_vlan_interface = NOT_AVAILABLE;
            }
            else
            {
-               fcoe_vlan_interface = GetFcoeVlanInterface( 
card["dev_name"]:"", vlan_interface );
+               fcoe_vlan_interface = GetFcoeVlanInterface( 
card["dev_name"]:"", vlan_info[card["dev_name"]:""]:"" );
 
                if ( fcoe_vlan_interface != "" )
                {
@@ -682,7 +694,7 @@
                }
            }
            dcb_capable = DCBCapable( card["dev_name"]:"" );
-           
+
            info_map = add( info_map, "dev_name", card["dev_name"]:"");         
// network card, e.g. eth3
            if ( card["device"]:"" != "" )
            {
@@ -699,22 +711,34 @@
            {
                // default for FCoE enable is yes
                info_map = add( info_map, "fcoe_enable", 
status_map["FCOE_ENABLE"]:"yes" );     // FCOE_ENABLE
-                // default for DCB required is yes unless the interface is not 
dcb capable
-               info_map = add( info_map, "dcb_required", 
status_map["DCB_REQUIRED"]:( (dcb_capable=="yes")?"yes":"no" ) );
-               // default is to create /etc/fcoe/cfg-ethx file with VLAN 
device in name
-               // (e.g. cfg-eth3.200), set AUTO_VLAN to "no" then (see bnc 
#692403)
-               info_map = add( info_map, "auto_vlan", 
status_map["AUTO_VLAN"]:"no"); // AUTO_VLAN
+
+                // exception for Broadcom cards: DCB_REQUIRED should be set to 
"no" (bnc #728658)
+               if ( (card["driver"]:"" != "bnx2x") && (dcb_capable == "yes") )
+               {
+                   dcb_default = "yes";
+               }
+               else
+               {
+                   dcb_default = "no";
+               }
+               info_map = add( info_map, "dcb_required", 
status_map["DCB_REQUIRED"]:dcb_default );
+
+               // default is AUTO_VLAN="yes", create /etc/fcoe/cfg-ethx file 
without VLAN device in name
+               // (e.g. /etc/fcoe/cfg-eth3), see bnc #724563
+               info_map = add( info_map, "auto_vlan", 
status_map["AUTO_VLAN"]:"yes"); // AUTO_VLAN
            }
            info_map = add( info_map, "dcb_capable", dcb_capable ); // DCB 
capable
-           info_map = add( info_map, "vlan_interface", vlan_interface ); // 
VLAN interface, e.g. 200
+           info_map = add( info_map, "vlan_interface", 
vlan_info[card["dev_name"]:""]:"" ); // VLAN interface, e.g. 200
            info_map = add( info_map, "cfg_file", status_map["cfg_device"]:"" 
); // part of cfg-file name, e.g. eth3.200
 
            network_interfaces = add( network_interfaces, info_map );
        } );
+     
     // sort the list of interfaces (eth0, eth1, eth2...)
     network_interfaces = sort( map a, map b, network_interfaces, {
                    return ( a["dev_name"]:"" < b["dev_name"]:"" );
-               } );
+       } );
+
     return true;
 }
 
@@ -769,7 +793,7 @@
     boolean success = true;
 
     foreach ( map card, (list<map>)netcards, {
-           if ( card["fcoe_vlan"]:"" != FcoeClient::NOT_AVAILABLE &&           
        // FCoE VLAN is configured
+           if ( card["fcoe_vlan"]:"" != FcoeClient::NOT_AVAILABLE &&           
// FCoE VLAN is configured
                 card["fcoe_vlan"]:"" != FcoeClient::NOT_CONFIGURED  )
            {
                y2milestone( "Writing /etc/sysconfig/network/ifcfg-%1", 
card["fcoe_vlan"]:"" );
@@ -778,18 +802,29 @@
                SCR::Write(.network.value + card["fcoe_vlan"]:"" + "STARTMODE", 
"nfsroot" );
                SCR::Write(.network.value + card["fcoe_vlan"]:"" + 
"ETHERDEVICE", card["dev_name"]:"" );
                SCR::Write(.network.value + card["fcoe_vlan"]:"" + 
"USERCONTROL", "no" );
-               y2milestone( "Writing /etc/sysconfig/network/ifcfg-%1", 
card["dev_name"]:"" );
+
+               string ifcfg_file = sformat( "/etc/sysconfig/network/ifcfg-%1", 
card["dev_name"]:"" );
+               y2milestone( "Writing %1", ifcfg_file );
+               
                // write /etc/sysconfig/network/ifcfg-<interface> (underlying 
interface), e.g. ifcfg-eth3
-               SCR::Write(.network.value + card["dev_name"]:"" + "BOOTPROTO", 
"static" );
-               SCR::Write(.network.value + card["dev_name"]:"" + "STARTMODE", 
"nfsroot" );
-               SCR::Write(.network.value + card["dev_name"]:"" + "NAME", 
card["device"]:"" );
+               if ( !FileUtils::Exists(ifcfg_file) )
+               {
+                   SCR::Write(.network.value + card["dev_name"]:"" + 
"BOOTPROTO", "static" );
+                   SCR::Write(.network.value + card["dev_name"]:"" + 
"STARTMODE", "nfsroot" );
+                   SCR::Write(.network.value + card["dev_name"]:"" + "NAME", 
card["device"]:"" );
+               }
+               else
+               {
+                   // don't overwrite BOOTPROTO !!!
+                   SCR::Write(.network.value + card["dev_name"]:"" + 
"STARTMODE", "nfsroot" );
+               }
            }
        } );
     // This is very important- it flushes the cache, and stores the 
configuration on the disk
     success = SCR::Write( .network, nil );
     if ( !success )
     {
-       y2error( "Error writing /etc/sysconfig/network/ifcfg-<fcoe-interface>" 
);
+       y2error( "Error writing /etc/sysconfig/network/ifcfg-files" );
     }
     return success;
 }
@@ -894,7 +929,7 @@
                                         /* Progress stage 3/3 */
                                         _("Detect network cards"),
                                         /* Progress stage 4/4 */
-                                        _("Read /etc/fcoe/config")
+                                        _("Read /etc/fcoe/config" )
                                         ], [
                                             /* Progress step 1/3 */
                                             _("Checking for installed 
packages..."),
@@ -903,7 +938,7 @@
                                             /* Progress step 3/3 */
                                             _("Detecting network cards..."),
                                             /* Progress step 4/4 */
-                                            _("Reading /etc/fcoe/config"),
+                                            _("Reading /etc/fcoe/config" ),
                                             /* Progress finished */
                                             _("Finished")
                                             ],
@@ -1020,8 +1055,7 @@
 
     success = WriteCfgFiles();
     if( !success ) Report::Error (_("Cannot write settings for FCoE interfaces.
-For details, see /var/log/YaST2/y2log.
-") );
+For details, see /var/log/YaST2/y2log.") );
 
     if(PollAbort()) return false;
     Progress::NextStage();
@@ -1038,7 +1072,6 @@
     if( !success ) Report::Error (_("Cannot write 
/etc/sysconfig/network/ifcfg-files."));
     sleep(sl);
     
-    // adjust service start of lldpad and fcoe
     if(PollAbort()) return false;
     Progress::NextStage ();
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/complex.ycp 
new/yast2-fcoe-client-2.22.2/src/complex.ycp
--- old/yast2-fcoe-client-2.22.1/src/complex.ycp        2011-11-23 
11:40:47.000000000 +0100
+++ new/yast2-fcoe-client-2.22.2/src/complex.ycp        2012-01-18 
14:03:58.000000000 +0100
@@ -54,11 +54,11 @@
     y2milestone( "Aborting FCoE configuration" );
 
     // revert start of 'fcoe' or 'lldpad' 
-    if ( FcoeClient::fcoe_started )
+    if ( FcoeClient::fcoe_started && !Service::Enabled( "boot.fcoe" ) )
     {
        Service::Stop( "boot.fcoe" );
     }
-    if ( FcoeClient::lldpad_started )
+    if ( FcoeClient::lldpad_started && !Service::Enabled( "boot.lldpad" ) )
     {
        Service::Stop( "boot.lldpad" );
     }
@@ -82,7 +82,12 @@
                    y2milestone( "Calling %1", command );
                    map output = (map)SCR::Execute( .target.bash_output, 
command );
                    y2milestone( "Output: %1", output );
-
+                   if ( output["exit"]:255 != 0 )
+                   {
+                       // text of an error popup
+                       Popup::Error( sformat( _("Cannot remove the FCoE 
interface.
+Command %1 failed."), command ) );
+                   }
                } );
            FcoeClient::ResetRevertCommands(); // important during installation
        }
@@ -236,6 +241,12 @@
     UI::ChangeWidget( `id(`fcoe), `Value, card["fcoe_enable"]:"" );
     UI::ChangeWidget( `id(`dcb), `Value, card["dcb_required"]:"" );
     UI::ChangeWidget( `id(`auto), `Value, card["auto_vlan"]:"" );
+    if ( card["fcoe_vlan"]:"" != FcoeClient::NOT_CONFIGURED )
+    {
+       // don't allow to change AUTO_VLAN for a configured interface
+       // (would require new /etc/fcoe/cfg-file)
+       UI::ChangeWidget( `id(`auto), `Enabled, false );        
+    }
     // headline of the edit dialog - configuration of values for a certain 
network interface
     UI::ChangeWidget( `id(`heading), `Value, sformat( _("Configuration of 
Interface %1"), card["fcoe_vlan"]:"" ) );
 }
@@ -280,7 +291,6 @@
 
        string command = "";
        map output = $[];        
-       string vlan_interface = "";
        string fcoe_vlan_interface = "";
        map status_map = $[];
 
@@ -346,8 +356,8 @@
            y2milestone( "Starting FCoE canceled" );
            return nil;
        }       
-
-       // Get values and exchange list (table) entry
+       
+       // Get values and exchange list (table) entries
        fcoe_vlan_interface = FcoeClient::GetFcoeVlanInterface( 
card["dev_name"]:"", card["vlan_interface"]:"" );
 
        if ( fcoe_vlan_interface != "" )
@@ -358,7 +368,10 @@
            status_map = FcoeClient::GetFcoeStatus ( fcoe_vlan_interface, 
card["dev_name"]:"" );
           
            // command to be able to revert the creation of FCoE VLAN interface 
in case of 'Cancel'
-           FcoeClient::AddRevertCommand( sformat("fcoeadm -d %1 && vconfig rem 
%1", fcoe_vlan_interface ) );
+           // FcoeClient::AddRevertCommand( sformat("fcoeadm -d %1 && vconfig 
rem %2", status_map["cfg_device"]:"", fcoe_vlan_interface ) );
+           // 'fcoeadm -d <if>/<if>.<vlan>' fails here, 'vconfig rem 
<if>.<vlan>' succeeds
+           // and removes the interface properly (tested on RC1)
+           FcoeClient::AddRevertCommand( sformat("vconfig rem %1", 
fcoe_vlan_interface ) );
        }
        else
        {
@@ -389,25 +402,35 @@
        map output = $[];
        string command = "";
        // popup text: really remove FCoE VLAN interface
-       string popup_text =  sformat( _("Do you really want to remove the FCoE 
VLAN device %1?"),
+       string popup_text =  sformat( _("Do you really want to remove the FCoE 
interface %1?"),
                                        card["fcoe_vlan"]:"" );
 
        if ( !Stage::initial() )
        {
            // popup text continues 
-           popup_text = popup_text + "\n" + _("Please note: The device won't 
be restored on 'Cancel'.");
+           popup_text = popup_text + "\n" + _("Attention:
+Make sure the interface is not essential for a used device.
+Removing it may result in an unusable system.");
+       }
+       else
+       {
+           // popup text continues
+            popup_text = popup_text + "\n" + _("Don't remove the interface if 
it's related
+to an already activated multipath device.");
        }
        
-       // headline of a popup
-       boolean ret = Popup::YesNoHeadline( _("Removing FCoE VLAN Device"),
-                                           popup_text );
+       boolean ret = Popup::AnyQuestion( Label::WarningMsg(),
+                                         popup_text,
+                                         Label::ContinueButton(),
+                                         Label::CancelButton(),
+                                         `focus_no );  // default: Cancel
        
        if ( ret == true )
        {
            y2milestone( "Removing %1",  card["fcoe_vlan"]:"" );
 
            // call fcoeadm -d <fcoe_vlan> first (bnc #719443)
-           command = sformat( "fcoeadm -d %1", card["fcoe_vlan"]:"") ;
+           command = sformat( "fcoeadm -d %1", card["cfg_file"]:"") ;
            y2milestone( "Calling %1", command );
            output = (map)SCR::Execute( .target.bash_output, command );
            y2milestone( "Output: %1", output );
@@ -433,8 +456,9 @@
                    // set new values in global map network_interfaces
                    card["fcoe_vlan"] = FcoeClient::NOT_CONFIGURED;
                    card["fcoe_enable"] = "yes";
-                   card["dcb_required"] = 
(card["dcb_capable"]:""=="yes")?"yes":"no";
-                   card["auto_vlan"] = "no";
+                   // exception for Broadcom cards: DCB_REQUIRED should be set 
to "no" (bnc #728658)
+                   card["dcb_required"] = ((card["driver"]:"" != "bnx2x") && 
(card["dcb_capable"]:""=="yes"))?"yes":"no";
+                   card["auto_vlan"] = "yes"; // default is "yes" (bnc #724563)
                    card["cfg_file"] = "";
                    FcoeClient::SetModified( true );
 
@@ -450,7 +474,7 @@
                }
                else
                {
-                   Popup::Error( sformat( _("Removing of interface %1 
failed."), card["fcoe_vlan"]:"") );
+                   Popup::Error( sformat( _("Removing of interface %1 
failed"), card["fcoe_vlan"]:"") );
                    y2error( "Removing of interface %1 failed", 
card["fcoe_vlan"]:"" );
                }       
            }
@@ -483,8 +507,7 @@
         {       
             // text of a warning popup
             Popup::Warning( _("DCB Required is set to \"yes\" but the
-interface isn't DCB capable.
-") );
+interface isn't DCB capable.") );
             y2warning( "DCB_REQUIRED is set to yes but the interface isn't DCB 
capable" );
         }
      }
@@ -505,6 +528,14 @@
     
     boolean lldpad_auto = (boolean)UI::QueryWidget( `id 
("lldpad_startup_auto"), `Value );
 
+    if ( fcoe_auto && !lldpad_auto )
+    {
+       // text of an information (notify)  popup
+       Popup::Notify( _( "Service 'fcoe' requires enabled service 'lldpad'.
+Enabling start on boot of service 'lldpad'." ) );
+       lldpad_auto = true;
+    }
+    
     FcoeClient::SetStartStatus( "lldpad", lldpad_auto );
     y2milestone( "Setting auto start of service 'lldpad' to: %1", lldpad_auto 
);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/fcoe-client_finish.ycp 
new/yast2-fcoe-client-2.22.2/src/fcoe-client_finish.ycp
--- old/yast2-fcoe-client-2.22.1/src/fcoe-client_finish.ycp     2011-12-21 
14:32:54.000000000 +0100
+++ new/yast2-fcoe-client-2.22.2/src/fcoe-client_finish.ycp     2012-01-18 
14:04:08.000000000 +0100
@@ -109,8 +109,9 @@
     if ( start_services )
     {
        y2milestone( "Enabling service start of fcoe and lldpad" ); 
-       Service::Enable("boot.fcoe");
+       // service lldpad has to be enabled first
        Service::Enable("boot.lldpad"); 
+       Service::Enable("boot.fcoe");
     }
 }
 else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/inst_fcoe-client.ycp 
new/yast2-fcoe-client-2.22.2/src/inst_fcoe-client.ycp
--- old/yast2-fcoe-client-2.22.1/src/inst_fcoe-client.ycp       2011-12-21 
14:32:42.000000000 +0100
+++ new/yast2-fcoe-client-2.22.2/src/inst_fcoe-client.ycp       2012-01-18 
14:04:29.000000000 +0100
@@ -101,9 +101,10 @@
 // workflow not aborted
 if ( ret == `next )
 {
-    // add package open-fcoe to the pool that is used by software proposal
-    y2milestone( "Adding package open-fcoe to pool" );
-    PackagesProposal::AddResolvables( "fcoe", `package, ["open-fcoe"] ); 
+    // add packages open-fcoe (requires lldpad) and yast2-fcoe-client
+    // to the pool that is used by software proposal
+    y2milestone( "Adding packages open-fcoe and yast2-fcoe-client to pool" );
+    PackagesProposal::AddResolvables( "fcoe", `package, ["open-fcoe", 
"yast2-fcoe-client"] ); 
     // write changes to config files
     y2milestone( "Writing FCoE config files");
     FcoeClient::WriteFcoeConfig();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-fcoe-client-2.22.1/src/wizards.ycp 
new/yast2-fcoe-client-2.22.2/src/wizards.ycp
--- old/yast2-fcoe-client-2.22.1/src/wizards.ycp        2011-10-12 
11:04:48.000000000 +0200
+++ new/yast2-fcoe-client-2.22.2/src/wizards.ycp        2012-01-18 
14:02:58.000000000 +0100
@@ -172,7 +172,7 @@
     Wizard::SetAbortButton(`abort, Label::CancelButton());
     Wizard::HideBackButton();
 
-    // TODO: rename icon to yast2-fcoe-client (yast2-theme package)
+    // TODO: rename icon to yast-fcoe (yast2-theme package)
     if (Mode::normal ())
        Wizard::SetDesktopTitleAndIcon("fcoe-client");
     else

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to