Tools/NetTest - Add a runner to test networking stack
[tpg/acess2.git] / Tools / NetTest / main.c
index 95e70ab..2aba060 100644 (file)
@@ -22,12 +22,16 @@ void PrintUsage(const char *ProgramName)
        fprintf(stderr, "\n");
        fprintf(stderr,
                "Options:\n"
-               "-dev <mac>:<tapdev>\n"
+               "-dev <mac>:<type>:<arg>\n"
                "-ip <dev>,<addr>/<mask>\n"
-               "-route <net>,<mask>,<nexthop>\n"
+               "-route <net>/<mask>,<nexthop>\n"
                "\n"
-               "Suites:\n"
+               "Commands:\n"
                "netcat <addr> <port>\n"
+               "\n"
+               "Device Types:\n"
+               "tun - Linux TUN/TAP device (takes an optional name)\n"
+               "unix - Unix named pipe (datagram)\n"
                );
 }
 
@@ -51,9 +55,10 @@ int main(int argc, char *argv[])
        
        for( int i = 1; i < argc; i ++ )
        {
-               if( argv[i][0] != '-' )
+               char *arg = argv[i];;
+               if( arg[0] != '-' )
                {
-                       if( strcmp(argv[i], "netcat") == 0 )
+                       if( strcmp(arg, "netcat") == 0 )
                        {
                                if( argc-i != 3 ) {
                                        Log_Error("NetTest", "'netcat' <addr> <port>");
@@ -64,34 +69,45 @@ int main(int argc, char *argv[])
                                NetTest_Suite_Netcat(argv[i+1], strtol(argv[i+2], NULL, 0));
                                i += 2;
                        }
+                       else if( strcmp(arg, "cmdline") == 0 )
+                       {
+                               NetTest_Suite_Cmdline();
+                       }
                        else
                        {
-                               Log_Error("NetTest", "Unknown suite name '%s'", argv[i]);
+                               Log_Error("NetTest", "Unknown suite name '%s'", arg);
                                PrintUsage(argv[0]);
                        }
                }
                else
                {
-                       if( strcmp(argv[i], "-dev") == 0 )
+                       if( strcmp(arg, "--help") == 0 )
+                       {
+                               PrintUsage(0);
+                               return 0;
+                       }
+                       else if( strcmp(arg, "-dev") == 0 )
                        {
-                               if( ++i == argc ) { PrintUsage(argv[0]); return 1; }
-                               rv = NativeNic_AddDev(argv[i]);
+                               if( i+1 == argc ) { PrintUsage(argv[0]); return 1; }
+                               rv = NativeNic_AddDev(argv[i+1]);
                                if( rv ) {
-                                       Log_Error("NetTest", "Failed to add device %s", argv[i]);
+                                       Log_Error("NetTest", "Failed to add device %s", argv[i+1]);
                                        return -1;
                                }
+                               i ++;
                        }
-                       else if( strcmp(argv[i], "-ip") == 0 )
+                       else if( strcmp(arg, "-ip") == 0 )
                        {
-                               if( ++i == argc ) { PrintUsage(argv[0]); return 1; }
-                               // TODO: parse argument and poke ipstack
-                               if( NetTest_AddAddress(argv[i]) ) {
+                               if( i+1 == argc ) { PrintUsage(argv[0]); return 1; }
+                               // Parse argument and poke ipstack
+                               if( NetTest_AddAddress(argv[i+1]) ) {
                                        return -1;
                                }
+                               i ++;
                        }
                        else
                        {
-                               Log_Error("NetTest", "Unknown argument '%s'", argv[i]);
+                               Log_Error("NetTest", "Unknown argument '%s'", arg);
                                PrintUsage(argv[0]);
                                return -1;
                        }

UCC git Repository :: git.ucc.asn.au