summaryrefslogtreecommitdiffstats
path: root/if-linux.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-11-17 22:50:37 +0000
committerRoy Marples <roy@marples.name>2008-11-17 22:50:37 +0000
commit5f1643f5844b6cf6adba486c8712931b98533c74 (patch)
treeefc942fbcc0a4f2fcb695f09da3a46cb42a72900 /if-linux.c
parentc989b02361577d2227094cd396c760c1df39e697 (diff)
downloaddhcpcd-5f1643f5844b6cf6adba486c8712931b98533c74.tar.xz
Fix working with linux aliased interfaces again.
Diffstat (limited to 'if-linux.c')
-rw-r--r--if-linux.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/if-linux.c b/if-linux.c
index 1dca9ee1..d572e82d 100644
--- a/if-linux.c
+++ b/if-linux.c
@@ -431,7 +431,8 @@ struct interface *
discover_interfaces(int argc, char * const *argv)
{
FILE *f;
- char *p;
+ char ifn[IF_NAMESIZE];
+ char *p, *c;
size_t ln = 0, n;
int i;
struct interface *ifs = NULL, *ifp, *ifl;
@@ -451,11 +452,18 @@ discover_interfaces(int argc, char * const *argv)
if (ifp)
continue;
if (argc > 0) {
- for (i = 0; i < argc; i++)
- if (strcmp(argv[i], p) == 0)
+ for (i = 0; i < argc; i++) {
+ /* Check the real interface name */
+ strlcpy(ifn, argv[i], sizeof(ifn));
+ c = strchr(ifn, ':');
+ if (c)
+ *c = '\0';
+ if (strcmp(ifn, p) == 0)
break;
+ }
if (i == argc)
continue;
+ p = argv[i];
} else {
for (i = 0; i < ifdc; i++)
if (!fnmatch(ifdv[i], p, 0))