From bf0df3ec1875df4b167aedd0fff25e7e56408b6b Mon Sep 17 00:00:00 2001 From: Mandar Gokhale Date: Wed, 7 Dec 2016 23:20:20 -0500 Subject: mausezahn: Add error handling for mismatched address families Currently, mausezahn fails silently if, say the user has specified IPv6 addresses using `-A` and `-B` but has forgotten the -6 option. Add error handling for this and the (probably uncommon) reverse case, i.e. v4 src/dst specified, but used with the -6 option. Signed-off-by: Mandar Gokhale Signed-off-by: Tobias Klauser --- staging/mausezahn.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'staging') diff --git a/staging/mausezahn.c b/staging/mausezahn.c index ec3bc0e..7acd6bc 100644 --- a/staging/mausezahn.c +++ b/staging/mausezahn.c @@ -671,6 +671,15 @@ int getopts (int argc, char *argv[]) tx.ip_src_rand = 1; tx.ip_src_h = (u_int32_t) ( ((float) rand()/RAND_MAX)*0xE0000000); //this is 224.0.0.0 } + else if (ipv6_mode && (strstr(tx.ip_src_txt, ".") || strstr(tx.ip_dst_txt, "."))) { + fprintf(stderr, "You are using IPv6 mode but are providing IPv4 src/dst addresses.\n"); + return 1; + } + else if (!ipv6_mode && (strstr(tx.ip_src_txt, ":") || strstr(tx.ip_dst_txt, ":"))) { + fprintf(stderr, "You are using IPv4 mode (the default) but are providing IPv6 src/dst addresses.\n"); + fprintf(stderr, "Please use the -6 option for IPv6 mode.\n"); + return 1; + } else if ( (ipv6_mode && get_ip6_range_src(tx.ip_src_txt, l)) || // returns 1 when no range has been specified (!ipv6_mode && get_ip_range_src(tx.ip_src_txt)) @@ -892,7 +901,7 @@ int main(int argc, char **argv) if ( getopts(argc, argv) ) { - (void) fprintf(stderr, " Invalid command line parameters!\n"); + (void) fprintf(stderr, "Invalid command line parameters!\n"); help(); } -- cgit v1.2.3-54-g00ecf