/* * Initialize pxe fs * */ static int pxe_fs_init(struct fs_info *fs) { (void)fs; /* drop the compile warning message */ /* Prepare for handling pxe interrupts */ pxe_init_isr(); /* This block size is actually arbitrary... */ fs->sector_shift = fs->block_shift = TFTP_BLOCKSIZE_LG2; fs->sector_size = fs->block_size = 1 << TFTP_BLOCKSIZE_LG2; /* Find the PXE stack */ if (pxe_init(false)) kaboom(); /* See if we also have a gPXE stack */ gpxe_init(); /* Network-specific initialization */ network_init(); /* Initialize network-card-specific idle handling */ pxe_idle_init(); /* Our name for the root */ strcpy(fs->cwd_name, "::"); return 0; }
int pxe_netif_open() { t_PXENV_UDP_OPEN *uo = (void *) pxe_command_buf; #ifdef NETIF_DEBUG printf("pxe_netif_open()\n"); #endif if (!pxe_inited) { if (pxe_init(0) != 0) return -1; pxe_inited = 1; } /* BI_ADD(&bi_netif, BTINFO_NETIF, sizeof(bi_netif)); */ bzero(uo, sizeof(*uo)); uo->src_ip = bootplayer.yip; pxe_call(PXENV_UDP_OPEN); if (uo->status != PXENV_STATUS_SUCCESS) { printf("\npxe_netif_open: PXENV_UDP_OPEN failed: 0x%x\n", uo->status); return -1; } bcopy(bootplayer.CAddr, desc.myea, ETHER_ADDR_LEN); bootmac = bootplayer.CAddr; /* * Since the PXE BIOS has already done DHCP, make sure we * don't reuse any of its transaction IDs. */ desc.xid = bootplayer.ident; return 0; }