Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Xubuntu Development (http://www.linux-archive.org/xubuntu-development/)
-   -   Fix most of what is necessary for install over IPv6 on s390 (#594090) (http://www.linux-archive.org/xubuntu-development/379419-fix-most-what-necessary-install-over-ipv6-s390-594090-a.html)

Steffen Maier 05-31-2010 06:31 PM

Fix most of what is necessary for install over IPv6 on s390 (#594090)
 
We need loader support to parse and write out an IPv6 prefix.
Write out IPV6_AUTOCONF=no in writeEnabledNetInfo for manual IPv6 method.
---
loader/linuxrc.s390 | 4 +---
loader/loader.c | 19 +++++++++++++++++++
loader/loader.h | 1 +
loader/net.c | 19 +++++++++++++++++++
4 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/loader/linuxrc.s390 b/loader/linuxrc.s390
index 3716979..f799db9 100644
--- a/loader/linuxrc.s390
+++ b/loader/linuxrc.s390
@@ -3006,7 +3006,6 @@ cat > $IFCFGFILE << EOF
DEVICE=$DEVICE
ONBOOT=yes
BOOTPROTO=static
-BROADCAST=$BROADCAST
MTU=$MTU
SUBCHANNELS=$SUBCHANNELS
EOF
@@ -3017,12 +3016,11 @@ IPV6_AUTOCONF=no
IPV6ADDR=$IPADDR/$NETMASK
IPV6_DEFAULTGW=$GATEWAY
EOF
- # FIXME: /etc/sysconfig/network:IPV6_DEFAULTGW=$GATEWAY
- # /etc/sysconfig/network:NETWORKING_IPV6=yes
else
cat >> $IFCFGFILE << EOF
IPADDR=$IPADDR
NETMASK=$NETMASK
+BROADCAST=$BROADCAST
GATEWAY=$GATEWAY
EOF
fi
diff --git a/loader/loader.c b/loader/loader.c
index 049c26f..ebc80e6 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -690,6 +690,7 @@ static void readNetInfo(struct loaderData_s ** ld) {
loaderData->macaddr = NULL;
#ifdef ENABLE_IPV6
loaderData->ipv6 = NULL;
+ loaderData->ipv6prefix = NULL;
loaderData->gateway6 = NULL;
#endif

@@ -740,6 +741,24 @@ static void readNetInfo(struct loaderData_s ** ld) {
loaderData->netmask = strdup(val);
} else if (!g_strcmp0(pair[0], "GATEWAY")) {
loaderData->gateway = strdup(val);
+#ifdef ENABLE_IPV6
+ } else if (!g_strcmp0(pair[0], "IPV6ADDR")) {
+ gchar **elements = g_strsplit(val, "/", 2);
+
+ if (elements[0]) {
+ loaderData->ipv6 = strdup(elements[0]);
+ loaderData->ipv6info_set = 1;
+ flags |= LOADER_FLAGS_IPV6_PARAM;
+ if (elements[1]) {
+ loaderData->ipv6prefix = strdup(elements[1]);
+ }
+ } else {
+ logMessage(WARNING, "readNetInfo could not parse IPV6ADDR: %s", val);
+ }
+ g_strfreev(elements);
+ } else if (!g_strcmp0(pair[0], "IPV6_DEFAULTGW")) {
+ loaderData->gateway6 = strdup(val);
+#endif
} else if (!g_strcmp0(pair[0], "DNS")) {
loaderData->dns = strdup(val);
} else if (!g_strcmp0(pair[0], "DOMAIN")) {
diff --git a/loader/loader.h b/loader/loader.h
index f35e3ff..bb38098 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -135,6 +135,7 @@ struct loaderData_s {
char *ipv4, *netmask, *gateway, *dns, *domain, *hostname, *peerid, *ethtool, *subchannels, *portname, *essid, *wepkey, *nettype, *ctcprot, *options, *macaddr;
#ifdef ENABLE_IPV6
char *ipv6;
+ char *ipv6prefix;
int ipv6info_set;
char *gateway6;
#endif
diff --git a/loader/net.c b/loader/net.c
index 769c1d4..9b89f55 100644
--- a/loader/net.c
+++ b/loader/net.c
@@ -297,6 +297,24 @@ void setupIfaceStruct(iface_t * iface, struct loaderData_s * loaderData) {
} else if (inet_pton(AF_INET6, loaderData->ipv6, &addr6) >= 1) {
memcpy(&iface->ip6addr, &addr6, sizeof(struct in6_addr));
iface->ipv6method = IPV6_MANUAL_METHOD;
+
+ iface->ip6prefix = 0;
+ if (loaderData->ipv6prefix) {
+ int prefix;
+
+ errno = 0;
+ prefix = strtol(loaderData->ipv6prefix, NULL, 10);
+ if ((errno == ERANGE && (prefix == LONG_MIN ||
+ prefix == LONG_MAX)) ||
+ (errno != 0 && prefix == 0)) {
+ logMessage(ERROR, "%s: %d: %m", __func__, __LINE__);
+ abort();
+ }
+
+ if (prefix > 0 || prefix <= 128) {
+ iface->ip6prefix = prefix;
+ }
+ }
} else {
iface->ipv6method = 0;
loaderData->ipv6info_set = 0;
@@ -1363,6 +1381,7 @@ int writeEnabledNetInfo(iface_t *iface) {
} else if (iface->ipv6method == IPV6_DHCP_METHOD) {
fprintf(fp, "DHCPV6C=yes
");
} else if (iface->ipv6method == IPV6_MANUAL_METHOD) {
+ fprintf(fp, "IPV6_AUTOCONF=no
");
if (iface_have_in6_addr(&iface->ip6addr)) {
if (inet_ntop(AF_INET6, &iface->ip6addr, buf,
INET6_ADDRSTRLEN) == NULL) {
--
1.7.0.4


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


All times are GMT. The time now is 01:10 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.