summaryrefslogtreecommitdiff
path: root/protm.c
diff options
context:
space:
mode:
Diffstat (limited to 'protm.c')
-rw-r--r--protm.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/protm.c b/protm.c
new file mode 100644
index 0000000..932efca
--- /dev/null
+++ b/protm.c
@@ -0,0 +1,25 @@
+#include <stdbool.h>
+#include <assert.h>
+#include "protm.h"
+
+size_t protm_size(const struct protm *pm) {
+ switch (pm->type) {
+ case PROTM_TYPE_ESTAB:
+ return 2;
+
+ case PROTM_TYPE_TERM:
+ return 2;
+
+ case PROTM_TYPE_DATA:
+ return 7 + pm->data.size;
+
+ case PROTM_TYPE_RR:
+ return 3 + pm->rr.nrej;
+
+ case PROTM_TYPE_RR_POLL:
+ return 1;
+
+ default:
+ assert(false);
+ }
+}