aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/netnuke.c9
-rw-r--r--src/nukectl.c18
-rw-r--r--src/output_redirect.c13
3 files changed, 29 insertions, 11 deletions
diff --git a/src/netnuke.c b/src/netnuke.c
index b61bbee..76f7d23 100644
--- a/src/netnuke.c
+++ b/src/netnuke.c
@@ -37,6 +37,7 @@
pthread_mutex_t lock_global = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t lock_write = PTHREAD_MUTEX_INITIALIZER;
extern unsigned long total_written_bytes;
+int safety_flag = 0;
int logging_flag = 0;
int verbose_flag = 0;
int bus_mask = 0;
@@ -48,7 +49,9 @@ static struct option long_options[] =
{"help", no_argument, 0, 0},
{"verbose", no_argument, &verbose_flag, 1},
{"quiet", no_argument, &verbose_flag, 0},
+ {"safety-off", no_argument, &safety_flag, 0},
{"ignore-first", no_argument, 0, 'i'},
+ {"logging", no_argument, &logging_flag, 1},
{"timeout", required_argument, 0, 't'},
{"scheme", required_argument, 0, 's'},
{"device-type", required_argument, 0, 'd'},
@@ -60,7 +63,9 @@ static char* long_options_help[] =
"\tThis message",
"More output",
"Suppress output",
+ "Enable destructive write mode",
"Ignore first device",
+ "Log all output to netnuke.log",
"Set timeout-to-failure (in seconds)",
"Set nuking scheme:\n\
0 = zero\n\
@@ -128,6 +133,7 @@ int main(int argc, char* argv[])
fprintf(stderr, "Failed to cleanup %s: %s\n", NNLOGFILE, strerror(errno));
}
COM(self, "Program start\n");
+ COM(self, "Safety is %s\n", verbose_flag ? "ON" : "OFF");
if(argc < 2) usage(basename(argv[0]));
int c;
@@ -206,13 +212,12 @@ int main(int argc, char* argv[])
COM(self, "Generating threads\n");
for( i = 0 ; device[i] != NULL ; i++ )
{
- printf("%d\n", i);
thread[i] = (pthread_t)nnthread(device[i]);
COM(self, "thread id: %ld\n", thread[i]);
}
- COM(self, "Joining all threads\n");
thread_count = i;
+ COM(self, "Joining %d thread%c\n", thread_count, (thread_count > 1 || thread_count < 1) ? 's' : '\b');
for( i = 0 ; i < thread_count ; i++ )
{
pthread_join(thread[i], NULL);
diff --git a/src/nukectl.c b/src/nukectl.c
index 8b0897b..8ea266e 100644
--- a/src/nukectl.c
+++ b/src/nukectl.c
@@ -29,6 +29,7 @@
FILE* randfp;
unsigned int randseed;
unsigned long long total_written_bytes;
+extern int safety_flag;
extern pthread_mutex_t lock_global;
extern pthread_mutex_t lock_write;
@@ -46,8 +47,7 @@ void* wipe(void* device)
COM(self, "Unable to open %s: %s\n", d->path, strerror(errno));
return (int*)1;
}
- COM(self, "path: %s, block size %d, blocks %llu, total bytes %llu\n",
- d->path, d->blksz, d->blks, d->sz);
+ COM(self, "%s, block size %d, blocks %llu, total bytes %llu\n", d->path, d->blksz, d->blks, d->sz);
srand(nngetseed());
while(blocks_written < blocks)
@@ -87,8 +87,18 @@ int nnwrite(FILE* fp, int bsize)
unsigned int bytes_written = 0;
char* buffer = randstr(bsize);
pthread_mutex_lock(&lock_write);
- //bytes_written = fwrite(buffer, sizeof(char), bsize, fp);
- bytes_written += bsize; //temporary testing
+ if(safety_flag)
+ {
+ /* simulation */
+ bytes_written += bsize;
+ }
+ else
+ {
+ /* destructive */
+ //bytes_written = fwrite(buffer, sizeof(char), bsize, fp);
+ bytes_written += bsize;
+ }
+
total_written_bytes += bytes_written;
pthread_mutex_unlock(&lock_write);
diff --git a/src/output_redirect.c b/src/output_redirect.c
index 48d7f02..e296b33 100644
--- a/src/output_redirect.c
+++ b/src/output_redirect.c
@@ -64,17 +64,20 @@ int COM(const char* func, char *format, ...)
va_end (args);
logtm = localtime(&logtime);
- snprintf(timestr, sizeof(timestr), "%02d-%02d-%02d %02d:%02d:%02d", logtm->tm_year+1900, logtm->tm_mon+1, logtm->tm_mday, logtm->tm_hour, logtm->tm_min, logtm->tm_sec);
- snprintf(tmpstr, sizeof(tmpstr), "%s _%s_: %s", timestr, func, str);
- free(str);
- fprintf(stdout, "%s", tmpstr);
if(logging_flag)
{
+ snprintf(timestr, sizeof(timestr), "%02d-%02d-%02d %02d:%02d:%02d", logtm->tm_year+1900, logtm->tm_mon+1, logtm->tm_mday, logtm->tm_hour, logtm->tm_min, logtm->tm_sec);
+ snprintf(tmpstr, sizeof(tmpstr), "%s _%s_: %s", timestr, func, str);
fprintf(logfp, "%s", tmpstr);
fclose(logfp);
}
+ else
+ {
+ snprintf(tmpstr, sizeof(tmpstr), "_%s_: %s", func, str);
+ fprintf(stdout, "%s", tmpstr);
+ }
-
+ free(str);
return 0;
}