Beispiel #1
0
int
fill_nfsinfo(struct mic_info *mic, int type, char *mount, char *server, char **nfsserver, char **dir)
{
	struct mbridge *br = NULL;
	char *nserver = NULL;
	char *ndir;

	if ((ndir = strchr(mount, ':')) != NULL) {
		*ndir = '\0';
		ndir++;

		if (server != NULL) {
			if (!strcmp(mount, server)) {
				display(PERROR, "NFS server argument specifies a different server than "
						"the target argument (%s : %s)\n", server, ndir);
				return 1;
			}
		}

		switch (mic->config.net.type) {
		case NETWORK_TYPE_STATPAIR:
			display(PWARN, "%s: Server %s may not be reachable if the interface "
				       "is not routed out of the host\n",
				        mic->name, mount);
			break;

		case NETWORK_TYPE_STATBRIDGE:
			if ((br = mpss_bridge_byname(mic->config.net.bridge, brlist)) == NULL)
				return 1;

			if (br->type == BRIDGE_TYPE_INT)
				display(PWARN, "%s: Server %s may not be reachable if the internal "
					       "bridge %s is not routed out of the host\n",
					        mic->name, mount, br->name);

			break;

		case NETWORK_TYPE_BRIDGE:
			break;
		}

		nserver = mount;
	} else {
		ndir = mount;

		switch (mic->config.net.type) {
		case NETWORK_TYPE_STATPAIR:
			if (server != NULL) {
				display(PWARN, "%s: Server %s may not be reachable if the interface "
					       "is not routed out of the host\n",
					        mic->name, mount);
				nserver = server;
			} else {
				nserver = mic->config.net.hostIP;
			}
			break;

		case NETWORK_TYPE_STATBRIDGE:
			if ((br = mpss_bridge_byname(mic->config.net.bridge, brlist)) == NULL)
				return 1;

			if ((br->type == BRIDGE_TYPE_INT) && (server != NULL))
				display(PWARN, "%s: Server %s may not be reachable if the internal "
					       "bridge %s is not routed out of the host\n",
					        mic->name, server, br->name);

			nserver = server;
			break;

		case NETWORK_TYPE_BRIDGE:
			if (server == NULL) {
				display(PERROR, "%s: DHCP requires a server to be " "specified\n",
						mic->name);
				return 1;
			}

			nserver = server;
		}
	}

	*nfsserver = nserver;
	*dir = ndir;
	return 0;
}
Beispiel #2
0
/*
 * Display current configuration parameters in a human readable format.
 */
