X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Tools%2FNetTest%2Fmain.c;h=2aba06078af934ab99b7fd70aa0fa364f069d65b;hb=98bd9c0c8985c50c42231c116a4e18fedd47761e;hp=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391;hpb=c3b821ccc009ec819f2580a53c0ed423aad43bf9;p=tpg%2Facess2.git diff --git a/Tools/NetTest/main.c b/Tools/NetTest/main.c index e69de29b..2aba0607 100644 --- a/Tools/NetTest/main.c +++ b/Tools/NetTest/main.c @@ -0,0 +1,126 @@ +/* + * Acess2 Networking Test Suite (NetTest) + * - By John Hodge (thePowersGang) + * + * main.c + * - Program Core + */ +#include +#include +#include +#include +#include +#include + +extern int VFS_Init(void); +extern int IPStack_Install(char **Args); + +// === CODE === +void PrintUsage(const char *ProgramName) +{ + fprintf(stderr, "Usage: %s \n", ProgramName); + fprintf(stderr, "\n"); + fprintf(stderr, + "Options:\n" + "-dev ::\n" + "-ip ,/\n" + "-route /,\n" + "\n" + "Commands:\n" + "netcat \n" + "\n" + "Device Types:\n" + "tun - Linux TUN/TAP device (takes an optional name)\n" + "unix - Unix named pipe (datagram)\n" + ); +} + +int main(int argc, char *argv[]) +{ + int rv; + + if( argc <= 1 ) { + PrintUsage(argv[0]); + return 1; + } + + srand(time(NULL)); + + // Startup + VFS_Init(); + { + char *ipstack_args[] = {NULL}; + IPStack_Install( ipstack_args ); + } + + for( int i = 1; i < argc; i ++ ) + { + char *arg = argv[i];; + if( arg[0] != '-' ) + { + if( strcmp(arg, "netcat") == 0 ) + { + if( argc-i != 3 ) { + Log_Error("NetTest", "'netcat' "); + PrintUsage(argv[0]); + return -1; + } + + 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'", arg); + PrintUsage(argv[0]); + } + } + else + { + if( strcmp(arg, "--help") == 0 ) + { + PrintUsage(0); + return 0; + } + else if( strcmp(arg, "-dev") == 0 ) + { + 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+1]); + return -1; + } + i ++; + } + else if( strcmp(arg, "-ip") == 0 ) + { + 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'", arg); + PrintUsage(argv[0]); + return -1; + } + } + } + + // Teardown + Log_Log("NetTest", "Shutting down"); + fflush(stdout); + return 0; +} + +size_t NetTest_WriteStdout(const void *Data, size_t Size) +{ + return fwrite(Data, 1, Size, stdout); +}