Lines Matching refs:fn_ip

84 static int dhcp(struct filename_ip *fn_ip, int retries)  in dhcp()  argument
100 fn_ip->ip_version = 4; in dhcp()
101 rc = dhcpv4(NULL, fn_ip); in dhcp()
103 fn_ip->ip_version = 6; in dhcp()
104 set_ipv6_address(fn_ip->fd, 0); in dhcp()
105 rc = dhcpv6(NULL, fn_ip); in dhcp()
107 memcpy(&fn_ip->own_ip6, get_ipv6_address(), 16); in dhcp()
158 static int net_init(filename_ip_t *fn_ip) in net_init() argument
162 memset(fn_ip, 0, sizeof(filename_ip_t)); in net_init()
169 fn_ip->fd = rc; in net_init()
177 rc = dhcp(fn_ip, DEFAULT_BOOT_RETRIES); in net_init()
179 if (fn_ip->ip_version == 4) { in net_init()
180 set_ipv4_address(fn_ip->own_ip); in net_init()
187 if (fn_ip->ip_version == 4) { in net_init()
189 (fn_ip->own_ip >> 24) & 0xFF, (fn_ip->own_ip >> 16) & 0xFF, in net_init()
190 (fn_ip->own_ip >> 8) & 0xFF, fn_ip->own_ip & 0xFF); in net_init()
191 } else if (fn_ip->ip_version == 6) { in net_init()
193 ipv6_to_str(fn_ip->own_ip6.addr, ip6_str); in net_init()
199 (fn_ip->server_ip >> 24) & 0xFF, (fn_ip->server_ip >> 16) & 0xFF, in net_init()
200 (fn_ip->server_ip >> 8) & 0xFF, fn_ip->server_ip & 0xFF); in net_init()
209 if (fn_ip->ip_version == 4) { in net_init()
211 (fn_ip->server_ip >> 24) & 0xFF, (fn_ip->server_ip >> 16) & 0xFF, in net_init()
212 (fn_ip->server_ip >> 8) & 0xFF, fn_ip->server_ip & 0xFF); in net_init()
213 } else if (fn_ip->ip_version == 6) { in net_init()
215 ipv6_to_str(fn_ip->server_ip6.addr, ip6_str); in net_init()
219 if (strlen(fn_ip->filename) > 0) { in net_init()
220 printf(" Bootfile name: '%s'\n", fn_ip->filename); in net_init()
226 static void net_release(filename_ip_t *fn_ip) in net_release() argument
228 if (fn_ip->ip_version == 4) { in net_release()
229 dhcp_send_release(fn_ip->fd); in net_release()
288 static int load_kernel_with_initrd(filename_ip_t *fn_ip, in load_kernel_with_initrd() argument
300 strncpy(fn_ip->filename, entry->kernel, sizeof(fn_ip->filename)); in load_kernel_with_initrd()
301 rc = tftp_load(fn_ip, KERNEL_ADDR, KERNEL_MAX_SIZE); in load_kernel_with_initrd()
309 strncpy(fn_ip->filename, entry->initrd, sizeof(fn_ip->filename)); in load_kernel_with_initrd()
310 rc = tftp_load(fn_ip, (void *)iaddr, KERNEL_MAX_SIZE - iaddr); in load_kernel_with_initrd()
329 static int net_try_pxelinux_cfg(filename_ip_t *fn_ip) in net_try_pxelinux_cfg() argument
334 num_ent = pxelinux_load_parse_cfg(fn_ip, mac, get_uuid(), in net_try_pxelinux_cfg()
339 return load_kernel_with_initrd(fn_ip, &entries[def_ent]); in net_try_pxelinux_cfg()
349 static int handle_ins_cfg(filename_ip_t *fn_ip, char *cfg, int cfgsize) in handle_ins_cfg() argument
382 strncpy(fn_ip->filename, insbuf, sizeof(fn_ip->filename)); in handle_ins_cfg()
384 rc = tftp_load(fn_ip, destaddr, (long)_start - (long)destaddr); in handle_ins_cfg()
394 static int net_try_direct_tftp_load(filename_ip_t *fn_ip) in net_try_direct_tftp_load() argument
399 rc = tftp_load(fn_ip, loadaddr, KERNEL_MAX_SIZE - (long)loadaddr); in net_try_direct_tftp_load()
403 printf("'%s' is too small (%i bytes only).\n", fn_ip->filename, rc); in net_try_direct_tftp_load()
412 return handle_ins_cfg(fn_ip, cfgbuf, rc); in net_try_direct_tftp_load()
431 return load_kernel_with_initrd(fn_ip, &entries[def_ent]); in net_try_direct_tftp_load()
514 filename_ip_t fn_ip; in main() local
522 rc = net_init(&fn_ip); in main()
527 fnlen = strlen(fn_ip.filename); in main()
528 if (fnlen > 0 && fn_ip.filename[fnlen - 1] != '/') { in main()
529 rc = net_try_direct_tftp_load(&fn_ip); in main()
532 rc = net_try_pxelinux_cfg(&fn_ip); in main()
535 net_release(&fn_ip); in main()