eth: check for valid parameters for ethaddr, ipaddr, ...
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
c0d02ffc3d
commit
51b4de421e
32
net/eth.c
32
net/eth.c
|
@ -28,6 +28,7 @@
|
||||||
#include <net.h>
|
#include <net.h>
|
||||||
#include <miiphy.h>
|
#include <miiphy.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
|
||||||
static struct eth_device *eth_current;
|
static struct eth_device *eth_current;
|
||||||
|
|
||||||
|
@ -83,6 +84,32 @@ int eth_rx(void)
|
||||||
return eth_current->recv(eth_current);
|
return eth_current->recv(eth_current);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int eth_set_ethaddr(struct device_d *dev, struct param_d *param, const char *val)
|
||||||
|
{
|
||||||
|
char ethaddr[sizeof("xx:xx:xx:xx:xx:xx")];
|
||||||
|
|
||||||
|
if (string_to_ethaddr(val, ethaddr) < 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
free(param->value);
|
||||||
|
param->value = strdup(val);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int eth_set_ipaddr(struct device_d *dev, struct param_d *param, const char *val)
|
||||||
|
{
|
||||||
|
IPaddr_t ip;
|
||||||
|
|
||||||
|
if (string_to_ip(val, &ip))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
free(param->value);
|
||||||
|
param->value = strdup(val);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int eth_register(struct eth_device *edev)
|
int eth_register(struct eth_device *edev)
|
||||||
{
|
{
|
||||||
struct device_d *dev = edev->dev;
|
struct device_d *dev = edev->dev;
|
||||||
|
@ -95,10 +122,15 @@ int eth_register(struct eth_device *edev)
|
||||||
}
|
}
|
||||||
|
|
||||||
edev->param_ip.name = "ipaddr";
|
edev->param_ip.name = "ipaddr";
|
||||||
|
edev->param_ip.set = ð_set_ipaddr;
|
||||||
edev->param_ethaddr.name = "ethaddr";
|
edev->param_ethaddr.name = "ethaddr";
|
||||||
|
edev->param_ethaddr.set = ð_set_ethaddr;
|
||||||
edev->param_gateway.name = "gateway";
|
edev->param_gateway.name = "gateway";
|
||||||
|
edev->param_gateway.set = ð_set_ipaddr;
|
||||||
edev->param_netmask.name = "netmask";
|
edev->param_netmask.name = "netmask";
|
||||||
|
edev->param_netmask.set = ð_set_ipaddr;
|
||||||
edev->param_serverip.name = "serverip";
|
edev->param_serverip.name = "serverip";
|
||||||
|
edev->param_serverip.set = ð_set_ipaddr;
|
||||||
dev_add_param(dev, &edev->param_ip);
|
dev_add_param(dev, &edev->param_ip);
|
||||||
dev_add_param(dev, &edev->param_ethaddr);
|
dev_add_param(dev, &edev->param_ethaddr);
|
||||||
dev_add_param(dev, &edev->param_gateway);
|
dev_add_param(dev, &edev->param_gateway);
|
||||||
|
|
Loading…
Reference in New Issue