X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cmd%2Fnet.c;h=25390b0474f4c9032cea1c678a1053e9d195a3f5;hb=09140113108541b95d340f3c7b6ee597d31ccc73;hp=bed76e4bcb0899e5c368d09ddd33ed6873a1b789;hpb=44afdc4a12b9f6f48338e7975e4f08cfe90dba74;p=oweals%2Fu-boot.git diff --git a/cmd/net.c b/cmd/net.c index bed76e4bcb..25390b0474 100644 --- a/cmd/net.c +++ b/cmd/net.c @@ -1,20 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2000 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * SPDX-License-Identifier: GPL-2.0+ */ /* * Boot support */ #include +#include #include +#include +#include #include -static int netboot_common(enum proto_t, cmd_tbl_t *, int, char * const []); +static int netboot_common(enum proto_t, struct cmd_tbl *, int, char * const []); -static int do_bootp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +#ifdef CONFIG_CMD_BOOTP +static int do_bootp(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { return netboot_common(BOOTP, cmdtp, argc, argv); } @@ -24,8 +28,10 @@ U_BOOT_CMD( "boot image via network using BOOTP/TFTP protocol", "[loadAddress] [[hostIPaddr:]bootfilename]" ); +#endif -int do_tftpb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +#ifdef CONFIG_CMD_TFTPBOOT +int do_tftpb(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { int ret; @@ -40,9 +46,11 @@ U_BOOT_CMD( "boot image via network using TFTP protocol", "[loadAddress] [[hostIPaddr:]bootfilename]" ); +#endif #ifdef CONFIG_CMD_TFTPPUT -int do_tftpput(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_tftpput(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { return netboot_common(TFTPPUT, cmdtp, argc, argv); } @@ -55,7 +63,8 @@ U_BOOT_CMD( #endif #ifdef CONFIG_CMD_TFTPSRV -static int do_tftpsrv(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) +static int do_tftpsrv(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { return netboot_common(TFTPSRV, cmdtp, argc, argv); } @@ -72,7 +81,7 @@ U_BOOT_CMD( #ifdef CONFIG_CMD_RARP -int do_rarpb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_rarpb(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { return netboot_common(RARP, cmdtp, argc, argv); } @@ -85,7 +94,8 @@ U_BOOT_CMD( #endif #if defined(CONFIG_CMD_DHCP) -static int do_dhcp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_dhcp(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { return netboot_common(DHCP, cmdtp, argc, argv); } @@ -98,7 +108,8 @@ U_BOOT_CMD( #endif #if defined(CONFIG_CMD_NFS) -static int do_nfs(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_nfs(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { return netboot_common(NFS, cmdtp, argc, argv); } @@ -116,63 +127,63 @@ static void netboot_update_env(void) if (net_gateway.s_addr) { ip_to_string(net_gateway, tmp); - setenv("gatewayip", tmp); + env_set("gatewayip", tmp); } if (net_netmask.s_addr) { ip_to_string(net_netmask, tmp); - setenv("netmask", tmp); + env_set("netmask", tmp); } if (net_hostname[0]) - setenv("hostname", net_hostname); + env_set("hostname", net_hostname); if (net_root_path[0]) - setenv("rootpath", net_root_path); + env_set("rootpath", net_root_path); if (net_ip.s_addr) { ip_to_string(net_ip, tmp); - setenv("ipaddr", tmp); + env_set("ipaddr", tmp); } #if !defined(CONFIG_BOOTP_SERVERIP) /* - * Only attempt to change serverip if net/bootp.c:BootpCopyNetParams() + * Only attempt to change serverip if net/bootp.c:store_net_params() * could have set it */ if (net_server_ip.s_addr) { ip_to_string(net_server_ip, tmp); - setenv("serverip", tmp); + env_set("serverip", tmp); } #endif if (net_dns_server.s_addr) { ip_to_string(net_dns_server, tmp); - setenv("dnsip", tmp); + env_set("dnsip", tmp); } #if defined(CONFIG_BOOTP_DNS2) if (net_dns_server2.s_addr) { ip_to_string(net_dns_server2, tmp); - setenv("dnsip2", tmp); + env_set("dnsip2", tmp); } #endif if (net_nis_domain[0]) - setenv("domain", net_nis_domain); + env_set("domain", net_nis_domain); #if defined(CONFIG_CMD_SNTP) && defined(CONFIG_BOOTP_TIMEOFFSET) if (net_ntp_time_offset) { sprintf(tmp, "%d", net_ntp_time_offset); - setenv("timeoffset", tmp); + env_set("timeoffset", tmp); } #endif #if defined(CONFIG_CMD_SNTP) && defined(CONFIG_BOOTP_NTPSERVER) if (net_ntp_server.s_addr) { ip_to_string(net_ntp_server, tmp); - setenv("ntpserverip", tmp); + env_set("ntpserverip", tmp); } #endif } -static int netboot_common(enum proto_t proto, cmd_tbl_t *cmdtp, int argc, - char * const argv[]) +static int netboot_common(enum proto_t proto, struct cmd_tbl *cmdtp, int argc, + char *const argv[]) { char *s; char *end; @@ -180,13 +191,18 @@ static int netboot_common(enum proto_t proto, cmd_tbl_t *cmdtp, int argc, int size; ulong addr; - /* pre-set load_addr */ - s = getenv("loadaddr"); + net_boot_file_name_explicit = false; + + /* pre-set image_load_addr */ + s = env_get("loadaddr"); if (s != NULL) - load_addr = simple_strtoul(s, NULL, 16); + image_load_addr = simple_strtoul(s, NULL, 16); switch (argc) { case 1: + /* refresh bootfile name from env */ + copy_filename(net_boot_file_name, env_get("bootfile"), + sizeof(net_boot_file_name)); break; case 2: /* @@ -196,15 +212,21 @@ static int netboot_common(enum proto_t proto, cmd_tbl_t *cmdtp, int argc, * mis-interpreted as a valid number. */ addr = simple_strtoul(argv[1], &end, 16); - if (end == (argv[1] + strlen(argv[1]))) - load_addr = addr; - else + if (end == (argv[1] + strlen(argv[1]))) { + image_load_addr = addr; + /* refresh bootfile name from env */ + copy_filename(net_boot_file_name, env_get("bootfile"), + sizeof(net_boot_file_name)); + } else { + net_boot_file_name_explicit = true; copy_filename(net_boot_file_name, argv[1], sizeof(net_boot_file_name)); + } break; case 3: - load_addr = simple_strtoul(argv[1], NULL, 16); + image_load_addr = simple_strtoul(argv[1], NULL, 16); + net_boot_file_name_explicit = true; copy_filename(net_boot_file_name, argv[2], sizeof(net_boot_file_name)); @@ -212,11 +234,12 @@ static int netboot_common(enum proto_t proto, cmd_tbl_t *cmdtp, int argc, #ifdef CONFIG_CMD_TFTPPUT case 4: - if (strict_strtoul(argv[1], 16, &save_addr) < 0 || - strict_strtoul(argv[2], 16, &save_size) < 0) { + if (strict_strtoul(argv[1], 16, &image_save_addr) < 0 || + strict_strtoul(argv[2], 16, &image_save_size) < 0) { printf("Invalid address/size\n"); return CMD_RET_USAGE; } + net_boot_file_name_explicit = true; copy_filename(net_boot_file_name, argv[3], sizeof(net_boot_file_name)); break; @@ -255,7 +278,8 @@ static int netboot_common(enum proto_t proto, cmd_tbl_t *cmdtp, int argc, } #if defined(CONFIG_CMD_PING) -static int do_ping(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_ping(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { if (argc < 2) return CMD_RET_USAGE; @@ -291,19 +315,19 @@ static void cdp_update_env(void) printf("CDP offered appliance VLAN %d\n", ntohs(cdp_appliance_vlan)); vlan_to_string(cdp_appliance_vlan, tmp); - setenv("vlan", tmp); + env_set("vlan", tmp); net_our_vlan = cdp_appliance_vlan; } if (cdp_native_vlan != htons(-1)) { printf("CDP offered native VLAN %d\n", ntohs(cdp_native_vlan)); vlan_to_string(cdp_native_vlan, tmp); - setenv("nvlan", tmp); + env_set("nvlan", tmp); net_native_vlan = cdp_native_vlan; } } -int do_cdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_cdp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { int r; @@ -326,12 +350,12 @@ U_BOOT_CMD( #endif #if defined(CONFIG_CMD_SNTP) -int do_sntp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_sntp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { char *toff; if (argc < 2) { - net_ntp_server = getenv_ip("ntpserverip"); + net_ntp_server = env_get_ip("ntpserverip"); if (net_ntp_server.s_addr == 0) { printf("ntpserverip not set\n"); return CMD_RET_FAILURE; @@ -344,7 +368,7 @@ int do_sntp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } } - toff = getenv("timeoffset"); + toff = env_get("timeoffset"); if (toff == NULL) net_ntp_time_offset = 0; else @@ -367,7 +391,7 @@ U_BOOT_CMD( #endif #if defined(CONFIG_CMD_DNS) -int do_dns(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_dns(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { if (argc == 1) return CMD_RET_USAGE; @@ -413,8 +437,8 @@ U_BOOT_CMD( #endif /* CONFIG_CMD_DNS */ #if defined(CONFIG_CMD_LINK_LOCAL) -static int do_link_local(cmd_tbl_t *cmdtp, int flag, int argc, - char * const argv[]) +static int do_link_local(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { char tmp[22]; @@ -423,14 +447,14 @@ static int do_link_local(cmd_tbl_t *cmdtp, int flag, int argc, net_gateway.s_addr = 0; ip_to_string(net_gateway, tmp); - setenv("gatewayip", tmp); + env_set("gatewayip", tmp); ip_to_string(net_netmask, tmp); - setenv("netmask", tmp); + env_set("netmask", tmp); ip_to_string(net_ip, tmp); - setenv("ipaddr", tmp); - setenv("llipaddr", tmp); /* store this for next time */ + env_set("ipaddr", tmp); + env_set("llipaddr", tmp); /* store this for next time */ return CMD_RET_SUCCESS; }