Re: [RFC] correctly pass s390 netconfig to loader and NM (#595388, #595382)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Right, this was just a first unfinished request for comments,
which was replaced with the other clean patches you applied.

On 06/11/2010 10:36 PM, David Cantrell wrote:
> You can probably disregard the previous message as I see these changes made
> their way in to other patches.
> 
> On Fri, 11 Jun 2010, David Cantrell wrote:
> 
>> Comments below.
>>
>> On Fri, 28 May 2010, Steffen Maier wrote:
>>
>>> ---
>>> loader/linuxrc.s390 |   44 +-------------------------------------------
>>> loader/loader.c     |   16 ++++++++++++++++
>>> loader/net.c        |   21 +++++++--------------
>>> 3 files changed, 24 insertions(+), 57 deletions(-)
>>>
>>> diff --git a/loader/linuxrc.s390 b/loader/linuxrc.s390
>>> index 99e5192..a5cedaf 100644
>>> --- a/loader/linuxrc.s390
>>> +++ b/loader/linuxrc.s390
>>> @@ -2971,49 +2971,7 @@ done
>>> #    [ "$ipv6" ] && echo "IPV6=yes"
>>>
>>> # transfer options into install environment
>>> -cat > /tmp/install.cfg << EOF
>>> -LANG="$LANG"
>>> -S390ARCH="$S390ARCH"
>>> -TEXTDOMAIN="$TEXTDOMAIN"
>>> -TEXTDOMAINDIR="$TEXTDOMAINDIR"
>>> -PORTNAME="$PORTNAME"
>>> -HOSTNAME="$HOSTNAME"
>>> -DEVICE="$DEVICE"
>>> -NETTYPE="$NETTYPE"
>>> -IPADDR="$IPADDR"
>>> -GATEWAY="$GATEWAY"
>>> -MTU="$MTU"
>>> -NETWORK="$NETWORK"
>>> -NETMASK="$NETMASK"
>>> -BROADCAST="$BROADCAST"
>>> -SEARCHDNS="$SEARCHDNS"
>>> -PEERID="$PEERID"
>>> -SUBCHANNELS="$SUBCHANNELS"
>>> -ONBOOT="yes"
>>> -CTCPROT="$CTCPROT"
>>> -EOF
>>> -if [ "$ipv6" ]; then
>>> -    DNS1=$(echo $DNS | cut -d ',' -f 1)
>>> -    echo DNS=\"$DNS1\" >> /tmp/install.cfg
>>> -    echo DNS1=\"$DNS1\" >> /tmp/install.cfg
>>> -    echo DNS2=\"$(echo $DNS | cut -d ',' -f 2)\" >> /tmp/install.cfg
>>> -else
>>> -    DNS1=$(echo $DNS | cut -d ':' -f 1)
>>> -    echo DNS=\"$DNS1\" >> /tmp/install.cfg
>>> -    echo DNS1=\"$DNS1\" >> /tmp/install.cfg
>>> -    echo DNS2=\"$(echo $DNS | cut -d ':' -f 2)\" >> /tmp/install.cfg
>>> -fi
>>> -cat >> /tmp/install.cfg << EOF
>>> -export LANG PORTNAME S390ARCH TEXTDOMAIN TEXTDOMAINDIR
>>> -export HOSTNAME DEVICE NETTYPE IPADDR GATEWAY MTU
>>> -export NETWORK NETMASK BROADCAST DNS DNS1 DNS2 SEARCHDNS
>>> -export PEERID ONBOOT SUBCHANNELS CTCPROT
>>> -EOF
>>> -# immediately read it in again to export these into the shell below
>>> -. /tmp/install.cfg
>>> -if [ -z "$testing" ]; then
>>> -    cat /tmp/install.cfg >> /etc/profile
>>> -fi # testing
>>> +# loader now uses ifcfg instead of install.cfg to receive our
>>> network config
>>>
>>> NETSCRIPTS="/etc/sysconfig/network-scripts"
>>> IFCFGFILE="$NETSCRIPTS/ifcfg-$DEVICE"
>>> diff --git a/loader/loader.c b/loader/loader.c
>>> index 63594d8..19149d6 100644
>>
>> This hunk was already removed in
>> 3c3b439ec81da495f4bd5a1a0ca0fc5c13ccd234.
>>
>>> --- a/loader/loader.c
>>> +++ b/loader/loader.c
>>> @@ -692,6 +692,8 @@ static void readNetInfo(struct loaderData_s ** ld) {
>>>             } else {
>>>                 if (!g_strcmp0(pair[0], "IPADDR")) {
>>>                     loaderData->ipv4 = strdup(val);
>>> +                    loaderData->ipinfo_set = 1;
>>> +                    flags |= LOADER_FLAGS_IP_PARAM;
>>>                 } else if (!g_strcmp0(pair[0], "NETMASK")) {
>>>                     loaderData->netmask = strdup(val);
>>>                 } else if (!g_strcmp0(pair[0], "GATEWAY")) {
>>> @@ -718,15 +720,23 @@ static void readNetInfo(struct loaderData_s **
>>> ld) {
>>>                     loaderData->nettype = strdup(val);
>>>                 } else if (!g_strcmp0(pair[0], "CTCPROT")) {
>>>                     loaderData->ctcprot = strdup(val);
>>> +/* FIXME: That's deprecated install.cfg syntax.
>>> +   ifcfg syntax is OPTIONS="layer2=X portno=Y" and we need to parse
>>> this.
>>> +   Optionally just take the value of OPTIONS as string without parsing
>>> +   and get rid of the layer2 and portno fields of loaderData_S and
>>> iface_t.
>>> +   After all, OPTIONS can contain any qeth sysfs attribute not just
>>> layer2 or
>>> +   portno.
>>>                 } else if (!g_strcmp0(pair[0], "LAYER2")) {
>>>                     loaderData->layer2 = strdup(val);
>>>                 } else if (!g_strcmp0(pair[0], "PORTNO")) {
>>>                     loaderData->portno = strdup(val);
>>> +*/
>>
>> Just remove these lines then.
>>
>>>                 } else if (!g_strcmp0(pair[0], "MACADDR")) {
>>>                     loaderData->macaddr = strdup(val);
>>>                 } else if (!g_strcmp0(pair[0], "HOSTNAME")) {
>>>                     loaderData->hostname = strdup(val);
>>>                 }
>>> +                /* FIXME: IPv6 support still missing */
>>
>> No FIXMEs, please add IPv6 support if it's necessary.
>>
>>>             }
>>>
>>>             g_free(val);
>>> @@ -737,9 +747,11 @@ static void readNetInfo(struct loaderData_s **
>>> ld) {
>>>         line++;
>>>     }
>>>
>>> +    /* bogus and not compatible with ipv6
>>>     if (loaderData->ipv4 && loaderData->netmask) {
>>>         flags |= LOADER_FLAGS_HAVE_CMSCONF;
>>>     }
>>> +    */
>>
>> If this hunk can be removed, remove it.
>>
>>>     free(cfgfile);
>>>     g_strfreev(lines);
>>> @@ -1470,6 +1482,10 @@ static char *doLoaderMain(struct loaderData_s
>>> *loaderData,
>>>                 logMessage(INFO, "going to do getNetConfig");
>>>
>>>                 /* s390 provides all config info by way of the CMS
>>> conf file */
>>> +                /* This is broken. Info can also be given by parm
>>> file or even
>>> +                   interactively without any cms conf file.
>>> +                   Also it could be ipv4, ipv6, or both, so we
>>> cannot assume
>>> +                   it's always both just because of that bogus flag. */
>>
>> Please fix it if broken rather than explaining it is broken.
>>
>>>                 if (FL_HAVE_CMSCONF(flags)) {
>>>                     loaderData->ipinfo_set = 1;
>>> #ifdef ENABLE_IPV6
>>> diff --git a/loader/net.c b/loader/net.c
>>> index dd27916..a302e02 100644
>>> --- a/loader/net.c
>>> +++ b/loader/net.c
>>> @@ -1412,27 +1412,20 @@ int writeEnabledNetInfo(iface_t *iface) {
>>>         fprintf(fp, "CTCPROT=%s\n", iface->ctcprot);
>>>     }
>>>
>>> -    if (iface->layer2 && !strcmp(iface->layer2, "1")) {
>>> -        osa_layer2 = 1;
>>> -    }
>>> -
>>> -    if (iface->portno && !strcmp(iface->portno, "1")) {
>>> -        osa_portno = 1;
>>> -    }
>>> -
>>> -    if (osa_layer2 || osa_portno) {
>>> +    /* don't (mis)understand layer2 and portno values, just pass
>>> them */
>>> +    if (iface->layer2 || iface->portno) {
>>>         fprintf(fp, "OPTIONS=\"");
>>>
>>> -        if (osa_layer2) {
>>> -            fprintf(fp, "layer2=1");
>>> +        if (iface->layer2) {
>>> +            fprintf(fp, "layer2=%s", iface->layer2);
>>>         }
>>>
>>> -        if (osa_layer2 && osa_portno) {
>>> +        if (iface->layer2 && iface->portno) {
>>>             fprintf(fp, " ");
>>>         }
>>>
>>> -        if (osa_portno) {
>>> -            fprintf(fp, "portno=1");
>>> +        if (iface->portno) {
>>> +            fprintf(fp, "portno=%s", iface->portno);
>>>         }
>>>
>>>         fprintf(fp, "\"\n");
>>>
>>
>> This last changeset for loader/net.c seems like the only valid part of
>> this
>> entire patch.  Please update the patch if other parts are relevant.  The
>> layer2 and portno handling in net.c showed up in
>> 9caaca40bcaffb502dc58659e828f97d78a2d0f8, so please make sure we don't
>> regress
>> on that bug.  It appears as though how we handle those values has
>> changed,
>> which is fine.

Steffen

Linux on System z Development

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294


_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list



[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux