version 1.8, 1997/10/20 06:13:36 |
version 1.8.2.6, 1997/11/11 00:47:31 |
|
|
#include "menu_defs.h" |
#include "menu_defs.h" |
#include "txtwalk.h" |
#include "txtwalk.h" |
|
|
static network_up = 0; |
static int network_up = 0; |
|
|
|
/* Get the list of network interfaces. */ |
|
|
static void get_ifconfig_info (void) |
static void get_ifconfig_info (void) |
{ |
{ |
Line 77 static void get_ifconfig_info (void) |
|
Line 79 static void get_ifconfig_info (void) |
|
*t = 0; |
*t = 0; |
} |
} |
|
|
|
/* Get the information to configure the network, configure it and |
|
make sure both the gateway and the name server are up. */ |
|
|
static int config_network (void) |
int config_network (void) |
{ char *tp; |
{ char *tp; |
char defname[255]; |
char defname[255]; |
int octet0; |
int octet0; |
int pass; |
int pass; |
|
|
FILE *f; |
FILE *f; |
|
time_t now; |
|
|
if (network_up) |
if (network_up) |
return 1; |
return 1; |
Line 154 static int config_network (void) |
|
Line 159 static int config_network (void) |
|
(void)fprintf(stderr, "%s", msg_string(MSG_resolv)); |
(void)fprintf(stderr, "%s", msg_string(MSG_resolv)); |
exit(1); |
exit(1); |
} |
} |
(void)fprintf (f, "nameserver %s\nlookup file bind\nsearch %s", |
time(&now); |
|
/* NB: ctime() returns a string ending in '\n' */ |
|
(void)fprintf (f, ";\n; BIND data file\n; %s %s;\n", |
|
"Created by NetBSD sysinst on", ctime(&now)); |
|
(void)fprintf (f, "nameserver %s\nlookup file bind\nsearch %s\n", |
net_namesvr, net_domain); |
net_namesvr, net_domain); |
fclose (f); |
fclose (f); |
|
|
Line 165 static int config_network (void) |
|
Line 174 static int config_network (void) |
|
run_prog ("/sbin/route add default %s > /dev/null 2> /dev/null", |
run_prog ("/sbin/route add default %s > /dev/null 2> /dev/null", |
net_defroute); |
net_defroute); |
|
|
network_up = run_prog ("/sbin/ping -c 2 %s > /dev/null", net_defroute) |
network_up = !run_prog ("/sbin/ping -c 2 %s > /dev/null", net_defroute) |
|| run_prog ("/sbin/ping -c 2 %s > /dev/null", net_namesvr); |
&& !run_prog ("/sbin/ping -c 2 %s > /dev/null", net_namesvr); |
|
|
return network_up; |
return network_up; |
} |
} |
Line 174 static int config_network (void) |
|
Line 183 static int config_network (void) |
|
int |
int |
get_via_ftp (void) |
get_via_ftp (void) |
{ |
{ |
char **list; |
distinfo *list; |
char realdir[STRSIZE]; |
|
char filename[SSTRSIZE]; |
char filename[SSTRSIZE]; |
int ret; |
int ret; |
|
|
while (config_network ()) { |
while (!config_network ()) { |
msg_display (MSG_netnotup); |
msg_display (MSG_netnotup); |
process_menu (MENU_yesno); |
process_menu (MENU_yesno); |
if (!yesno) |
if (!yesno) |
return 0; |
return 0; |
} |
} |
|
|
|
cd_dist_dir ("ftp"); |
|
|
|
/* Fill in final values for ftp_dir. */ |
|
strncat (ftp_dir, rels, STRSIZE-strlen(ftp_dir)); |
|
strcat (ftp_dir, "/"); |
|
strncat (ftp_dir, machine, STRSIZE-strlen(ftp_dir)); |
strncat (ftp_dir, ftp_prefix, STRSIZE-strlen(ftp_dir)); |
strncat (ftp_dir, ftp_prefix, STRSIZE-strlen(ftp_dir)); |
process_menu (MENU_ftpsource); |
process_menu (MENU_ftpsource); |
msg_prompt (MSG_distdir, dist_dir, dist_dir, STRSIZE, "ftp"); |
|
if (*dist_dir == '/') |
|
snprintf (realdir, STRSIZE, "/mnt%s", dist_dir); |
|
else |
|
snprintf (realdir, STRSIZE, "/mnt/%s", dist_dir); |
|
strcpy (dist_dir, realdir); |
|
run_prog ("/bin/mkdir %s", realdir); |
|
clean_dist_dir = 1; |
|
#ifndef DEBUG |
|
if (chdir(realdir)) { |
|
endwin(); |
|
(void)fprintf(stderr, msg_string(MSG_realdir), realdir); |
|
exit(1); |
|
} |
|
#else |
|
printf ("chdir (%s)\n", realdir); |
|
#endif |
|
|
|
list = dist_list; |
list = dist_list; |
endwin(); |
endwin(); |
while (*list) { |
while (list->name) { |
snprintf (filename, SSTRSIZE, *list, rels, dist_postfix); |
if (!list->getit) { |
|
list++; |
|
continue; |
|
} |
|
snprintf (filename, SSTRSIZE, list->name, rels, dist_postfix); |
if (strcmp ("ftp", ftp_user) == 0) |
if (strcmp ("ftp", ftp_user) == 0) |
ret = run_prog("/usr/bin/ftp -a ftp://%s/%s/%s", |
ret = run_prog("/usr/bin/ftp -a ftp://%s/%s/%s", |
ftp_host, ftp_dir, |
ftp_host, ftp_dir, |
Line 231 get_via_ftp (void) |
|
Line 232 get_via_ftp (void) |
|
endwin(); |
endwin(); |
} else |
} else |
list++; |
list++; |
|
|
} |
} |
puts (CL); /* Just to make sure. */ |
puts (CL); /* Just to make sure. */ |
wrefresh (stdscr); |
wrefresh (stdscr); |
#ifndef DEBUG |
#ifndef DEBUG |
chdir("/"); |
chdir("/"); /* back to current real root */ |
#endif |
#endif |
return 1; |
return 1; |
} |
} |
Line 243 get_via_ftp (void) |
|
Line 245 get_via_ftp (void) |
|
int |
int |
get_via_nfs(void) |
get_via_nfs(void) |
{ |
{ |
while (config_network ()) { |
while (!config_network ()) { |
msg_display (MSG_netnotup); |
msg_display (MSG_netnotup); |
process_menu (MENU_yesno); |
process_menu (MENU_yesno); |
if (!yesno) |
if (!yesno) |
Line 254 get_via_nfs(void) |
|
Line 256 get_via_nfs(void) |
|
process_menu (MENU_nfssource); |
process_menu (MENU_nfssource); |
|
|
/* Mount it */ |
/* Mount it */ |
while(!run_prog("/sbin/mount -t nfs %s:%s /mnt2", nfs_host, nfs_dir)) { |
while(run_prog("/sbin/mount -t nfs %s:%s /mnt2", nfs_host, nfs_dir)) { |
process_menu (MENU_nfsbadmount); |
process_menu (MENU_nfsbadmount); |
if (!yesno) |
if (!yesno) |
return 0; |
return 0; |
Line 262 get_via_nfs(void) |
|
Line 264 get_via_nfs(void) |
|
} |
} |
|
|
/* return location, don't clean... */ |
/* return location, don't clean... */ |
strcpy (dist_dir, "/mnt2"); |
strcpy (ext_dir, "/mnt2"); |
clean_dist_dir = 0; |
clean_dist_dir = 0; |
mnt2_mounted = 1; |
mnt2_mounted = 1; |
return 1; |
return 1; |
} |
} |
|
|
|
/* |
|
* Write the network config info the user entered via menus into the |
|
* config files in the target disk. Be careful not to lose any |
|
* information we don't immediately add back, in case the install |
|
* target is the currently-active root. |
|
*/ |
void |
void |
mnt_net_config(void) |
mnt_net_config(void) |
{ |
{ |
char ans [5] = "y"; |
char ans [5] = "y"; |
|
char ifconfig_fn [STRSIZE]; |
|
FILE *f; |
|
|
if (network_up) { |
if (network_up) { |
msg_prompt (MSG_mntnetconfig, ans, ans, 5); |
msg_prompt (MSG_mntnetconfig, ans, ans, 5); |
if (*ans == 'y') { |
if (*ans == 'y') { |
run_prog ("/bin/cp /etc/resolv.conf /mnt/etc"); |
|
run_prog ("echo %s > /mnt/etc/myname", net_host); |
/* If not running in target, copy resolv.conf there. */ |
run_prog ("echo %s %s >> /mnt/etc/hosts", net_ip, |
dup_file_into_target("/etc/resolv.conf"); |
net_host); |
/* |
run_prog ("echo %s > /mnt/etc/defaultdomain", |
* Add IPaddr/hostname to /etc/hosts. |
net_domain); |
* Be careful not to clobber any existing contents. |
run_prog ("echo %s netmask %s > /mnt/etc/ifconfig.%s", |
* Relies on ordered seach of /etc/hosts. XXX YP? |
net_ip, net_mask, net_dev); |
*/ |
run_prog ("echo %s > /mnt/etc/mygate", net_defroute); |
f = target_fopen("/etc/hosts", "a"); |
|
if (f != 0) { |
|
fprintf(f, msg_string(MSG_etc_hosts), |
|
net_ip, net_host, net_domain, |
|
net_host); |
|
fclose(f); |
|
} |
|
|
|
/* Write IPaddr and netmask to /etc/ifconfig.if[0-9] */ |
|
snprintf (ifconfig_fn, STRSIZE, |
|
"/etc/ifconfig.%s", net_dev); |
|
f = target_fopen(ifconfig_fn, "w"); |
|
if (f != 0) { |
|
fprintf(f, "%s netmask %s\n", |
|
net_ip, net_mask); |
|
fclose(f); |
|
} |
|
|
|
f = target_fopen("/etc/mygate", "w"); |
|
if (f != 0) { |
|
fprintf(f, "%s\n", net_defroute); |
|
fclose(f); |
|
} |
} |
} |
} |
} |
} |
} |