diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2019-01-15 13:43:04 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-01-15 13:43:04 +0100 |
commit | a9d1b2dbf4a6808bd0d2e841e32802f5bffb362a (patch) | |
tree | f5af1f80e4a215d1a5829aa5ea4f4458c4de61af /net | |
parent | 53227ec3c16fe50d7a3ca4020d3cb98878eeaa18 (diff) | |
parent | 92a1e1b0f19aedcc1ec7b4e34f6597b4340cf96a (diff) | |
download | barebox-a9d1b2dbf4a6808bd0d2e841e32802f5bffb362a.tar.gz barebox-a9d1b2dbf4a6808bd0d2e841e32802f5bffb362a.tar.xz |
Merge branch 'for-next/net'
Diffstat (limited to 'net')
-rw-r--r-- | net/dns.c | 21 | ||||
-rw-r--r-- | net/eth.c | 4 | ||||
-rw-r--r-- | net/net.c | 19 |
3 files changed, 32 insertions, 12 deletions
@@ -258,15 +258,26 @@ static int do_host(int argc, char *argv[]) { IPaddr_t ip; int ret; + char *hostname, *varname = NULL; - if (argc != 2) + if (argc < 2) return COMMAND_ERROR_USAGE; + hostname = argv[1]; + + if (argc > 2) + varname = argv[2]; + ret = resolv(argv[1], &ip); - if (ret) - printf("unknown host %s\n", argv[1]); + if (ret) { + printf("unknown host %s\n", hostname); + return 1; + } + + if (varname) + setenv_ip(varname, ip); else - printf("%s is at %pI4\n", argv[1], &ip); + printf("%s is at %pI4\n", hostname, &ip); return 0; } @@ -274,7 +285,7 @@ static int do_host(int argc, char *argv[]) BAREBOX_CMD_START(host) .cmd = do_host, BAREBOX_CMD_DESC("resolve a hostname") - BAREBOX_CMD_OPTS("HOSTNAME") + BAREBOX_CMD_OPTS("<HOSTNAME> [VARIABLE]") BAREBOX_CMD_GROUP(CMD_GRP_NET) BAREBOX_CMD_END #endif @@ -344,7 +344,7 @@ static int eth_register_of_fixup(void) late_initcall(eth_register_of_fixup); #endif -extern IPaddr_t net_serverip; +extern char *net_server; extern IPaddr_t net_gateway; static const char * const eth_mode_names[] = { @@ -384,7 +384,7 @@ int eth_register(struct eth_device *edev) edev->devname = xstrdup(dev_name(&edev->dev)); dev_add_param_ip(dev, "ipaddr", NULL, NULL, &edev->ipaddr, edev); - dev_add_param_ip(dev, "serverip", NULL, NULL, &net_serverip, edev); + dev_add_param_string(dev, "serverip", NULL, NULL, &net_server, edev); dev_add_param_ip(dev, "gateway", NULL, NULL, &net_gateway, edev); dev_add_param_ip(dev, "netmask", NULL, NULL, &edev->netmask, edev); dev_add_param_mac(dev, "ethaddr", eth_param_set_ethaddr, NULL, @@ -44,7 +44,7 @@ unsigned char *NetRxPackets[PKTBUFSRX]; /* Receive packets */ static unsigned int net_ip_id; -IPaddr_t net_serverip; +char *net_server; IPaddr_t net_gateway; static IPaddr_t net_nameserver; static char *net_domainname; @@ -271,17 +271,26 @@ static uint16_t net_udp_new_localport(void) IPaddr_t net_get_serverip(void) { - return net_serverip; + IPaddr_t ip; + int ret; + + ret = resolv(net_server, &ip); + if (ret) + return 0; + + return ip; } void net_set_serverip(IPaddr_t ip) { - net_serverip = ip; + free(net_server); + + net_server = xasprintf("%pI4", &ip); } void net_set_serverip_empty(IPaddr_t ip) { - if (net_serverip) + if (net_server && *net_server) return; net_set_serverip(ip); @@ -647,7 +656,7 @@ static int net_init(void) globalvar_add_simple_ip("net.nameserver", &net_nameserver); globalvar_add_simple_string("net.domainname", &net_domainname); - globalvar_add_simple_ip("net.server", &net_serverip); + globalvar_add_simple_string("net.server", &net_server); globalvar_add_simple_ip("net.gateway", &net_gateway); return 0; |