summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/protocol.h5
-rw-r--r--src/common/protocol_private.h13
2 files changed, 18 insertions, 0 deletions
diff --git a/include/protocol.h b/include/protocol.h
index 1f941a4..cd28e2d 100644
--- a/include/protocol.h
+++ b/include/protocol.h
@@ -111,6 +111,11 @@ int get_tlv(struct tlv_parser *parser, struct tlv *ret);
/**
* Appends data to the next packet to be sent. Type of data is determined by
* enum tlv_type.
+ *
+ * In case of overflow return E_TLV_OVERFLOW.
+ *
+ * Overflow can be detected after forming tlv header. This means that the
+ * packet may have changes.
* */
int push_data(struct tlv_packet *packet, enum tlv_type type, char *data);
diff --git a/src/common/protocol_private.h b/src/common/protocol_private.h
index de086cd..fe28aa0 100644
--- a/src/common/protocol_private.h
+++ b/src/common/protocol_private.h
@@ -3,7 +3,20 @@
#include "protocol_private.h"
+/**
+ * Convenience function that pushes bytes to the end of a packet and reports
+ * potential overflow.
+ *
+ * In case of detected overflow nothing is done to the packet.
+ */
int push_bytes(struct tlv_packet *packet, char *data, size_t size);
+
+/**
+ * Convenience function that forms a tlv header at the end of a packet. Reports
+ * potential overflow.
+ *
+ * In case of detected overflow nothing is done to the packet.
+ */
int push_tlv_header(struct tlv_packet *packet, enum tlv_type type, size_t size);
#endif /* PROTOCOL_PRIVATE_H */ \ No newline at end of file