diff options
author | 2019-06-04 10:27:05 +0300 | |
---|---|---|
committer | 2019-06-04 10:27:05 +0300 | |
commit | caace1481ded27b03c47b822f8a7ec66837411c5 (patch) | |
tree | 0c63d487ae1a367b6bfff97ee7a5cd456ee0f178 /src/common | |
parent | 9d8c56601d37e420143ef5aeec98d9ab9c5a60fd (diff) | |
download | usurpation-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/common')
-rwxr-xr-x | src/common/tlv.c | 17 |
1 files changed, 11 insertions, 6 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; |