From 733ad771621e6a43866e9686481609ed9ce6f860 Mon Sep 17 00:00:00 2001 From: Robert Gustafsson Date: Thu, 28 Sep 2017 14:25:01 +0200 Subject: Some renaming --- Makefile | 16 ---------- broccoli/Makefile | 16 ++++++++++ broccoli/broevent.c | 71 +++++++++++++++++++++++++++++++++++++++++++++ broccoli/fifoqueue.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ broccoli/modbus.bro | 26 +++++++++++++++++ fifoqueue.c | 82 ---------------------------------------------------- pasad.c | 71 --------------------------------------------- pasad_bro.bro | 26 ----------------- 8 files changed, 195 insertions(+), 195 deletions(-) delete mode 100644 Makefile create mode 100644 broccoli/Makefile create mode 100644 broccoli/broevent.c create mode 100644 broccoli/fifoqueue.c create mode 100644 broccoli/modbus.bro delete mode 100644 fifoqueue.c delete mode 100644 pasad.c delete mode 100644 pasad_bro.bro diff --git a/Makefile b/Makefile deleted file mode 100644 index 8b304a1..0000000 --- a/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -CC=gcc -CFLAGS = -c -Wall -I/usr/local/include -I/usr/local/include -DBROCCOLI -LDFLAGS = -L/usr/local/lib -lbroccoli - -all: pasad - -pasad: pasad.o fifoqueue.o - $(CC) pasad.o fifoqueue.o -o pasad $(LDFLAGS) - -pasad.o: pasad.c - $(CC) $(CFLAGS) pasad.c - -fifoqueue.o: fifoqueue.c - $(CC) -c -Wall fifoqueue.c -clean: - rm *.o pasad diff --git a/broccoli/Makefile b/broccoli/Makefile new file mode 100644 index 0000000..d895274 --- /dev/null +++ b/broccoli/Makefile @@ -0,0 +1,16 @@ +CC=gcc +CFLAGS = -c -Wall -I/usr/local/include -I/usr/local/include -DBROCCOLI +LDFLAGS = -L/usr/local/lib -lbroccoli + +all: broevent + +broevent: broevent.o fifoqueue.o + $(CC) broevent.o fifoqueue.o -o broevent $(LDFLAGS) + +broevent.o: broevent.c + $(CC) $(CFLAGS) broevent.c + +fifoqueue.o: fifoqueue.c + $(CC) -c -Wall fifoqueue.c +clean: + rm *.o broevent diff --git a/broccoli/broevent.c b/broccoli/broevent.c new file mode 100644 index 0000000..a2b7a28 --- /dev/null +++ b/broccoli/broevent.c @@ -0,0 +1,71 @@ +#ifdef BROCCOLI +#include +#endif +#include "includes/fifoqueue.h" + +char *host_default = "127.0.0.1"; +char *port_default = "47760"; + + static void +bro_response(BroConn *conn, void *data, uint64* registers, uint64* uid) +{ + printf("Received value %"PRIu64" from uid=%"PRIu64"\n",*registers,*uid); + + conn = NULL; + data = NULL; +} + + void +bro_event_listener() +{ + + 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, "response",(BroEventFunc) bro_response, 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){ + perror("select()"); + break; + } + + bro_conn_process_input(bc); + } + + bro_conn_delete(bc); +} + + int +main(int argc, char **argv) +{ + Fifo_q * q = init_queue(5); + + free(q); + return 0; +} diff --git a/broccoli/fifoqueue.c b/broccoli/fifoqueue.c new file mode 100644 index 0000000..56b1dda --- /dev/null +++ b/broccoli/fifoqueue.c @@ -0,0 +1,82 @@ +#include "includes/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; + 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) +{ + /* TODO delete first one if full */ + if(q == NULL){ + return -1; + } + else if(is_full(q)){ + return -1; + } + 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++; + return 1; +} + + Sensor_t * +pop_from_queue(Fifo_q * q) +{ + if(is_empty(q)){ + perror("The queue is empty"); + exit(-1); + } + Queue_t * head = q->head; + q->head = q->head->next; + Sensor_t * sensor = head->sensor; + free(head); + q->currentSize--; + return sensor; +} + + void +print_queue(Fifo_q * q) +{ + Queue_t * current = q->head; + if(current == NULL){ + printf("The queue is empty!"); + return; + } + while(current != NULL){ + printf("sensor value=%d, sensor uid=%d\n", + current->sensor->value, current->sensor->uid); + current = current->next; + } +} diff --git a/broccoli/modbus.bro b/broccoli/modbus.bro new file mode 100644 index 0000000..a2caed9 --- /dev/null +++ b/broccoli/modbus.bro @@ -0,0 +1,26 @@ +@load frameworks/communication/listen +module Pasad; + +redef Communication::listen_port = 47760/tcp; + +redef Communication::listen_ssl = F; + +global response: event(register: count, uid: count); + +redef Communication::nodes += { + ["broevent"] = [$host = 127.0.0.1, $events = /broevent/, $connect=F, $ssl=F] +}; + +event modbus_read_holding_registers_request(c: connection, headers: ModbusHeaders, start_adress: count, quantity: count) + +{ + print fmt("Request: %d", quantity); +} + +event modbus_read_holding_registers_response(c: connection, headers: ModbusHeaders, registers: ModbusRegisters) + +{ + print fmt("Response: %d", registers[0]); + event response(registers[0],headers$uid); +} + diff --git a/fifoqueue.c b/fifoqueue.c deleted file mode 100644 index 56b1dda..0000000 --- a/fifoqueue.c +++ /dev/null @@ -1,82 +0,0 @@ -#include "includes/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; - 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) -{ - /* TODO delete first one if full */ - if(q == NULL){ - return -1; - } - else if(is_full(q)){ - return -1; - } - 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++; - return 1; -} - - Sensor_t * -pop_from_queue(Fifo_q * q) -{ - if(is_empty(q)){ - perror("The queue is empty"); - exit(-1); - } - Queue_t * head = q->head; - q->head = q->head->next; - Sensor_t * sensor = head->sensor; - free(head); - q->currentSize--; - return sensor; -} - - void -print_queue(Fifo_q * q) -{ - Queue_t * current = q->head; - if(current == NULL){ - printf("The queue is empty!"); - return; - } - while(current != NULL){ - printf("sensor value=%d, sensor uid=%d\n", - current->sensor->value, current->sensor->uid); - current = current->next; - } -} diff --git a/pasad.c b/pasad.c deleted file mode 100644 index 537a804..0000000 --- a/pasad.c +++ /dev/null @@ -1,71 +0,0 @@ -#ifdef BROCCOLI -#include -#endif -#include "includes/fifoqueue.h" - -char *host_default = "127.0.0.1"; -char *port_default = "47760"; - - static void -bro_pasad_response(BroConn *conn, void *data, uint64* registers, uint64* uid) -{ - printf("Received value %"PRIu64" from uid=%"PRIu64"\n",*registers,*uid); - - conn = NULL; - data = NULL; -} - - void -bro_event_listener() -{ - - 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, "response",(BroEventFunc) bro_pasad_response, 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){ - perror("select()"); - break; - } - - bro_conn_process_input(bc); - } - - bro_conn_delete(bc); -} - - int -main(int argc, char **argv) -{ - Fifo_q * q = init_queue(5); - - free(q); - return 0; -} diff --git a/pasad_bro.bro b/pasad_bro.bro deleted file mode 100644 index c324856..0000000 --- a/pasad_bro.bro +++ /dev/null @@ -1,26 +0,0 @@ -@load frameworks/communication/listen -module Pasad; - -redef Communication::listen_port = 47760/tcp; - -redef Communication::listen_ssl = F; - -global response: event(register: count, uid: count); - -redef Communication::nodes += { - ["pasad"] = [$host = 127.0.0.1, $events = /pasad/, $connect=F, $ssl=F] -}; - -event modbus_read_holding_registers_request(c: connection, headers: ModbusHeaders, start_adress: count, quantity: count) - -{ - print fmt("Request: %d", quantity); -} - -event modbus_read_holding_registers_response(c: connection, headers: ModbusHeaders, registers: ModbusRegisters) - -{ - print fmt("Response: %d", registers[0]); - event response(registers[0],headers$uid); -} - -- cgit v1.2.1