Files
Arquivotheca.SunOS-4.1.4/usr.etc/suninstall/host_form.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

869 lines
22 KiB
C

#ifndef lint
#ifdef SunB1
#ident "@(#)host_form.c 1.1 94/10/31 SMI; SunOS MLS";
#else
#ident "@(#)host_form.c 1.1 94/10/31 SMI";
#endif /* SunB1 */
#endif lint
/*
* Copyright (c) 1990 Sun Microsystems, Inc.
*/
/*
* Name: host_form.c
*
* Description: This file contains all the routines for dealing
* with a host form.
*
* This implementation assumes no more than two ethernet
* interfaces. This is demonstrably wrong and should be fixed.
*/
#include "host_impl.h"
/*
* Local functions:
*/
static int ether();
static int inet_addr();
#ifdef SunB1
static int set_ip0_maxlab();
static int set_ip0_minlab();
static int set_ip1_maxlab();
static int set_ip1_minlab();
#endif /* SunB1 */
static int sys_dataless();
static int sys_not_dataless();
static int yp_sel();
static int last_ether;
/*
* External functions:
*/
extern char * sprintf();
/*
* Name: create_host_form()
*
* Description: Create a HOST form. Uses information in 'sys_p'
* to create the form.
*/
form *
create_host_form(sys_p)
sys_info * sys_p;
{
form_button * button_p; /* ptr to button */
int dummy; /* dummy parameter */
form_field * field_p; /* ptr to field */
form * form_p; /* pointer to HOST form */
form_radio * radio_p; /* ptr to radio panel */
menu_coord x, y; /* scratch menu coordinates */
int i; /* scratch var */
static pointer params[2]; /* params for menu functions */
init_menu();
form_p = create_form(PFI_NULL, ACTIVE, "HOST FORM");
params[0] = (pointer) form_p;
params[1] = (pointer) sys_p;
/*
* Workstation information section. This section starts on
* line 'y'. The objects in this section line up on 'x'.
*/
y = 2;
x = 6;
(void) add_menu_string((pointer) form_p, ACTIVE, y, 1,
ATTR_NORMAL, "Workstation Information :");
y++;
field_p = add_form_field(form_p, PFI_NULL,
ACTIVE, CP_NULL, y, x + 7, 0,
sys_p->hostname0, sizeof(sys_p->hostname0),
lex_no_ws, PFI_NULL, PTR_NULL,
ckf_empty, PTR_NULL);
(void) add_menu_string((pointer) field_p, ACTIVE, y, x,
ATTR_NORMAL, "Name :");
y++;
radio_p = add_form_radio(form_p, PFI_NULL,
ACTIVE, CP_NULL, &sys_p->sys_type,
PFI_NULL, PTR_NULL,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) radio_p, ACTIVE, y, x,
ATTR_NORMAL, "Type :");
x += 7;
button_p = add_form_button(radio_p, PFI_NULL,
ACTIVE, CP_NULL,
y, x, SYS_STANDALONE,
sys_not_dataless, (pointer) form_p);
(void) add_menu_string((pointer) button_p, ACTIVE, y, x + 1,
ATTR_NORMAL, "[standalone]");
x += 14;
button_p = add_form_button(radio_p, PFI_NULL,
ACTIVE, CP_NULL,
y, x, SYS_SERVER,
sys_not_dataless, (pointer) form_p);
(void) add_menu_string((pointer) button_p, ACTIVE, y, x + 1,
ATTR_NORMAL, "[server]");
x += 10;
button_p = add_form_button(radio_p, PFI_NULL,
ACTIVE, CP_NULL,
y, x, SYS_DATALESS,
sys_dataless, (pointer) params);
(void) add_menu_string((pointer) button_p, ACTIVE, y, x + 1,
ATTR_NORMAL, "[dataless]");
x = 6; /* restore column line up */
y++;
if (sys_p->sys_type == SYS_DATALESS)
dummy = ACTIVE;
else
dummy = NOT_ACTIVE;
field_p = add_form_field(form_p, PFI_NULL,
dummy, "serv", y, x + 14, 0,
sys_p->server, sizeof(sys_p->server),
lex_no_ws, PFI_NULL, PTR_NULL,
ckf_empty, PTR_NULL);
(void) add_menu_string((pointer) field_p, dummy, y, x,
ATTR_NORMAL, "Server name :");
y++;
field_p = add_form_field(form_p, PFI_NULL,
dummy, "svip", y, x + 26, 0,
sys_p->server_ip, sizeof(sys_p->server_ip),
lex_no_ws, PFI_NULL, PTR_NULL,
ckf_inet_addr, PTR_NULL);
(void) add_menu_string((pointer) field_p, dummy, y, x,
ATTR_NORMAL, "Server Internet Address :");
y++;
field_p = add_form_field(form_p, PFI_NULL,
dummy, "exec", y, x + 36, 0,
sys_p->exec_path,
sizeof(sys_p->exec_path),
lex_no_ws, PFI_NULL, PTR_NULL,
ckf_empty, PTR_NULL);
(void) add_menu_string((pointer) field_p, dummy, y, x,
ATTR_NORMAL,
"Path of the executables on server :");
y++;
field_p = add_form_field(form_p, PFI_NULL,
dummy, "kvm", y, x + 43, 0,
sys_p->kvm_path,
sizeof(sys_p->kvm_path),
lex_no_ws, PFI_NULL, PTR_NULL,
ckf_empty, PTR_NULL);
(void) add_menu_string((pointer) field_p, dummy, y, x,
ATTR_NORMAL,
"Path of the kernel executables on server :");
/*
* Network information section. This section starts on
* line 'y'. The objects in this section line up on 'x'.
*/
#ifdef SunB1
y++;
#else
y += 2;
#endif /* SunB1 */
x = 6;
(void) add_menu_string((pointer) form_p, ACTIVE, y, 1,
ATTR_NORMAL, "Network Information :");
y++;
radio_p = add_form_radio(form_p, PFI_NULL,
ACTIVE, "ether_select", &sys_p->ether_type,
PFI_NULL, PTR_NULL,
ether, (pointer) params);
(void) add_menu_string((pointer) radio_p, ACTIVE, y, x,
ATTR_NORMAL, "Ethernet Interface :");
x += 21;
button_p = add_form_button(radio_p, PFI_NULL,
ACTIVE, CP_NULL,
y, x, ETHER_NONE,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) button_p, ACTIVE, y, x + 1,
ATTR_NORMAL, "[none]");
x += 8;
last_ether = 0;
for (i = 0; i < MAX_ETHER_INTERFACES; i++) {
if (*sys_p->ether_namex(i)) {
char *buf = (char *) menu_alloc(10);
last_ether = i;
dummy = sys_p->ether_type == ETHER_0+i ? ACTIVE : NOT_ACTIVE;
button_p = add_form_button(radio_p, PFI_NULL,
ACTIVE, CP_NULL,
y, x, ETHER_0+i,
PFI_NULL, PTR_NULL);
(void) sprintf(buf, "[%s]", sys_p->ether_namex(i));
(void) add_menu_string((pointer) button_p, ACTIVE, y, x + 1,
ATTR_NORMAL, buf);
x += strlen(buf) + 2;
}
}
y++;
field_p = add_form_field(form_p, PFI_NULL, NOT_ACTIVE,
"iname", y, 27, 0,
sys_p->hostnamex(i),
sizeof(sys_p->hostnamex(i)),
lex_no_ws, PFI_NULL, PTR_NULL,
ckf_empty, PTR_NULL);
(void) add_menu_string((pointer) field_p, NOT_ACTIVE, y, 6,
ATTR_NORMAL, "Internet Name :");
y++;
field_p = add_form_field(form_p, PFI_NULL, NOT_ACTIVE,
"iaddr", y, 27, 0,
sys_p->ipx(i),
sizeof(sys_p->ipx(i)),
lex_no_ws, PFI_NULL, PTR_NULL,
inet_addr, (pointer) params);
(void) add_menu_string((pointer) field_p, NOT_ACTIVE, y, 6,
ATTR_NORMAL, "Internet Address :");
#ifdef SunB1
y++;
radio_p = add_form_radio(form_p, PFI_NULL,
dummy, "ip0_minlab", &sys_p->ip0_minlab,
PFI_NULL, PTR_NULL,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) radio_p, dummy, y, x,
ATTR_NORMAL, "IP 0 Minimum Label :");
x += 21;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_SYS_LOW,
set_ip0_minlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[system_low]");
x += 14;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_SYS_HIGH,
set_ip0_minlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[system_high]");
x += 15;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_OTHER,
set_ip0_minlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[other]");
x = 6; /* restore column line up */
y++;
radio_p = add_form_radio(form_p, PFI_NULL,
dummy, "ip0_maxlab", &sys_p->ip0_maxlab,
PFI_NULL, PTR_NULL,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) radio_p, dummy, y, x,
ATTR_NORMAL, "IP 0 Maximum Label :");
x += 21;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_SYS_LOW,
set_ip0_maxlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[system_low]");
x += 14;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_SYS_HIGH,
set_ip0_maxlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[system_high]");
x += 15;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_OTHER,
set_ip0_maxlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[other]");
x = 6; /* restore column line up */
#endif /* SunB1 */
#ifdef SunB1
y++;
radio_p = add_form_radio(form_p, PFI_NULL,
dummy, "ip1_minlab", &sys_p->ip1_minlab,
PFI_NULL, PTR_NULL,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) radio_p, dummy, y, x,
ATTR_NORMAL, "IP 1 Minimum Label :");
x += 21;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_SYS_LOW,
set_ip1_minlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[system_low]");
x += 14;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_SYS_HIGH,
set_ip1_minlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[system_high]");
x += 15;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_OTHER,
set_ip1_minlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[other]");
x = 6; /* restore column line up */
y++;
radio_p = add_form_radio(form_p, PFI_NULL,
dummy, "ip1_maxlab", &sys_p->ip1_maxlab,
PFI_NULL, PTR_NULL,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) radio_p, dummy, y, x,
ATTR_NORMAL, "IP 1 Maximum Label :");
x += 21;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_SYS_LOW,
set_ip1_maxlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[system_low]");
x += 14;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_SYS_HIGH,
set_ip1_maxlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[system_high]");
x += 15;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, LAB_OTHER,
set_ip1_maxlab, (pointer) params);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[other]");
x = 6; /* restore column line up */
#endif /* SunB1 */
y++;
x = 6;
dummy = sys_p->ether_type == ETHER_NONE ? NOT_ACTIVE : ACTIVE;
radio_p = add_form_radio(form_p, PFI_NULL,
dummy, "yp", &sys_p->yp_type,
PFI_NULL, PTR_NULL,
yp_sel, (pointer) params);
(void) add_menu_string((pointer) radio_p, dummy, y, x,
ATTR_NORMAL, "NIS Type :");
x += 21;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, YP_NONE,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[none]");
x += 8;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, YP_MASTER,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[master]");
x += 10;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, YP_SLAVE,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[slave]");
x += 9;
button_p = add_form_button(radio_p, PFI_NULL,
dummy, CP_NULL,
y, x, YP_CLIENT,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) button_p, dummy, y, x + 1,
ATTR_NORMAL, "[client]");
x = 6; /* restore column line up */
y++;
dummy = dummy && sys_p->yp_type != YP_NONE ? ACTIVE : NOT_ACTIVE;
field_p = add_form_field(form_p, PFI_NULL,
dummy, "domain", y, x + 21, 0,
sys_p->domainname, sizeof(sys_p->domainname),
lex_no_ws, PFI_NULL, PTR_NULL,
ckf_empty, PTR_NULL);
(void) add_menu_string((pointer) field_p, dummy, y, x,
ATTR_NORMAL, "Domain name :");
ether(params);
/*
* Miscellaneous information section. This section starts on
* line 'y'. The objects in this section line up on 'x'.
*/
y += 2;
x = 6;
(void) add_menu_string((pointer) form_p, ACTIVE, y, 1,
ATTR_NORMAL, "Misc Information :");
#ifdef UPGRADE_FLAG
y++;
radio_p = add_form_radio(form_p, PFI_NULL,
ACTIVE, CP_NULL, &sys_p->op_type,
PFI_NULL, PTR_NULL,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) radio_p, ACTIVE, y, x,
ATTR_NORMAL, "Operation type :");
x += 32;
button_p = add_form_button(radio_p, PFI_NULL,
ACTIVE, CP_NULL,
y, x, OP_INSTALL,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) button_p, ACTIVE, y, x + 1,
ATTR_NORMAL, "[install]");
x += 11;
button_p = add_form_button(radio_p, PFI_NULL,
ACTIVE, CP_NULL,
y, x, OP_UPGRADE,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) button_p, ACTIVE, y, x + 1,
ATTR_NORMAL, "[upgrade]");
x = 6; /* restore column line up */
#endif UPGRADE_FLAG
y++;
radio_p = add_form_radio(form_p, PFI_NULL,
ACTIVE, CP_NULL, &sys_p->reboot,
PFI_NULL, PTR_NULL,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) radio_p, ACTIVE, y, x,
ATTR_NORMAL, "Reboot after completed :");
x += 32;
button_p = add_form_button(radio_p, PFI_NULL,
ACTIVE, CP_NULL,
y, x, ANS_YES,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) button_p, ACTIVE, y, x + 1,
ATTR_NORMAL, "[y]");
x += 5;
button_p = add_form_button(radio_p, PFI_NULL,
ACTIVE, CP_NULL,
y, x, ANS_NO,
PFI_NULL, PTR_NULL);
(void) add_menu_string((pointer) button_p, ACTIVE, y, x + 1,
ATTR_NORMAL, "[n]");
(void) add_finish_obj((pointer) form_p,
PFI_NULL, PTR_NULL,
PFI_NULL, PTR_NULL,
PFI_NULL, PTR_NULL);
return(form_p);
} /* end create_host_form() */
static int
inet_addr(params, field_p)
pointer params[2];
char* field_p;
{
form *form_p;
sys_info *sys_p;
form_p = (form*) params[0];
sys_p = (sys_info*) params[1];
if (ckf_inet_addr((pointer) 0, field_p) == 0) {
return 0;
}
if (! _menu_forward && ! _menu_backward &&
(sys_p->ether_type - ETHER_0) != last_ether) {
set_form_map(form_p,
(pointer) find_form_radio(form_p,"ether_select"));
return(menu_goto_obj());
}
return 1;
}
/*
* Name: ether()
*
* Description: Select an ethernet for configuration.
*/
static int
ether(params)
pointer params[];
{
form * form_p;
sys_info * sys_p;
int i;
form_p = (form *) params[0];
sys_p = (sys_info *) params[1];
if (sys_p->ether_type == ETHER_0 || sys_p->ether_type == ETHER_NONE) {
/* turn off intername name request */
off_form_field(find_form_field(form_p, "iname"));
}
if (sys_p->ether_type == ETHER_NONE) {
off_form_field(find_form_field(form_p, "iaddr"));
off_form_radio(find_form_radio(form_p, "yp"));
off_form_field(find_form_field(form_p, "domain"));
/*
* Clean up the data structure since there aren't
* any ethernet interfaces.
*/
sys_p->yp_type = YP_NONE;
for (i = 0; i < MAX_ETHER_INTERFACES; i++) {
bzero(sys_p->ipx(i),sizeof(sys_p->ipx(i)));
bzero(sys_p->ether_namex(i),
sizeof(sys_p->ether_namex(i)));
if (i != 0)
bzero(sys_p->hostnamex(i),sizeof(sys_p->hostnamex(i)));
#ifdef SunB1
sys_p->ethers[i].ip_minlab = 0;
sys_p->ethers[i].ip_maxlab = 0;
#endif SunB1
}
} else {
form_field* ff;
int i = sys_p->ether_type - ETHER_0;
if (sys_p->ether_type != ETHER_0) {
ff = find_form_field(form_p, "iname");
ff->ff_data = sys_p->hostnamex(i);
on_form_field(ff);
}
ff = find_form_field(form_p, "iaddr");
ff->ff_data = sys_p->ipx(i);
on_form_field(ff);
on_form_radio(find_form_radio(form_p, "yp"));
if (sys_p->yp_type != YP_NONE) {
on_form_field(find_form_field(form_p, "domain"));
}
}
/*
** If CTRL-F is used here (_menu_forward == 1), then skip the
** internet specifications
*/
if (_menu_forward) {
set_form_map(form_p, (pointer) find_form_radio(form_p,"yp"));
return(menu_goto_obj());
}
return(1);
}
#ifdef SunB1
/*
* Name: set_ip0_maxlab()
*
* Description: The user wants to set the maximum label for IP 0 so
* do all the necessary checks.
*/
static int
set_ip0_maxlab(params)
pointer params[];
{
form * form_p; /* pointer to HOST form */
form_radio * radio_p; /* ptr to ip0_???lab radio */
sys_info * sys_p; /* pointer to system info */
form_p = (form *) params[0];
sys_p = (sys_info *) params[1];
/*
* Minimum label is system_high so we cannot set maxlab to
* anything but system_high
*/
if (sys_p->ip0_minlab == LAB_SYS_HIGH &&
sys_p->ip0_maxlab != LAB_SYS_HIGH) {
radio_p = find_form_radio(form_p, "ip0_maxlab");
off_form_radio(radio_p);
sys_p->ip0_maxlab = LAB_SYS_HIGH;
on_form_radio(radio_p);
}
/*
* We set the maximum to system_low so the minimum must be set
* to system_low.
*/
else if (sys_p->ip0_maxlab == LAB_SYS_LOW) {
radio_p = find_form_radio(form_p, "ip0_minlab");
off_form_radio(radio_p);
sys_p->ip0_minlab = LAB_SYS_LOW;
on_form_radio(radio_p);
}
return(1);
} /* end set_ip0_maxlab() */
/*
* Name: set_ip0_minlab()
*
* Description: The user wants to set the minimum label for IP 0
* so do all the necessary checks.
*/
static int
set_ip0_minlab(params)
pointer params[];
{
form * form_p; /* pointer to HOST form */
form_radio * radio_p; /* ptr to ip0_???lab radio */
sys_info * sys_p; /* pointer to system info */
form_p = (form *) params[0];
sys_p = (sys_info *) params[1];
/*
* Maximum label is system_low so we cannot set minlab to
* anything but system_low.
*/
if (sys_p->ip0_maxlab == LAB_SYS_LOW &&
sys_p->ip0_minlab != LAB_SYS_LOW) {
radio_p = find_form_radio(form_p, "ip0_minlab");
off_form_radio(radio_p);
sys_p->ip0_minlab = LAB_SYS_LOW;
on_form_radio(radio_p);
}
/*
* We set the minimum to system_high so the maximum must be set
* to system_high.
*/
else if (sys_p->ip0_minlab == LAB_SYS_HIGH) {
radio_p = find_form_radio(form_p, "ip0_maxlab");
off_form_radio(radio_p);
sys_p->ip0_maxlab = LAB_SYS_HIGH;
on_form_radio(radio_p);
}
return(1);
} /* end set_ip0_minlab() */
/*
* Name: set_ip1_maxlab()
*
* Description: The user wants to set the maximum label for IP 1
* so do all the necessary checks.
*/
static int
set_ip1_maxlab(params)
pointer params[];
{
form * form_p; /* pointer to HOST form */
form_radio * radio_p; /* ptr to ip1_???lab radio */
sys_info * sys_p; /* pointer to system info */
form_p = (form *) params[0];
sys_p = (sys_info *) params[1];
/*
* Minimum label is system_high so we cannot set maxlab to
* anything but system_high
*/
if (sys_p->ip1_minlab == LAB_SYS_HIGH &&
sys_p->ip1_maxlab != LAB_SYS_HIGH) {
radio_p = find_form_radio(form_p, "ip1_maxlab");
off_form_radio(radio_p);
sys_p->ip1_maxlab = LAB_SYS_HIGH;
on_form_radio(radio_p);
}
/*
* We set the maximum to system_low so the minimum must be set
* to system_low.
*/
else if (sys_p->ip1_maxlab == LAB_SYS_LOW) {
radio_p = find_form_radio(form_p, "ip1_minlab");
off_form_radio(radio_p);
sys_p->ip1_minlab = LAB_SYS_LOW;
on_form_radio(radio_p);
}
return(1);
} /* end set_ip1_maxlab() */
/*
* Name: set_ip1_minlab()
*
* Description: The user wants to set the minimum label for IP 1
* so do all the necessary checks.
*/
static int
set_ip1_minlab(params)
pointer params[];
{
form * form_p; /* pointer to HOST form */
form_radio * radio_p; /* ptr to ip1_???lab radio */
sys_info * sys_p; /* pointer to system info */
form_p = (form *) params[0];
sys_p = (sys_info *) params[1];
/*
* Maximum label is system_low so we cannot set minlab to
* anything but system_low.
*/
if (sys_p->ip1_maxlab == LAB_SYS_LOW &&
sys_p->ip1_minlab != LAB_SYS_LOW) {
radio_p = find_form_radio(form_p, "ip1_minlab");
off_form_radio(radio_p);
sys_p->ip1_minlab = LAB_SYS_LOW;
on_form_radio(radio_p);
}
/*
* We set the minimum to system_high so the maximum must be set
* to system_high.
*/
else if (sys_p->ip1_minlab == LAB_SYS_HIGH) {
radio_p = find_form_radio(form_p, "ip1_maxlab");
off_form_radio(radio_p);
sys_p->ip1_maxlab = LAB_SYS_HIGH;
on_form_radio(radio_p);
}
return(1);
} /* end set_ip1_minlab() */
#endif /* SunB1 */
/*
* Name: sys_dataless()
*
* Description: The user wants to configure a dataless system
* so turn on the fields for the server's information.
*/
static int
sys_dataless(params)
pointer params[];
{
form * form_p;
sys_info * sys_p;
char buf[MEDIUM_STR];
form_p = (form *) params[0];
sys_p = (sys_info *) params[1];
if (strlen(sys_p->exec_path) == 0)
(void) sprintf(sys_p->exec_path, "/export/exec/%s",
aprid_to_aid(sys_p->arch_str, buf));
if (strlen(sys_p->kvm_path) == 0)
(void) sprintf(sys_p->kvm_path, "/export/exec/kvm/%s",
aprid_to_iid(sys_p->arch_str, buf));
on_form_field(find_form_field(form_p, "serv"));
on_form_field(find_form_field(form_p, "svip"));
on_form_field(find_form_field(form_p, "exec"));
on_form_field(find_form_field(form_p, "kvm"));
return(1);
} /* end sys_dataless() */
/*
* Name: sys_not_dataless()
*
* Description: The user configured a system other than dataless
* so turn off the fields for the server's information.
*/
static int
sys_not_dataless(form_p)
form * form_p;
{
off_form_field(find_form_field(form_p, "serv"));
off_form_field(find_form_field(form_p, "svip"));
off_form_field(find_form_field(form_p, "exec"));
off_form_field(find_form_field(form_p, "kvm"));
return(1);
} /* end sys_not_dataless() */
/*
* Name: yp_sel()
*
* A button on the NIS field has been pushed
*/
static int
yp_sel(params)
pointer params[];
{
form* form_p = (form*) params[0];
sys_info* sys_p = (sys_info*) params[1];
if (sys_p->yp_type == YP_NONE) {
off_form_field(find_form_field(form_p, "domain"));
} else {
on_form_field(find_form_field(form_p, "domain"));
}
if (_menu_backward) {
set_form_map(form_p, find_form_radio(form_p,"ether_select"));
return menu_goto_obj();
}
return 1;
}