summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-04-16 11:34:41 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-04-16 11:34:41 +0200
commit86b9eb2105578eaecba52ca419c8670a51b70e99 (patch)
treea90d0574b4fee0842e51e42d5647bbc398102e4e /net
parent239a8523369472c4c6bb9a0649f2eb5977121dbe (diff)
parentabe4560c8add1c58a944b36e8ea51b10968f4d7b (diff)
downloadbarebox-86b9eb2105578eaecba52ca419c8670a51b70e99.tar.gz
barebox-86b9eb2105578eaecba52ca419c8670a51b70e99.tar.xz
Merge branch 'work/dns' into next
Diffstat (limited to 'net')
-rw-r--r--net/dhcp.c6
-rw-r--r--net/dns.c8
-rw-r--r--net/eth.c2
-rw-r--r--net/net.c28
-rw-r--r--net/tftp.c3
5 files changed, 24 insertions, 23 deletions
diff --git a/net/dhcp.c b/net/dhcp.c
index 0116ba423e..8569917a78 100644
--- a/net/dhcp.c
+++ b/net/dhcp.c
@@ -170,7 +170,7 @@ struct dhcp_opt dhcp_options[] = {
}, {
.option = 6,
.handle = env_ip_handle,
- .barebox_var_name = "nameserver",
+ .barebox_var_name = "net.nameserver",
}, {
.option = 12,
.handle = env_str_handle,
@@ -178,7 +178,7 @@ struct dhcp_opt dhcp_options[] = {
}, {
.option = 15,
.handle = env_str_handle,
- .barebox_var_name = "domainname",
+ .barebox_var_name = "net.domainname",
}, {
.option = 17,
.handle = env_str_handle,
@@ -697,9 +697,7 @@ BAREBOX_CMD_START(dhcp)
BAREBOX_CMD_END
BAREBOX_MAGICVAR(bootfile, "bootfile returned from DHCP request");
-BAREBOX_MAGICVAR(nameserver, "Nameserver returned from DHCP request");
BAREBOX_MAGICVAR(hostname, "hostname returned from DHCP request");
-BAREBOX_MAGICVAR(domainname, "domainname returned from DHCP request");
BAREBOX_MAGICVAR(rootpath, "rootpath returned from DHCP request");
BAREBOX_MAGICVAR(dhcp_vendor_id, "vendor id to send to the DHCP server");
BAREBOX_MAGICVAR(dhcp_client_uuid, "cliend uuid to send to the DHCP server");
diff --git a/net/dns.c b/net/dns.c
index fb1178ac45..e13d654215 100644
--- a/net/dns.c
+++ b/net/dns.c
@@ -77,7 +77,7 @@ static int dns_send(char *name)
header->nauth = 0;
header->nother = 0;
- domain = getenv("domainname");
+ domain = getenv("net.domainname");
if (!strchr(name, '.') && domain && *domain)
fullname = asprintf(".%s.%s.", name, domain);
@@ -97,7 +97,7 @@ static int dns_send(char *name)
dotptr = s;
} while (*(dotptr + 1));
*dotptr = 0;
-//memory_display(fullname, 0, strlen(fullname), 1);
+
strcpy(header->data, fullname);
p = header->data + strlen(fullname);
@@ -205,11 +205,11 @@ IPaddr_t resolv(char *host)
dns_state = STATE_INIT;
- ip = getenv_ip_dns("nameserver", 0);
+ ip = getenv_ip("net.nameserver");
if (!ip)
return 0;
- debug("resolving host %s via nameserver %s\n", host, getenv("nameserver"));
+ debug("resolving host %s via nameserver %s\n", host, ip_to_string(ip));
dns_con = net_udp_new(ip, DNS_PORT, dns_handler, NULL);
if (IS_ERR(dns_con))
diff --git a/net/eth.c b/net/eth.c
index f62d24a5ee..130805b7aa 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -198,7 +198,7 @@ int eth_register(struct eth_device *edev)
}
strcpy(edev->dev.name, "eth");
- edev->dev.id = -1;
+ edev->dev.id = DEVICE_ID_DYNAMIC;
if (edev->parent)
dev_add_child(edev->parent, &edev->dev);
diff --git a/net/net.c b/net/net.c
index c6bc8a15f4..c803c48a38 100644
--- a/net/net.c
+++ b/net/net.c
@@ -85,8 +85,10 @@ uint16_t net_checksum(unsigned char *ptr, int len)
return xsum & 0xffff;
}
-char *ip_to_string (IPaddr_t x, char *s)
+char *ip_to_string (IPaddr_t x)
{
+ static char s[sizeof("xxx.xxx.xxx.xxx")];
+
x = ntohl (x);
sprintf (s, "%d.%d.%d.%d",
(int) ((x >> 24) & 0xff),
@@ -127,7 +129,7 @@ int string_to_ip(const char *s, IPaddr_t *ip)
return 0;
}
-IPaddr_t getenv_ip_dns(const char *name, int dns)
+IPaddr_t getenv_ip(const char *name)
{
IPaddr_t ip;
const char *var = getenv(name);
@@ -138,17 +140,14 @@ IPaddr_t getenv_ip_dns(const char *name, int dns)
if (!string_to_ip(var, &ip))
return ip;
- if (!dns)
- return 0;
-
return resolv((char*)var);
}
int setenv_ip(const char *name, IPaddr_t ip)
{
- char str[sizeof("xxx.xxx.xxx.xxx")];
+ const char *str;
- ip_to_string(ip, str);
+ str = ip_to_string(ip);
setenv(name, str);
@@ -157,11 +156,7 @@ int setenv_ip(const char *name, IPaddr_t ip)
void print_IPaddr (IPaddr_t x)
{
- char tmp[16];
-
- ip_to_string (x, tmp);
-
- puts (tmp);
+ puts(ip_to_string(x));
}
int string_to_ethaddr(const char *str, char *enetaddr)
@@ -668,6 +663,11 @@ out:
return ret;
}
+static struct device_d net_device = {
+ .name = "net",
+ .id = DEVICE_ID_SINGLE,
+};
+
static int net_init(void)
{
int i;
@@ -675,6 +675,10 @@ static int net_init(void)
for (i = 0; i < PKTBUFSRX; i++)
NetRxPackets[i] = net_alloc_packet();
+ register_device(&net_device);
+ dev_add_param(&net_device, "nameserver", NULL, NULL, 0);
+ dev_add_param(&net_device, "domainname", NULL, NULL, 0);
+
return 0;
}
diff --git a/net/tftp.c b/net/tftp.c
index fc33c94583..ca12638353 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -273,7 +273,6 @@ static void tftp_handler(void *ctx, char *packet, unsigned len)
static int do_tftpb(int argc, char *argv[])
{
char *localfile, *remotefile, *file1, *file2;
- char ip1[16];
int opt;
struct stat s;
unsigned long flags;
@@ -328,7 +327,7 @@ static int do_tftpb(int argc, char *argv[])
printf("TFTP %s server %s ('%s' -> '%s')\n",
tftp_push ? "to" : "from",
- ip_to_string(net_get_serverip(), ip1),
+ ip_to_string(net_get_serverip()),
file1, file2);
init_progression_bar(tftp_push ? s.st_size : 0);