diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2017-11-17 16:14:41 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-12-14 14:30:19 +0100 |
commit | 7457f45528d486daebc8d7392416f547dbd2a828 (patch) | |
tree | 1779984b671cca6b12ba9fa1630a930fc41a538e | |
parent | 2319503ed22a6daea00de1c6f0965fcc4e649dd2 (diff) | |
download | barebox-7457f45528d486daebc8d7392416f547dbd2a828.tar.gz barebox-7457f45528d486daebc8d7392416f547dbd2a828.tar.xz |
net: ifup: Factor out a eth_discover function
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | net/ifup.c | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/net/ifup.c b/net/ifup.c index 423712e19c..f6ccd70378 100644 --- a/net/ifup.c +++ b/net/ifup.c @@ -26,6 +26,30 @@ #include <fs.h> #include <linux/stat.h> +static int eth_discover(const char *name) +{ + char *cmd_discover; + struct stat s; + int ret; + + cmd_discover = basprintf("/env/network/%s-discover", name); + + ret = stat(cmd_discover, &s); + if (ret) + goto out; + + ret = run_command(cmd_discover); + if (ret) { + pr_err("Running '%s' failed with %d\n", cmd_discover, ret); + goto out; + } + +out: + free(cmd_discover); + + return ret; +} + static char *vars[] = { "ipaddr", "netmask", @@ -48,9 +72,8 @@ static int eth_set_param(struct device_d *dev, const char *param) int ifup(const char *name, unsigned flags) { int ret; - char *cmd, *cmd_discover; + char *cmd; const char *ip; - struct stat s; int i; struct device_d *dev; struct eth_device *edev = eth_get_byname(name); @@ -66,7 +89,6 @@ int ifup(const char *name, unsigned flags) setenv(vars[i], ""); cmd = basprintf("source /env/network/%s", name); - cmd_discover = basprintf("/env/network/%s-discover", name); ret = run_command(cmd); if (ret) { @@ -74,14 +96,7 @@ int ifup(const char *name, unsigned flags) goto out; } - ret = stat(cmd_discover, &s); - if (!ret) { - ret = run_command(cmd_discover); - if (ret) { - pr_err("Running '%s' failed with %d\n", cmd, ret); - goto out; - } - } + eth_discover(name); dev = get_device_by_name(name); if (!dev) { @@ -142,7 +157,6 @@ int ifup(const char *name, unsigned flags) out: env_pop_context(); free(cmd); - free(cmd_discover); return ret; } |