transform: Break out SEQNUM_KEYED_FIELDS and SEQNUM_PARAMS_FIELDS
[secnet] / transform-common.h
CommitLineData
92a7d254
IJ
1
2#ifndef TRANSFORM_COMMON_H
3#define TRANSFORM_COMMON_H
4
5b5f297f
IJ
5#include "magic.h"
6
92a7d254
IJ
7#define KEYED_CHECK do{ \
8 if (!ti->keyed) { \
9 *errmsg="transform unkeyed"; \
10 return 1; \
11 } \
12 }while(0)
13
35d30aa3
IJ
14#define SEQNUM_CHECK(seqnum, p) do{ \
15 uint32_t skew=seqnum-ti->lastrecvseq; \
16 if (skew<0x8fffffff) { \
17 /* Ok */ \
18 ti->lastrecvseq=seqnum; \
19 } else if ((0-skew)<(p)->max_seq_skew) { \
20 /* Ok */ \
21 } else { \
22 /* Too much skew */ \
23 *errmsg="seqnum: too much skew"; \
24 return 2; \
25 } \
92a7d254
IJ
26 }while(0)
27
35d30aa3
IJ
28#define SEQNUM_KEYED_FIELDS \
29 uint32_t sendseq; \
30 uint32_t lastrecvseq; \
31 bool_t keyed
32
33#define SEQNUM_KEYED_INIT(initlastrecvseq,initsendseq) \
34 (ti->lastrecvseq=(initlastrecvseq), \
35 ti->sendseq=(initsendseq), \
36 ti->keyed=True)
37
92a7d254
IJ
38#define TRANSFORM_VALID \
39 static bool_t transform_valid(void *sst) \
40 { \
41 struct transform_inst *ti=sst; \
42 \
43 return ti->keyed; \
44 }
45
46#define TRANSFORM_DESTROY \
47 static void transform_destroy(void *sst) \
48 { \
49 struct transform_inst *st=sst; \
50 \
51 FILLZERO(*st); /* Destroy key material */ \
52 free(st); \
53 }
54
5b5f297f
IJ
55#define SET_CAPAB_TRANSFORMNUM(def) do{ \
56 st->ops.capab_transformnum=dict_read_number(dict, "capab-num", \
35d30aa3 57 False, "transform", loc, (def)); \
5b5f297f
IJ
58 if (st->ops.capab_transformnum > CAPAB_TRANSFORMNUM_MAX) \
59 cfgfatal(loc,"transform","capab-num out of range 0..%d\n", \
60 CAPAB_TRANSFORMNUM_MAX); \
61 }while(0)
62
92a7d254
IJ
63#define TRANSFORM_CREATE_CORE \
64 struct transform_inst *ti; \
65 ti=safe_malloc(sizeof(*ti),"transform_create"); \
66 /* mlock XXX */ \
67 ti->ops.st=ti; \
68 ti->ops.setkey=transform_setkey; \
69 ti->ops.valid=transform_valid; \
70 ti->ops.delkey=transform_delkey; \
71 ti->ops.forwards=transform_forward; \
72 ti->ops.reverse=transform_reverse; \
73 ti->ops.destroy=transform_destroy; \
74 ti->keyed=False;
75
35d30aa3
IJ
76#define SEQNUM_PARAMS_FIELDS \
77 uint32_t max_seq_skew
78
79#define SEQNUM_PARAMS_INIT(dict,p,desc,loc) \
80 (p)->max_seq_skew=dict_read_number((dict), "max-sequence-skew", \
81 False, (desc), (loc), 10);
82
83
92a7d254 84#endif /*TRANSFORM_COMMON_H*/