 +	
 +	printf("Requesting bootinfo data from %s...", boss_name);
 +	while(1) {
-+		rc = send_request(boss_ip, &boot_info);
++		rc = send_request(boss_ip, boot_info);
 +		if (rc != PXENV_STATUS_SUCCESS && rc != PXENV_STATUS_FAILURE) {
 +			printf("\n");
 +			return rc;

+			printf(" ok\n");
+		}
+
+		switch (boot_what_p->type) {
+			case BIBOOTWHAT_TYPE_REBOOT:
+				printf("Rebooting...\n");
+				syslinux_reboot(0);
+				break;
+			case BIBOOTWHAT_TYPE_PART:
+				return chain_boot("hd0", boot_what_p->what.partition);
+				break;
+			case BIBOOTWHAT_TYPE_MFS:
+				return kernel_boot(boss_name, boot_what_p->what.mfs,
+				            boot_what_p->cmdline);
+				break;
+			case BIBOOTWHAT_TYPE_AUTO:
+				printf("query: will query again\n");
+				break;
+		}
+

+
+	free(dhcpdata);
+
+	memset(buffer, 0, sizeof(buffer));
+	boot_info->version = BIVERSION_CURRENT;
+	boot_info->opcode  = BIOPCODE_BOOTWHAT_REQUEST;
+
+	udp_close();
+	rc = udp_open(my_ip);