void
display_config(struct mic_info *miclist)
{
	struct mic_info *mic;
	struct mbridge *br;
	char netmask[16];
	char micmac[64];
	char hostmac[64];
	int err = 0;
	int ret = 0;

	putchar('\n');
	mic = miclist;
	while (mic != NULL) {
		printf("%s:\n", mic->name);
		printf("=============================================================\n");

		if ((ret = micctrl_parse_config(&mpssenv, mic, &brlist, &mpssperr, PINFO))) {
			err++;

			if (ret < MIC_PARSE_ERRORS) {
				display(PERROR, "Not configured\n");
				goto nextmic;
			}
		}

		printf("    Config Version: %d.%d\n\n", (mic->config.version >> 16) & 0xff, mic->config.version & 0xff);
		printf("    Linux Kernel:   %s\n", check_set(mic->config.boot.osimage));
		printf("    Map File:       %s\n", check_set(mic->config.boot.systemmap));
		printf("    Family:         %s\n", family_to_str(mic->config.family));
		printf("    MPSSVersion:    %s\n", mpss_version_to_str(mic->config.mpss_version));

		printf("    BootOnStart:    %s\n",
			(mic->config.boot.onstart == TRUE)? "Enabled" : "Disabled");
		printf("    Shutdowntimeout: %s seconds\n", check_set(mic->config.misc.shutdowntimeout));

		printf("\n    ExtraCommandLine: %s\n", check_set(mic->config.boot.extraCmdline));
		printf("    PowerManagment: %s\n", check_set(mic->config.boot.pm));

		printf("\n    ");
		report_rootdev(mic);

		get_mac_strings(mic, micmac, hostmac, 64);

		switch (mic->config.net.type) {
		case NETWORK_TYPE_STATPAIR:
			printf("\n    Network:       Static Pair\n");
			printf("        Hostname:  %s\n", check_set(mic->config.net.hostname));
			printf("        MIC IP:    %s\n", check_set(mic->config.net.micIP));
			printf("        Host IP:   %s\n", check_set(mic->config.net.hostIP));

			if (mic->config.net.prefix == NULL)
				mic->config.net.prefix = "24";

			mpssnet_genmask(mic->config.net.prefix, netmask);
			printf("        Net Bits:  %s\n", check_set(mic->config.net.prefix));
			printf("        NetMask:   %s\n", netmask);

			if (mic->config.net.mtu)
				printf("        MtuSize:   %s\n", check_set(mic->config.net.mtu));

			break;

		case NETWORK_TYPE_STATBRIDGE:
			printf("\n    Network:       Static bridge %s\n", check_set(mic->config.net.bridge));
			printf("        MIC IP:    %s\n", check_set(mic->config.net.micIP));

			if ((br = mpss_bridge_byname(mic->config.net.bridge, brlist)) != NULL) {
				printf("        Host IP:   %s\n", check_set(br->ip));

				mpssnet_genmask(br->prefix, netmask);
				printf("        Net Bits:  %s\n", check_set(br->prefix));
				printf("        NetMask:   %s\n", netmask);
				printf("        MtuSize:   %s\n", check_set(br->mtu));
			}

			printf("        Hostname:  %s\n", check_set(mic->config.net.hostname));
			break;
		case NETWORK_TYPE_BRIDGE:
			printf("\n    Network:       Bridge %s with DHCP\n", check_set(mic->config.net.bridge));

			if ((br = mpss_bridge_byname(mic->config.net.bridge, brlist)) != NULL) {
				mpssnet_genmask(br->prefix, netmask);
				printf("        Net Bits:  %s\n", check_set(br->prefix));
				printf("        NetMask:   %s\n", netmask);
				printf("        MtuSize:   %s\n", check_set(br->mtu));
			}

			printf("        Hostname:  %s\n", check_set(mic->config.net.hostname));
			break;
		default:
			printf("%s: Unknown network configuration type\n", mic->name);
		}
		printf("        MIC MAC:   %s\n", micmac);
		printf("        Host MAC:  %s\n", hostmac);

		printf("\n    ");
		display_ldap(mic, TRUE);
		printf("     ");
		display_nis(mic, TRUE);

		printf("\n    Cgroup:\n");
		printf("        Memory:    %s\n", (mic->config.cgroup.memory == TRUE)? "Enabled" : "Disabled");

		printf("\n    Console:        %s\n", check_set(mic->config.boot.console));

		printf("    VerboseLogging: %s\n",
			(mic->config.boot.verbose == TRUE)? "Enabled" : "Disabled");

		if (mic->config.misc.crashdumpDir != NULL) 
			printf("    CrashDump:      %s %sGB\n", check_set(mic->config.misc.crashdumpDir),
								check_set(mic->config.misc.crashdumplimitgb));
		else
			printf("    CrashDump:      Not Enabled\n");
nextmic:
		putchar('\n');
		mic = mic->next;
	}

	exit(err);
}
Beispiel #3
0
static char *
get_rootdev(struct mic_info *mic, struct mbridge *brlist)
{
	char *cmdline = NULL;
	struct mbridge *br;
	char mtu[32];
	char netmask[32];
	char *netbits;

	switch (mic->config.rootdev.type) {
	case ROOT_TYPE_RAMFS:
	case ROOT_TYPE_STATICRAMFS:
		if ((cmdline = malloc(strlen("root=ramfs") + 1)) == NULL)
			return NULL;

		strcpy(cmdline, "root=ramfs");
		break;
	case ROOT_TYPE_PFS:
		if ((cmdline = malloc(strlen("root=/dev/vda") + 1)) == NULL)
			return NULL;
		strcpy(cmdline, "root=/dev/vda");
		break;

	case ROOT_TYPE_NFS:
	case ROOT_TYPE_SPLITNFS:
		if ((br = mpss_bridge_byname(mic->config.net.bridge, brlist)) != NULL) {
			if (br->mtu)
				snprintf(mtu, 31, " mtu=%s", br->mtu);
			else
				strcpy(mtu, " mtu=24");

			if (br->prefix)
				netbits = br->prefix;
			else
				netbits = "24";

		} else {
			netbits = "24";
			mtu[0] = '\0';
		}

		mpssnet_genmask(netbits, netmask);

		if ((cmdline = malloc(strlen(
			"root=nfs: ip=XXX.XXX.XXX.XXX hwaddr=00:00:00:00:00:00 netmask=ffffffff "
			"mtu=XXXXXX   ") + strlen(mic->config.rootdev.target))) == NULL)
			return NULL;


		sprintf(cmdline, "root=nfs:%s ip=%s netmask=%s %s", mic->config.rootdev.target,
				 mic->config.net.micIP, netmask, mtu);

		if (mic->config.net.hostMac > MIC_MAC_RANDOM) {
			strcat(cmdline, " hwaddr=");
			strcat(cmdline, mic->config.net.micMac);
		}

		break;
	}

	return cmdline;
}