mirror of https://github.com/D4-project/d4-core
rough and incomplete working processing program
parent
5d0c8e4f7f
commit
8e5b5cf46b
47
client/d4.c
47
client/d4.c
|
@ -8,6 +8,7 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#include "d4.h"
|
#include "d4.h"
|
||||||
//
|
//
|
||||||
|
@ -83,6 +84,46 @@ d4_t* d4_init(char* confdir)
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//FIXME split in prepare and update. Do not copy uuid each time
|
||||||
|
void d4_update_header(d4_t* d4, ssize_t nread) {
|
||||||
|
bzero(&d4->header,sizeof(d4_update_header));
|
||||||
|
//TODO Check format
|
||||||
|
d4->header.version = atoi(d4->conf[VERSION]);
|
||||||
|
//TODO set type
|
||||||
|
d4->header.timestamp = time(NULL);
|
||||||
|
//FIXME length handling
|
||||||
|
strncpy((char*)&(d4->header.uuid), d4->conf[UUID], SZUUID);
|
||||||
|
//TODO hmac
|
||||||
|
d4->header.size=nread;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Core routine. Transfers data from the source to the destinations
|
||||||
|
void d4_transfert(d4_t* d4)
|
||||||
|
{
|
||||||
|
ssize_t nread;
|
||||||
|
char* buf;
|
||||||
|
|
||||||
|
buf = calloc(1, d4->snaplen);
|
||||||
|
//TODO error handling -> insert error message
|
||||||
|
if (!buf)
|
||||||
|
return;
|
||||||
|
|
||||||
|
while ( 1 ) {
|
||||||
|
//In case of errors see block of 0 bytes
|
||||||
|
bzero(buf, d4->snaplen);
|
||||||
|
nread = read(d4->source.fd, buf, d4->snaplen);
|
||||||
|
if ( nread > 0 ) {
|
||||||
|
d4_update_header(d4, nread);
|
||||||
|
write(d4->destination.fd, &d4->header, sizeof(d4->header));
|
||||||
|
write(d4->destination.fd,buf,nread);
|
||||||
|
} else{
|
||||||
|
//FIXME no data available, sleep, abort, retry
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main (int argc, char* argv[])
|
int main (int argc, char* argv[])
|
||||||
{
|
{
|
||||||
int opt;
|
int opt;
|
||||||
|
@ -113,9 +154,9 @@ int main (int argc, char* argv[])
|
||||||
|
|
||||||
d4 = d4_init(confdir);
|
d4 = d4_init(confdir);
|
||||||
free(confdir);
|
free(confdir);
|
||||||
d4_load_config(d4);
|
if (d4_load_config(d4)) {
|
||||||
|
d4_transfert(d4);
|
||||||
|
}
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#define STDIN "stdin"
|
#define STDIN "stdin"
|
||||||
#define STDOUT "stdout"
|
#define STDOUT "stdout"
|
||||||
#define MAXSNAPLEN 65535
|
#define MAXSNAPLEN 65535
|
||||||
|
#define SZUUID 128
|
||||||
|
|
||||||
#define INSERT_ERROR(...) do { \
|
#define INSERT_ERROR(...) do { \
|
||||||
if (d4->err_idx < NERRORS) \
|
if (d4->err_idx < NERRORS) \
|
||||||
|
@ -47,6 +48,7 @@ typedef struct d4_s {
|
||||||
char conf[ND4PARAMS][SZCONFVALUE];
|
char conf[ND4PARAMS][SZCONFVALUE];
|
||||||
char errors[NERRORS][SZERRVALUE];
|
char errors[NERRORS][SZERRVALUE];
|
||||||
int err_idx;
|
int err_idx;
|
||||||
|
d4_header_t header;
|
||||||
} d4_t;
|
} d4_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue