Newer
Older
printf -- "--[[ This file is generated by ./kres-gen.sh ]] ffi.cdef[[\n"
## Various types (mainly), from libknot and libkres
typedef struct knot_dump_style knot_dump_style_t;
extern const knot_dump_style_t KNOT_DUMP_STYLE_DEFAULT;
"
# The generator doesn't work well with typedefs of functions.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
typedef struct knot_mm {
void *ctx, *alloc, *free;
} knot_mm_t;
typedef void *(*map_alloc_f)(void *, size_t);
typedef void (*map_free_f)(void *baton, void *ptr);
"
./scripts/gen-cdefs.sh libkres types <<-EOF
knot_section_t
knot_rrinfo_t
knot_dname_t
knot_rdata_t
knot_rdataset_t
struct knot_rdataset
knot_rrset_t
knot_pktsection_t
struct knot_pkt
knot_pkt_t
# generics
map_t
# libkres
rr_array_t
#struct ranked_rr_array_entry # TODO: prepared for vld-refactoring
#ranked_rr_array_entry_t
#ranked_rr_array_t
struct kr_zonecut
kr_qarray_t
struct kr_rplan
struct kr_request
EOF
genResType() {
echo "$1" | ./scripts/gen-cdefs.sh libkres types
}
# No simple way to fixup this rename in ./kres.lua AFAIK.
genResType "struct knot_rrset" | sed 's/\<owner\>/_owner/'
## Some definitions would need too many deps, so shorten them.
genResType "struct kr_query" | sed '/struct kr_nsrep/,$ d'
genResType "struct kr_context" | sed '/struct kr_cache/,$ d'
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Getting struct query_flag is a bit complex.
genResType "enum kr_query_flag" | sed -e 's/enum kr_query_flag/struct query_flag/' \
-e 's/QUERY_NO_THROTTLE/& = 2/' `# a special case for consecutive integers` \
-e 's@\<QUERY_\([A-Z_0-9]*\) = \([0-9]*\)@static const int \1 = \2;@g' \
-e 's/,//g'
## libknot API
./scripts/gen-cdefs.sh libknot functions <<-EOF
# Domain names
knot_dname_size
knot_dname_from_str
knot_dname_to_str
# Resource records
knot_rdata_rdlen
knot_rdata_data
knot_rdataset_at
knot_rrset_ttl
knot_rrset_txt_dump_data
knot_rrset_txt_dump
# Packet
knot_pkt_qname
knot_pkt_qtype
knot_pkt_qclass
knot_pkt_begin
knot_pkt_put_question
knot_pkt_rr
knot_pkt_section
EOF
## libkres API
./scripts/gen-cdefs.sh libkres functions <<-EOF
# Resolution request
kr_resolve_plan
kr_resolve_pool
# Resolution plan
kr_rplan_push
kr_rplan_pop
kr_rplan_resolved
# Nameservers
kr_nsrep_set
# Utils
kr_rand_uint
kr_pkt_put
kr_pkt_recycle
kr_inaddr
kr_inaddr_family
kr_inaddr_len
kr_straddr_family
kr_straddr_subnet
kr_bitcmp
kr_family_len
kr_rrarray_add
# Trust anchors
kr_ta_get
kr_ta_add
kr_ta_del
kr_ta_clear
# DNSSEC
kr_dnssec_key_ksk
kr_dnssec_key_revoked
kr_dnssec_key_tag
kr_dnssec_key_match
EOF