2 #ifndef TRANSFORM_COMMON_H
3 #define TRANSFORM_COMMON_H
7 #define KEYED_CHECK do{ \
9 *errmsg="transform unkeyed"; \
14 #define SEQNUM_CHECK(seqnum, p) do{ \
15 uint32_t skew=seqnum-ti->lastrecvseq; \
16 if (skew<0x8fffffff) { \
18 ti->lastrecvseq=seqnum; \
19 } else if ((0-skew)<(p)->max_seq_skew) { \
23 *errmsg="seqnum: too much skew"; \
28 #define SEQNUM_KEYED_FIELDS \
30 uint32_t lastrecvseq; \
33 #define SEQNUM_KEYED_INIT(initlastrecvseq,initsendseq) \
34 (ti->lastrecvseq=(initlastrecvseq), \
35 ti->sendseq=(initsendseq), \
38 #define TRANSFORM_VALID \
39 static bool_t transform_valid(void *sst) \
41 struct transform_inst *ti=sst; \
46 #define TRANSFORM_DESTROY \
47 static void transform_destroy(void *sst) \
49 struct transform_inst *st=sst; \
51 FILLZERO(*st); /* Destroy key material */ \
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); \
63 #define TRANSFORM_CREATE_CORE \
64 struct transform_inst *ti; \
65 ti=safe_malloc(sizeof(*ti),"transform_create"); \
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; \
76 #define SEQNUM_PARAMS_FIELDS \
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);
84 #endif /*TRANSFORM_COMMON_H*/