From 6197f02044e2fe6689b52dad0a0c75bdc0eb185b Mon Sep 17 00:00:00 2001 From: Vadim Kochan Date: Tue, 20 Sep 2016 21:37:35 +0300 Subject: [PATCH] mz: Check device argument by ifindex instead of name prefix Check device argument by valid ifindex instead of guessing it by different device name prefixes like "eth", "ath", "ens", "enp". Use __device_ifindex(...) function for this, which needs to add few more dependencies like sock.o, link.o to the Makefile for mausezahn. Closes #159 Suggested-by: Tobias Klauser Signed-off-by: Vadim Kochan Signed-off-by: Tobias Klauser --- mausezahn/Makefile | 4 ++++ staging/mausezahn.c | 10 +++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mausezahn/Makefile b/mausezahn/Makefile index 08918b5e..ca16b657 100644 --- a/mausezahn/Makefile +++ b/mausezahn/Makefile @@ -7,6 +7,10 @@ mausezahn-libs = -lcli \ mausezahn-objs = str.o \ die.o \ + dev.o \ + sock.o \ + link.o \ + sysctl.o \ xmalloc.o \ staging/layer1.o \ staging/layer2.o \ diff --git a/staging/mausezahn.c b/staging/mausezahn.c index 70f1e72a..32bcdc5e 100644 --- a/staging/mausezahn.c +++ b/staging/mausezahn.c @@ -30,6 +30,7 @@ #include "config.h" #include "llist.h" #include "die.h" +#include "dev.h" int verbose_level = 0; @@ -597,13 +598,8 @@ int getopts (int argc, char *argv[]) } break; case 1: // arg_string OR device given => find out! - if ( (strncmp(argv[optind],"eth",3)==0) - || (strncmp(argv[optind],"ath",3)==0) - || ((strncmp(argv[optind],"lo",2)==0)&&(strncmp(argv[optind],"log",3)!=0)) - || (strncmp(argv[optind],"vmnet",5)==0) - || (strncmp(argv[optind],"wifi",4)==0) ) { - // device has been specified! - strncpy (tx.device, argv[optind], 16); + if (__device_ifindex(argv[optind]) > 0) { + strncpy(tx.device, argv[optind], 16); } else { /// arg_string given => no device has been specified -- let's find one! strncpy (tx.arg_string, argv[optind], MAX_PAYLOAD_SIZE); -- 2.11.4.GIT