![](https://seccdn.libravatar.org/avatar/e2145bc5cf53dda95c308a3c75e8fef3.jpg?s=120&d=mm&r=g)
Hello community, here is the log from the commit of package linuxrc for openSUSE:Factory checked in at 2014-05-22 20:38:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/linuxrc (Old) and /work/SRC/openSUSE:Factory/.linuxrc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "linuxrc" Changes: -------- --- /work/SRC/openSUSE:Factory/linuxrc/linuxrc.changes 2014-05-17 22:02:00.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.linuxrc.new/linuxrc.changes 2014-05-22 20:39:07.000000000 +0200 @@ -1,0 +2,21 @@ +Thu May 22 09:20:19 CEST 2014 - snwint@suse.de + +- turn default ipv6 off again (bnc #879127) +- 4.2.29 + +------------------------------------------------------------------- +Wed May 21 16:07:16 CEST 2014 - snwint@suse.de + +- rework dhcp handling, ipv6 should be fine now (bnc #868031) +- potential fix for memory corruption (bnc #878357) +- actually parse autoyast2 file +- redirect all wicked output to stderr +- 4.2.28 + +------------------------------------------------------------------- +Mon May 19 10:41:25 CEST 2014 - snwint@suse.de + +- Missed one instance of config.hwp.layer2 that needed to be updated. +- 4.2.27 + +------------------------------------------------------------------- Old: ---- linuxrc-4.2.26.tar.xz New: ---- linuxrc-4.2.29.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ linuxrc.spec ++++++ --- /var/tmp/diff_new_pack.Cdr5T7/_old 2014-05-22 20:39:08.000000000 +0200 +++ /var/tmp/diff_new_pack.Cdr5T7/_new 2014-05-22 20:39:08.000000000 +0200 @@ -25,9 +25,9 @@ Summary: SUSE Installation Program License: GPL-3.0+ Group: System/Boot -Version: 4.2.26 +Version: 4.2.29 Release: 0 -Source: linuxrc-4.2.26.tar.xz +Source: linuxrc-4.2.29.tar.xz BuildRoot: %{_tmppath}/%{name}-%{version}-build %description ++++++ linuxrc-4.2.26.tar.xz -> linuxrc-4.2.29.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-4.2.26/VERSION new/linuxrc-4.2.29/VERSION --- old/linuxrc-4.2.26/VERSION 2014-05-16 16:05:35.000000000 +0200 +++ new/linuxrc-4.2.29/VERSION 2014-05-22 09:20:11.000000000 +0200 @@ -1 +1 @@ -4.2.26 +4.2.29 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-4.2.26/auto2.c new/linuxrc-4.2.29/auto2.c --- old/linuxrc-4.2.26/auto2.c 2014-04-24 14:35:53.000000000 +0200 +++ new/linuxrc-4.2.29/auto2.c 2014-05-21 15:29:55.000000000 +0200 @@ -372,10 +372,12 @@ * -- ok this sounds weird but actually makes sense... */ if(config.autoyast2 && !config.autoyast) { - fprintf(stderr, "Downloading AutoYaST file: %s\n", config.autoyast2); - printf("Downloading AutoYaST file: %s\n", config.autoyast2); - fflush(stdout); url = url_set(config.autoyast2); + fprintf(stderr, "Downloading AutoYaST file: %s\n", config.autoyast2); + if(!url->quiet) { + printf("Downloading AutoYaST file: %s\n", config.autoyast2); + fflush(stdout); + } #if defined(__s390__) || defined(__s390x__) if(url->is.network && !config.net.configured) net_activate_s390_devs(); #endif @@ -385,8 +387,12 @@ if(!err) { fprintf(stderr, "setting AutoYaST option to file:///download/autoyast.xml\n"); str_copy(&config.autoyast, "file:///download/autoyast.xml"); - // don't parse it - // file_read_info_file("file:/download/autoyast.xml", kf_cfg); + /* parse it: + * you can embed linuxrc options between lines with '# {start,end}_linuxrc_conf'; + * otherwise the file content is ignored + */ + fprintf(stderr, "parsing AutoYaST file\n"); + file_read_info_file("file:/download/autoyast.xml", kf_cfg); } } @@ -597,7 +603,6 @@ */ void auto2_user_netconfig() { - int win_old; slist_t *sl; if(!config.net.do_setup) return; @@ -628,22 +633,9 @@ for(sl = config.net.devices; sl && config.net.configured == nc_none; sl = sl->next) { str_copy(&config.net.device, sl->key); - printf( - "Sending DHCP request to %s...\n", config.net.device - ); - fflush(stdout); - fprintf(stderr, - "Sending DHCP request to %s... ", config.net.device - ); net_dhcp(); - if( - !config.net.hostname.ok || - !config.net.netmask.ok || - !config.net.broadcast.ok - ) { - fprintf(stderr, "no/incomplete answer.\n"); - } - else { + + if(config.net.dhcp_active) { config.net.configured = nc_dhcp; if(net_activate_ns()) { @@ -657,9 +649,12 @@ } } else { - if(!(win_old = config.win)) util_disp_init(); + int win_old, maybe_interactive; + + maybe_interactive = config.net.setup != NS_DHCP; + if(!(win_old = config.win) && maybe_interactive) util_disp_init(); net_config(); - if(!win_old) util_disp_done(); + if(!win_old && maybe_interactive) util_disp_done(); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-4.2.26/changelog new/linuxrc-4.2.29/changelog --- old/linuxrc-4.2.26/changelog 2014-05-16 16:05:37.000000000 +0200 +++ new/linuxrc-4.2.29/changelog 2014-05-22 09:20:13.000000000 +0200 @@ -1,4 +1,16 @@ -2014-05-16: HEAD +2014-05-22: HEAD + - turn default ipv6 off again (bnc #879127) + +2014-05-21: 4.2.28 + - rework dhcp handling, ipv6 should be fine now (bnc #868031) + - potential fix for memory corruption (bnc #878357) + - actually parse autoyast2 file + - redirect all wicked output to stderr + +2014-05-16: 4.2.27 + - Missed one instance of config.hwp.layer2 that needed to be updated. + +2014-05-16: 4.2.26 - pass debug option to help scripts 2014-05-15: 4.2.25 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-4.2.26/file.c new/linuxrc-4.2.29/file.c --- old/linuxrc-4.2.26/file.c 2014-05-15 10:49:40.000000000 +0200 +++ new/linuxrc-4.2.29/file.c 2014-05-20 11:06:34.000000000 +0200 @@ -2578,7 +2578,7 @@ if(!config.net.hostname.ok || !config.net.netmask.ok) { net_dhcp(); if(!config.net.hostname.ok) { - fprintf(stderr, "%s: DHCP network setup failed\n", config.net.device); + fprintf(stderr, "%s: DHCP%s network setup failed\n", config.net.device, net_dhcp_type()); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-4.2.26/module.c new/linuxrc-4.2.29/module.c --- old/linuxrc-4.2.26/module.c 2013-12-04 12:02:41.000000000 +0100 +++ new/linuxrc-4.2.29/module.c 2014-05-21 11:30:38.000000000 +0200 @@ -38,7 +38,7 @@ #define MENU_WIDTH 55 #define MODULE_CONFIG "module.config" -#define CARDMGR_PIDFILE "/var/run/cardmgr.pid" +#define CARDMGR_PIDFILE "/run/cardmgr.pid" static int mod_types = 0; static int mod_type[MAX_MODULE_TYPES] = {}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-4.2.26/net.c new/linuxrc-4.2.29/net.c --- old/linuxrc-4.2.26/net.c 2014-05-15 11:03:39.000000000 +0200 +++ new/linuxrc-4.2.29/net.c 2014-05-21 15:53:44.000000000 +0200 @@ -83,6 +83,7 @@ static int wlan_auth_cb(dia_item_t di); static dia_item_t di_wlan_auth_last = di_none; +static int parse_leaseinfo(char *file); static int net_wicked(void); static int net_dhcp4(void); static int net_dhcp6(void); @@ -297,35 +298,12 @@ /* we need at least ip & netmask for static network config */ if((net_config_mask() & 3) != 3) { - printf( - "Sending %s request to %s...\n", - config.net.ipv6 ? "DHCP6" : "DHCP", - config.net.device - ); - fflush(stdout); - fprintf(stderr, - "sending %s request to %s... ", - config.net.ipv6 ? "DHCP6" : "DHCP", - config.net.device - ); - net_dhcp(); - if( - !config.test && - !config.net.ipv6 && - ( - !config.net.hostname.ok || - !config.net.netmask.ok || - !config.net.broadcast.ok - ) - ) { - fprintf(stderr, "no/incomplete answer.\n"); + if(!config.net.dhcp_active) { config.net.configured = nc_none; - return 0; } - fprintf(stderr, "ok.\n"); config.net.configured = nc_dhcp; } @@ -378,22 +356,9 @@ for(sl = config.net.devices; sl && config.net.configured == nc_none; sl = sl->next) { str_copy(&config.net.device, sl->key); - printf( - "Sending DHCP request to %s...\n", config.net.device - ); - fflush(stdout); - fprintf(stderr, - "Sending DHCP request to %s... ", config.net.device - ); net_dhcp(); - if( - !config.net.hostname.ok || - !config.net.netmask.ok || - !config.net.broadcast.ok - ) { - fprintf(stderr, "no/incomplete answer.\n"); - } - else { + + if(config.net.dhcp_active) { config.net.configured = nc_dhcp; if(net_activate_ns()) { @@ -679,7 +644,8 @@ } memset (&interface_ri, 0, sizeof (struct ifreq)); - strcpy (interface_ri.ifr_name, config.net.device); + strncpy (interface_ri.ifr_name, config.net.device, sizeof interface_ri.ifr_name - 1); + interface_ri.ifr_name[sizeof interface_ri.ifr_name - 1] = 0; sockaddr_ri.sin_family = AF_INET; sockaddr_ri.sin_port = 0; @@ -1583,8 +1549,9 @@ if(config.test) return; + /* write resolv.conf for a static network setup */ if( - !(config.net.ipv6 && config.net.dhcp_active) && + !config.net.dhcp_active && (f = fopen("/etc/resolv.conf", "w")) ) { for(u = 0; u < config.net.nameservers; u++) { @@ -1807,6 +1774,80 @@ /* + * Parse dhcp leaseinfo and set network config vars accordingly. + * Returns 1 to indicate that valid data were found. + */ +int parse_leaseinfo(char *file) +{ + file_t *f0, *f; + char *s; + slist_t *sl0, *sl; + int got_ip = 0; + + f0 = file_read_file(file, kf_dhcp); + + for(f = f0; f; f = f->next) { + switch(f->key) { + case key_ipaddr: + got_ip = 1; + name2inet(&config.net.hostname, f->value); + net_check_address(&config.net.hostname, 0); + break; + + case key_hostname: + str_copy(&config.net.realhostname, f->value); + break; + + case key_netmask: + name2inet(&config.net.netmask, f->value); + net_check_address(&config.net.netmask, 0); + break; + + case key_network: + name2inet(&config.net.network, f->value); + net_check_address(&config.net.network, 0); + break; + + case key_broadcast: + name2inet(&config.net.broadcast, f->value); + net_check_address(&config.net.broadcast, 0); + break; + + case key_gateway: + if((s = strchr(f->value, ' '))) *s = 0; + name2inet(&config.net.gateway, f->value); + net_check_address(&config.net.gateway, 0); + break; + + case key_domain: + if(*f->value) str_copy(&config.net.domain, f->value); + break; + + case key_dns: + for(config.net.nameservers = 0, sl = sl0 = slist_split(' ', f->value); sl; sl = sl->next) { + name2inet(&config.net.nameserver[config.net.nameservers], sl->key); + net_check_address(&config.net.nameserver[config.net.nameservers], 0); + if(++config.net.nameservers >= sizeof config.net.nameserver / sizeof *config.net.nameserver) break; + } + slist_free(sl0); + break; + + case key_nisdomain: + if(*f->value) str_copy(&config.net.nisdomain, f->value); + break; + + default: + break; + } + } + + file_free_file(f0); + + return got_ip; +} + + +/* * Start dhcp client and read dhcp info. * * Global vars changed: @@ -1864,11 +1905,9 @@ */ int net_wicked() { - char cmd[256], file[256], *s; - file_t *f0, *f; + char cmd[256], file[256]; window_t win; int got_ip = 0, i, rc; - slist_t *sl0, *sl; FILE *fp; if(config.net.dhcp_active || config.net.keep) return 0; @@ -1879,88 +1918,44 @@ return 0; } + snprintf(cmd, sizeof cmd, "Sending DHCP%s request to %s...", net_dhcp_type(), config.net.device); if(config.win) { - sprintf(cmd, "Sending %s request...", "DHCP"); dia_info(&win, cmd, MSGTYPE_INFO); } + else { + fprintf(stderr, "%s\n", cmd); + printf("%s\n", cmd); + fflush(stdout); + } - sprintf(file, "/etc/sysconfig/network/ifcfg-%s", config.net.device); + snprintf(file, sizeof file, "/etc/sysconfig/network/ifcfg-%s", config.net.device); fp = fopen(file, "w"); - fprintf(fp, "BOOTPROTO='dhcp'\n"); + fprintf(fp, "BOOTPROTO='dhcp%s'\n", net_dhcp_type()); fprintf(fp, "STARTMODE='auto'\n"); fclose(fp); net_apply_ethtool(config.net.device, config.net.hwaddr); if(config.net.dhcp_timeout_set) { - sprintf(cmd, "wicked ifup --timeout %d %s", config.net.dhcp_timeout, config.net.device); + snprintf(cmd, sizeof cmd, "wicked ifup --timeout %d %s >&2", config.net.dhcp_timeout, config.net.device); } else { - sprintf(cmd, "wicked ifup %s", config.net.device); + snprintf(cmd, sizeof cmd, "wicked ifup %s >&2", config.net.device); } - sprintf(file, "/var/run/wicked/leaseinfo.%s.dhcp.ipv4", config.net.device); - - unlink(file); - - system(cmd); - - f0 = file_read_file(file, kf_dhcp); - - for(f = f0; f; f = f->next) { - switch(f->key) { - case key_ipaddr: - got_ip = 1; - name2inet(&config.net.hostname, f->value); - net_check_address(&config.net.hostname, 0); - break; - - case key_hostname: - str_copy(&config.net.realhostname, f->value); - break; - - case key_netmask: - name2inet(&config.net.netmask, f->value); - net_check_address(&config.net.netmask, 0); - break; - - case key_network: - name2inet(&config.net.network, f->value); - net_check_address(&config.net.network, 0); - break; - - case key_broadcast: - name2inet(&config.net.broadcast, f->value); - net_check_address(&config.net.broadcast, 0); - break; - - case key_gateway: - if((s = strchr(f->value, ' '))) *s = 0; - name2inet(&config.net.gateway, f->value); - net_check_address(&config.net.gateway, 0); - break; - - case key_domain: - if(*f->value) str_copy(&config.net.domain, f->value); - break; - - case key_dns: - for(config.net.nameservers = 0, sl = sl0 = slist_split(' ', f->value); sl; sl = sl->next) { - name2inet(&config.net.nameserver[config.net.nameservers], sl->key); - net_check_address(&config.net.nameserver[config.net.nameservers], 0); - if(++config.net.nameservers >= sizeof config.net.nameserver / sizeof *config.net.nameserver) break; - } - slist_free(sl0); - break; - - case key_nisdomain: - if(*f->value) str_copy(&config.net.nisdomain, f->value); - break; + if(config.net.ipv4) { + snprintf(file, sizeof file, "/run/wicked/leaseinfo.%s.dhcp.ipv4", config.net.device); + unlink(file); + system(cmd); + got_ip = parse_leaseinfo(file); + } - default: - break; - } + if(!got_ip && config.net.ipv6) { + snprintf(file, sizeof file, "/run/wicked/leaseinfo.%s.dhcp.ipv6", config.net.device); + unlink(file); + system(cmd); + got_ip = parse_leaseinfo(file); } if(config.win) win_close(&win); @@ -1973,14 +1968,12 @@ if(config.win) { if(config.net.dhcpfail && strcmp(config.net.dhcpfail, "ignore")) { if(!strcmp(config.net.dhcpfail, "show")) { - sprintf(cmd, "%s configuration failed.", "DHCP"); - dia_info(&win, cmd, MSGTYPE_ERROR); + dia_info(&win, "DHCP configuration failed.", MSGTYPE_ERROR); sleep(4); win_close(&win); } else if(!strcmp(config.net.dhcpfail, "manual")) { - sprintf(cmd, "%s configuration failed.", "DHCP"); - i = dia_yesno(cmd, NO); + i = dia_yesno("DHCP configuration failed.", NO); if(i == YES) { // is_static = 1; // ????? @@ -1990,7 +1983,26 @@ } } - file_free_file(f0); + if(config.net.dhcp_active) { + char *s; + + snprintf(cmd, sizeof cmd, "ok"); + + if((s = inet2str(&config.net.hostname, 4))) { + snprintf(cmd + strlen(cmd), sizeof cmd - strlen(cmd), ", ip = %s/%u", s, config.net.hostname.prefix4); + } + + if((s = inet2str(&config.net.hostname, 6))) { + snprintf(cmd + strlen(cmd), sizeof cmd - strlen(cmd), ", ip = %s/%u", s, config.net.hostname.prefix6); + } + + fprintf(stderr, "%s\n", cmd); + printf("%s\n", cmd); + } + else { + fprintf(stderr, "no/incomplete answer.\n"); + printf("no/incomplete answer.\n"); + } rc = config.net.dhcp_active ? 0 : 1; @@ -2324,7 +2336,8 @@ sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock == -1) return; - strcpy(iface.ifr_name, dev); + strncpy(iface.ifr_name, dev, sizeof iface.ifr_name - 1); + iface.ifr_name[sizeof iface.ifr_name - 1] = 0; iface.ifr_addr.sa_family = AF_INET; ioctl(sock, SIOCGIFFLAGS, &iface); @@ -2675,7 +2688,7 @@ config.hwp.portname ? "-p \"" : "", config.hwp.portname ? config.hwp.portname : "", config.hwp.portname ? "\"" : "", - config.hwp.layer2 == 2 ? "-l" : "", + config.hwp.layer2 == 1 ? "-l" : "", config.hwp.readchan, config.hwp.writechan, config.hwp.datachan); @@ -2702,7 +2715,8 @@ char* ifname = NULL; net_s390_get_ifname(config.hwp.readchan, &ifname); - strcpy(ifr.ifr_name, ifname); + strncpy(ifr.ifr_name, ifname, sizeof ifr.ifr_name - 1); + ifr.ifr_name[sizeof ifr.ifr_name - 1] = 0; free(ifname); if((skfd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP)) < 0) { @@ -3107,11 +3121,11 @@ fprintf(fp, "STARTMODE='auto'\n"); if((s = inet2str(&config.net.hostname, 4))) { - fprintf(fp, "IPADDR='%s/%u'\n", s, config.net.hostname.prefix4); + fprintf(fp, "IPADDR='%s/%u'\n", s, config.net.hostname.prefix4); } if((s = inet2str(&config.net.hostname, 6))) { - fprintf(fp, "IPADDR='%s/%u'\n", s, config.net.hostname.prefix6); + fprintf(fp, "IPADDR='%s/%u'\n", s, config.net.hostname.prefix6); } fclose(fp); @@ -3178,3 +3192,18 @@ return 0; } + +/* + * Return currently active dhcp type ("4", "6", or "" (= both)). + */ +char *net_dhcp_type() +{ + static char t[2] = "4"; + + t[0] = 0; + if(config.net.ipv4 && !config.net.ipv6) t[0] = '4'; + if(!config.net.ipv4 && config.net.ipv6) t[0] = '6'; + + return t; +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-4.2.26/net.h new/linuxrc-4.2.29/net.h --- old/linuxrc-4.2.26/net.h 2013-11-18 14:06:40.000000000 +0100 +++ new/linuxrc-4.2.29/net.h 2014-05-20 10:55:55.000000000 +0200 @@ -25,4 +25,4 @@ char *net_if2module(char *net_if); void net_apply_ethtool(char *device, char *hwaddr); int wlan_setup(void); - +char *net_dhcp_type(void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-4.2.26/url.c new/linuxrc-4.2.29/url.c --- old/linuxrc-4.2.26/url.c 2014-05-14 16:24:25.000000000 +0200 +++ new/linuxrc-4.2.29/url.c 2014-05-21 15:09:59.000000000 +0200 @@ -2318,35 +2318,12 @@ /* we need at least ip & netmask for static network config */ /* just netmask for PTP devices */ if(!config.net.ptp && (net_config_mask() & 3) != 3) { - printf( - "Sending %s request to %s...\n", - config.net.ipv6 ? "DHCP6" : "DHCP", - url->used.device - ); - fflush(stdout); - fprintf(stderr, - "sending %s request to %s... ", - config.net.ipv6 ? "DHCP6" : "DHCP", - url->used.device - ); - net_dhcp(); - if( - !config.test && - !config.net.ipv6 && - ( - !config.net.hostname.ok || - !config.net.netmask.ok || - !config.net.broadcast.ok - ) - ) { - fprintf(stderr, "no/incomplete answer.\n"); + if(!config.net.dhcp_active) { config.net.configured = nc_none; - return 0; } - fprintf(stderr, "ok.\n"); config.net.configured = nc_dhcp; } -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de