summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2017-11-17 16:14:41 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2017-12-14 14:30:19 +0100
commit7457f45528d486daebc8d7392416f547dbd2a828 (patch)
tree1779984b671cca6b12ba9fa1630a930fc41a538e
parent2319503ed22a6daea00de1c6f0965fcc4e649dd2 (diff)
downloadbarebox-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.c38
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;
}