From bc5ecd6da7f068a12b9ee5397178723481c7a3ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Lindh=C3=A9?= Date: Tue, 31 Oct 2017 08:33:46 +0100 Subject: Move all files one level down --- broccoli/src/broevent.c | 85 ------------------------- broccoli/src/fifoqueue.c | 132 -------------------------------------- broccoli/src/midbro.c | 74 ---------------------- broccoli/src/pasad.c | 160 ----------------------------------------------- 4 files changed, 451 deletions(-) delete mode 100644 broccoli/src/broevent.c delete mode 100644 broccoli/src/fifoqueue.c delete mode 100644 broccoli/src/midbro.c delete mode 100644 broccoli/src/pasad.c (limited to 'broccoli/src') diff --git a/broccoli/src/broevent.c b/broccoli/src/broevent.c deleted file mode 100644 index 362ed5e..0000000 --- a/broccoli/src/broevent.c +++ /dev/null @@ -1,85 +0,0 @@ -#include "fifoqueue.h" -#include "broevent.h" -#ifdef BROCCOLI -#include -#endif - -char *host_default = "127.0.0.1"; -char *port_default = "47760"; -Fifo_q * q; - - static void -modbus_register_received(BroConn *conn, void *data, BroRecord *record) -{ - int type = BRO_TYPE_COUNT; - uint64 *address = NULL; - uint64 *value = NULL; - - // TODO: handle regtype - address = bro_record_get_named_val(record, "address", &type); - if (!address) { - // TODO: handle error - return; - } - value = bro_record_get_named_val(record, "register", &type); - if (!value) { - // TODO: handle error - return; - } - #ifdef DEBUG - printf("Received value %"PRIu64" from uid=%"PRIu64"\n",*value,*address); - #endif - - add_to_queue(q, create_sensor_object(*value, *address)); - - #ifdef DEBUG - printf("Added to queue.\n"); - #endif -} - - void * -bro_event_listener(void * args) -{ - q = (Fifo_q *) args; - int fd = -1; - BroConn *bc = NULL; - bro_init(NULL); - char hostname[512]; - - snprintf(hostname, 512, "%s:%s", host_default, port_default); - if (! (bc = bro_conn_new_str(hostname, BRO_CFLAG_RECONNECT | BRO_CFLAG_ALWAYS_QUEUE))) - { - printf("Could not get Bro connection handle.\n"); - exit(-1); - } - bro_debug_calltrace = 0; - bro_debug_messages = 0; - - bro_event_registry_add(bc, "pasad_register_received", - (BroEventFunc) modbus_register_received, NULL); - - if (! bro_conn_connect(bc)) - { - printf("Could not connect to Bro at %s:%s.\n", host_default, - port_default); - exit(-1); - } - - fd =bro_conn_get_fd(bc); - fd_set rfds; - setbuf(stdout,NULL); - - while(true) - { - FD_ZERO(&rfds); - FD_SET(fd,&rfds); - if(select(fd+1,&rfds,NULL,NULL,NULL) == -1){ - printf("select(): Bad file descriptor"); - break; - } - - bro_conn_process_input(bc); - } - - bro_conn_delete(bc); -} diff --git a/broccoli/src/fifoqueue.c b/broccoli/src/fifoqueue.c deleted file mode 100644 index e7ed8f6..0000000 --- a/broccoli/src/fifoqueue.c +++ /dev/null @@ -1,132 +0,0 @@ -#include -#include -#include -#include -#include "types.h" -#include "fifoqueue.h" - - Fifo_q * -init_queue(int size) -{ - Fifo_q * q = (Fifo_q *) malloc(sizeof(Fifo_q)); - q->head = NULL; - q->tail = NULL; - q->maxSize = size; - q->currentSize = 0; - q->droppedValues = 0; - q->largestBufferSize = 0; - q->valuesReceived = 0; - q->valuesReleased = 0; - /*Queue empty from the beginning (block)*/ - sem_init(&q->bufferEmptyBlock, 0, 0); - sem_init(&q->bufferFullBlock, 0, size); - sem_init(&q->lock, 0, 1); - return q; -} - - boolean -is_full(Fifo_q * q) -{ - if(q->currentSize < q->maxSize) - return false; - else - return true; -} - - boolean -is_empty(Fifo_q * q) -{ - if(q->head==NULL) - return true; - else - return false; -} - - int -add_to_queue(Fifo_q * q, Sensor_t * sensor) -{ - - if(q == NULL){ - printf("Error: Queue not initialized\n"); - free(sensor); //free if not appended - return -1; - } - /* Drop Least Recently or Drop Most Recently */ - #ifdef DLR - if(is_full(q)){ - pop_from_queue(q); - q->droppedValues++; - return 0; - } - #else - sem_wait(&q->bufferFullBlock); - #endif - sem_wait(&q->lock); - Queue_t * new_elem = (Queue_t *) malloc(sizeof(Queue_t)); - new_elem->next = NULL; - new_elem->sensor = sensor; - if(is_empty(q)){ - q->head = new_elem; - }else - q->tail->next = new_elem; - q->tail = new_elem; - q->currentSize++; - q->valuesReceived++; - if(q->currentSize > q->largestBufferSize) - q->largestBufferSize = q->currentSize; - sem_post(&q->lock); - sem_post(&q->bufferEmptyBlock); - return 1; -} - - Sensor_t * -pop_from_queue(Fifo_q * q) -{ - int semStat; - sem_wait(&q->bufferEmptyBlock); - sem_wait(&q->lock); - Queue_t * head = q->head; - Sensor_t * sensor = head->sensor; - /* If dequeue the last element */ - if(q->currentSize == 1){ - q->head = NULL; - q->tail = NULL; - }else{ - q->head = head->next; - } - free(head); - q->currentSize--; - q->valuesReleased++; - sem_post(&q->lock); - #ifndef DLR - sem_post(&q->bufferFullBlock); - #endif - return sensor; -} - - Sensor_t * -create_sensor_object(int value, int uid) -{ - Sensor_t * sensor = (Sensor_t *) malloc(sizeof(Sensor_t)); - sensor->value = value; - sensor->uid = uid; - return sensor; -} - void -print_queue(Fifo_q * q) -{ - sem_wait(&q->lock); - Queue_t * current = q->head; - printf("\nContent of the queue with size=%d\n",q->currentSize); - if(current == NULL){ - printf("The queue is empty!\n"); - sem_post(&q->lock); - return; - } - while(current != NULL){ - printf("sensor value=%d, sensor uid=%d\n", - current->sensor->value, current->sensor->uid); - current = current->next; - } - sem_post(&q->lock); -} diff --git a/broccoli/src/midbro.c b/broccoli/src/midbro.c deleted file mode 100644 index e2f9644..0000000 --- a/broccoli/src/midbro.c +++ /dev/null @@ -1,74 +0,0 @@ -#include -#include -#include -#include "fifoqueue.h" -#include "broevent.h" -#include "midbro.h" -#ifdef BROCCOLI -#include -#endif - -Fifo_q * queue; -pthread_t event_listener; -sigset_t signal_set; - - void -sigint_handler(int signal) -{ - printf("\nStatistics:\n" - "Total values received: %d\n" - "Total values dropped: %d\n" - "Total values released: %d\n" - "Maximum buffer utilization: %d\n" - "Buffer fixed size: %d\n" - "Buffer size upon termination: %d\n", - queue->valuesReceived, queue->droppedValues, - queue->valuesReleased, queue->largestBufferSize, - queue->maxSize, queue->currentSize); - exit(0); -} - void -request_n_values(int number, int arrayOfValues[]) -{ - int i; - Sensor_t * sensor; - for(i=0; ivalue; - free(sensor); - } - printf("Release %d sensor data values\n", number); -} - int -request_value() -{ - int value; - Sensor_t * sensor; - sensor = pop_from_queue(queue); - value = sensor->value; - free(sensor); - printf("Release 1 sensor data value\n"); - return value; -} - - void -start_data_capture() -{ - int res; - queue = init_queue(500); /* Initiate queue with fixed size */ - /* Create producer thread that listen for bro events */ - sigemptyset(&signal_set); - sigaddset(&signal_set, SIGINT); - res = pthread_sigmask(SIG_BLOCK, &signal_set, NULL); - if(res != 0) - perror("SIGINT block"); - res = pthread_create(&event_listener, NULL, bro_event_listener, queue); - if(res){ - perror("Unable to create thread"); - exit(-1); - } - res = pthread_sigmask(SIG_UNBLOCK, &signal_set, NULL); - if(res != 0) - perror("SIGINT unblock"); - signal(SIGINT, sigint_handler); -} diff --git a/broccoli/src/pasad.c b/broccoli/src/pasad.c deleted file mode 100644 index 58dc9ab..0000000 --- a/broccoli/src/pasad.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - - -Course- - DAT300: Data-driven support for cyber-physical systems - - -Project- - Intrusion Detection for Industrial Control Networks - - -Group 8- - Hassan Ghalayini - hassang@student.chalmers.se - Malama Kasanda - malama@student.chalmers.se - Vaios Taxiarchis - vaios@student.chalmers.se - - Modified by Robin Krahl , Group 3: - - Write sensor readings and distance to text files - - Take the arguments N, L, r from argc - - Formatting - - */ - -#include -#include -#include -#include "midbro.h" - -int main(int argc, char **argv) -{ - clock_t begin; - int l=0; - double t=30; - - if (argc != 4) { - fprintf(stderr, "Usage: %s N L r\n", argv[0]); - fprintf(stderr, " Example values: N = 1000, L = 500, r = 18\n"); - fprintf(stderr, "Wrong argument count. Aborting.\n"); - return 1; - } - - int N = atoi(argv[1]); - int L = atoi(argv[2]); - int r = atoi(argv[3]); - - /* Arrays and variables */ - int sL=86336; - double s[sL]; - double U[L][r]; - double X[L]; - double product_Xt_P_X; - double product_Xt_X; - int i=0,j=0,c=0,d=0,k=0; - double sum=0.0,dist=0.0; - - start_data_capture(); - - /* File Descriptor to read projection matrix from U.txt */ - FILE *file; - char ch='a'; - int flag=0; - file=fopen("U.txt", "r"); - if (!file) { - fprintf(stderr, "Could not open U.txt. Aborting.\n"); - return 1; - } - printf(" >Reading U[%dx%d] matrix from .txt file...",L,r); - /* Read all values to an array */ - for(i=0;i