 +		
 +		printf(".");
 +
-+		boot_what_p->type = 0;
++		boot_what = (boot_what_t *)boot_info->data;
++		boot_what->type = 0;
 +
 +		length = sizeof(buffer);
 +
 +		/* Wait up to 10 seconds(-ish) for a response */
-+		rc = get_response(my_ip, buffer, &length, 10 * CLK_TCK);
++		rc = get_response(my_ip, boot_info, &length, 10 * CLK_TCK);
 +		if (rc != PXENV_STATUS_SUCCESS && rc != PXENV_STATUS_FAILURE) {
 +			printf("\n");
 +			return rc;

+	used = strlen(new_initrd);
+
+	p = new_initrd + used;
+	file = strtok(p, ",");
+	while(file) {
+		new_file = mangle_name(boss_name, file);
+		if ((used + strlen(new_file)) >= length) {
+			/* plus 1 for comma */
+			length = used + strlen(new_file) + 1;
+			/* plus 1 for null */
+			t = realloc(new_initrd, length + 1);
+			if (t == NULL) {
+				if (new_initrd)
+					free(new_initrd);
+				return NULL;
+			}
+			new_initrd = t;
+			p = new_initrd + used;
+		}
+
+		/*start after the "initrd=" */
+		sprintf(p, "%s%s", 
+		        new_initrd[7] ? "," : "",
+		        new_file);
+
+		p += strlen(new_file);
+		free(new_file);
+
+		used = p - new_initrd;
+
+		file = strtok(NULL, ",");
+	}
+
+	return new_initrd;

+			printf(" ok\n");
+		}
+
+		switch (boot_what->type) {
+			case BIBOOTWHAT_TYPE_REBOOT:
+				printf("Rebooting...\n");
+				syslinux_reboot(0);
+				break;
+			case BIBOOTWHAT_TYPE_PART:
+				return chain_boot("hd0", boot_what->what.partition);
+				break;
+			case BIBOOTWHAT_TYPE_MFS:
+				return kernel_boot(boss_name, boot_what->what.mfs,
+				            boot_what->cmdline);
+				break;
+			case BIBOOTWHAT_TYPE_AUTO:
+				printf("query: will query again\n");
+				break;
+			case BIBOOTWHAT_TYPE_SYSID:
+				printf("request to boot partition type 0x%02x not supported\n",
+						boot_what->what.sysid);
+				break;
+		}
+
