transform: Break out SEQNUM_KEYED_FIELDS and SEQNUM_PARAMS_FIELDS
[secnet] / transform-common.h
1
2 #ifndef TRANSFORM_COMMON_H
3 #define TRANSFORM_COMMON_H
4
5 #include "magic.h"
6
7 #define KEYED_CHECK do{ \
8 if (!ti->keyed) { \
9 *errmsg="transform unkeyed"; \
10 return 1; \
11 } \
12 }while(0)
13
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 } \
26 }while(0)
27
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
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
55 #define SET_CAPAB_TRANSFORMNUM(def) do{ \
56 st->ops.capab_transformnum=dict_read_number(dict, "capab-num", \
57 False, "transform", loc, (def)); \
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
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
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
84 #endif /*TRANSFORM_COMMON_H*/