udp, util: Break out send_nak function
[secnet] / transform-common.h
1
2 #ifndef TRANSFORM_COMMON_H
3 #define TRANSFORM_COMMON_H
4
5 #define KEYED_CHECK do{ \
6 if (!ti->keyed) { \
7 *errmsg="transform unkeyed"; \
8 return 1; \
9 } \
10 }while(0)
11
12 #define SEQNUM_CHECK(seqnum, max_skew) do{ \
13 uint32_t skew=seqnum-ti->lastrecvseq; \
14 if (skew<0x8fffffff) { \
15 /* Ok */ \
16 ti->lastrecvseq=seqnum; \
17 } else if ((0-skew)<max_skew) { \
18 /* Ok */ \
19 } else { \
20 /* Too much skew */ \
21 *errmsg="seqnum: too much skew"; \
22 return 2; \
23 } \
24 }while(0)
25
26 #define TRANSFORM_VALID \
27 static bool_t transform_valid(void *sst) \
28 { \
29 struct transform_inst *ti=sst; \
30 \
31 return ti->keyed; \
32 }
33
34 #define TRANSFORM_DESTROY \
35 static void transform_destroy(void *sst) \
36 { \
37 struct transform_inst *st=sst; \
38 \
39 FILLZERO(*st); /* Destroy key material */ \
40 free(st); \
41 }
42
43 #define TRANSFORM_CREATE_CORE \
44 struct transform_inst *ti; \
45 ti=safe_malloc(sizeof(*ti),"transform_create"); \
46 /* mlock XXX */ \
47 ti->ops.st=ti; \
48 ti->ops.setkey=transform_setkey; \
49 ti->ops.valid=transform_valid; \
50 ti->ops.delkey=transform_delkey; \
51 ti->ops.forwards=transform_forward; \
52 ti->ops.reverse=transform_reverse; \
53 ti->ops.destroy=transform_destroy; \
54 ti->keyed=False;
55
56 #endif /*TRANSFORM_COMMON_H*/