From 3fa7dd642af57b8b138e9a0d674c2d9960ebedf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ram=C5=ABnas=20Ma=C5=BEeikis?= Date: Wed, 22 May 2019 11:33:51 +0300 Subject: Protocol: fixed type errors. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added const where appropriate to satisfy stricter type checking of C++. Signed-off-by: Ramūnas Mažeikis --- src/common/protocol.cpp | 28 ++++++++++++++-------------- src/common/protocol_private.h | 8 ++++++++ 2 files changed, 22 insertions(+), 14 deletions(-) (limited to 'src/common') diff --git a/src/common/protocol.cpp b/src/common/protocol.cpp index dc0f532..135be37 100644 --- a/src/common/protocol.cpp +++ b/src/common/protocol.cpp @@ -31,7 +31,7 @@ #include #include -#define READ_AS(from, type) (*(type*)(from)) +#define READ_AS(type, from) (*((type*)(from))) int push_data(cd_t connection, const char *data, enum tlv_type type) { @@ -59,7 +59,7 @@ int push_data(cd_t connection, const char *data, enum tlv_type type) return ret; } -static int push_string(cd_t connection, char *str) +static int push_string(cd_t connection, const char *str) { int ret = 0; size_t size = strlen(str); @@ -69,25 +69,25 @@ static int push_string(cd_t connection, char *str) return ret; } -static int push_fpi1(cd_t connection, char *num) +static int push_fpi1(cd_t connection, const char *num) { return push_tlv_header(connection, FPI1, sizeof(fpi1_t)) | push_bytes(connection, num, sizeof(fpi1_t)); } -static int push_timestamp(cd_t connection, char *data) +static int push_timestamp(cd_t connection, const char *data) { return push_tlv_header(connection, TIMESTAMP, sizeof(time_t)) | push_bytes(connection, data, sizeof(time_t)); } -static int push_request(cd_t connection, char *data) +static int push_request(cd_t connection, const char *data) { return push_tlv_header(connection, REQUEST, sizeof(msg_idx_t)) | push_bytes(connection, data, sizeof(msg_idx_t)); } -static int push_reply(cd_t connection, char *data) +static int push_reply(cd_t connection, const char *data) { int ret = 0; size_t msglen = strlen(data + sizeof(msg_idx_t)); @@ -96,7 +96,7 @@ static int push_reply(cd_t connection, char *data) return ret; } -static int push_uuid(cd_t connection, char *data) +static int push_uuid(cd_t connection, const char *data) { return push_tlv_header(connection, UUID, sizeof(uuid_t)) | push_bytes(connection, data, sizeof(uuid_t)); @@ -110,7 +110,7 @@ size_t tlv_count(const struct packet_data * const packet) while (cursor < packet->packet_size) { cursor += sizeof(enum tlv_type); - length = READ_AS(packet->data + cursor, enum tlv_type); + length = READ_AS(enum tlv_type, packet->data + cursor); cursor += sizeof(size_t) + length; ret++; } @@ -121,7 +121,7 @@ size_t tlv_count(const struct packet_data * const packet) } size_t get_tlvs( const struct packet_data * const data, - const struct tlv *buf, + struct tlv *buf, size_t buf_size) { size_t tlvs_read = 0; @@ -139,15 +139,15 @@ size_t get_tlvs( const struct packet_data * const data, return tlvs_read; } -size_t parse_tlv(char *data, size_t cursor, struct tlv *t) +size_t parse_tlv(const char *data, size_t cursor, struct tlv *t) { - char *begin = data + cursor; + const char *begin = data + cursor; - t->type = READ_TLV_TYPE(data + cursor); + t->type = READ_AS(enum tlv_type, data + cursor); cursor += sizeof(enum tlv_type); - t->length += READ_SIZE_T(data + cursor); + t->length += READ_AS(enum tlv_type ,data + cursor); data += sizeof(size_t); - t->data = data + cursor; + t->data = (void*)data + cursor; return data + cursor - begin + 1UL; } diff --git a/src/common/protocol_private.h b/src/common/protocol_private.h index 7433ff0..d50a314 100644 --- a/src/common/protocol_private.h +++ b/src/common/protocol_private.h @@ -35,6 +35,14 @@ * */ size_t tlv_count(const struct packet_data * const packet_data); +/** + * Pushes bytes to outgoing packet and adjusts the offset accordingly. + * + * Returns E_PACKET_OVERFLOW, if no more bytes can fit into the packet. + */ + +int push_bytes(cd_t cd, const char *data, size_t size); + /** * Parses tlv's from packet data and writes them to a buffer of given size. * -- cgit v1.2.3