summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Ramūnas Mažeikis <ramunasnezinomas@gmail.com> 2019-06-04 10:27:05 +0300
committerGravatar Ramūnas Mažeikis <ramunasnezinomas@gmail.com> 2019-06-04 10:27:05 +0300
commitcaace1481ded27b03c47b822f8a7ec66837411c5 (patch)
tree0c63d487ae1a367b6bfff97ee7a5cd456ee0f178 /src
parent9d8c56601d37e420143ef5aeec98d9ab9c5a60fd (diff)
downloadusurpation-caace1481ded27b03c47b822f8a7ec66837411c5.tar.gz
usurpation-caace1481ded27b03c47b822f8a7ec66837411c5.tar.bz2
usurpation-caace1481ded27b03c47b822f8a7ec66837411c5.zip
Protocol: made the thing compile again.
Signed-off-by: Ramūnas Mažeikis <ramunasnezinomas@gmail.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/common/tlv.c17
-rw-r--r--src/device/main.ino1
2 files changed, 11 insertions, 7 deletions
diff --git a/src/common/tlv.c b/src/common/tlv.c
index f02b714..72d0399 100755
--- a/src/common/tlv.c
+++ b/src/common/tlv.c
@@ -27,11 +27,16 @@
#include <stdlib.h>
#include <string.h>
#include <time.h>
-#include <arpa/inet.h>
#include "tlv.h"
#include "net.h"
#include "utils.h"
+#ifdef unix
+#include <arpa/inet.h>
+#else
+#include <lwip/def.h>
+#endif
+
struct tlv_header {
enum tlv_type type;
uint16_t size;
@@ -92,14 +97,14 @@ int tlv_parser_init(struct tlv_parser *parser, char *buf, struct tlv *ret)
* We can safely skip the header.
* */
parser->data = buf + sizeof(struct tlv_header);
- ret->type = data->type;
- ret->length = data->size;
+ ret->type = READ_ENUM(data->type);
+ ret->length = ntohs(data->size);
}
uint16_t tlv_size(char *buf)
{
struct tlv_header *data = buf;
- return htons(data->size);
+ return ntohs(data->size);
}
enum tlv_type tlv_get_type(char *buf)
@@ -112,7 +117,7 @@ size_t tlv_data_size(struct tlv_parser *parser)
{
size_t size;
- if (parser->offset + sizeof(enum tlv_type) + sizeof(size_t) >= parser->size) {
+ if (parser->offset + sizeof(enum tlv_type) + sizeof(size_t) >= tlv_size(parser)) {
size = 0;
} else {
memcpy(&size, parser->data + parser->offset + sizeof(enum tlv_type), sizeof(size_t));
@@ -147,7 +152,7 @@ size_t tlv_raw_size(const struct tlv *t)
return sizeof(*t) + t->length;
}
-int tlv_push_data(struct tlv *t, const char *data, size_t size)
+int tlv_push_data(struct tlv *t, const char *data, uint16_t size)
{
int ret = 0;
size_t final_size = tlv_raw_size(t) + size;
diff --git a/src/device/main.ino b/src/device/main.ino
index 24cfb9c..4376346 100644
--- a/src/device/main.ino
+++ b/src/device/main.ino
@@ -103,7 +103,6 @@ void loop(void)
if (progstate.bytes_read > 0) {
progstate.parser.data = progstate.in_packet_buf;
progstate.parser.offset = 0;
- progstate.parser.size = progstate.bytes_read;
/* Ignore errors for now. */
while (tlv_get(&progstate.parser, &progstate.crr_data) == 0) {
handle_tlv(&progstate.crr_data);