Added a void* user_data pointer to HAction
This commit is contained in:
parent
bba60f5db9
commit
e487d5435c
18 changed files with 83 additions and 73 deletions
|
|
@ -23,7 +23,7 @@
|
|||
// They must be named act_<rulename>.
|
||||
///
|
||||
|
||||
HParsedToken *act_bsfdig(const HParseResult *p)
|
||||
HParsedToken *act_bsfdig(const HParseResult *p, void* user_data)
|
||||
{
|
||||
HParsedToken *res = H_MAKE_UINT(0);
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ H_ACT_APPLY(act_index0, h_act_index, 0);
|
|||
#define act_document act_index0
|
||||
|
||||
// General-form action to turn a block of base64 digits into bytes.
|
||||
HParsedToken *act_base64_n(int n, const HParseResult *p)
|
||||
HParsedToken *act_base64_n(int n, const HParseResult *p, void* user_data)
|
||||
{
|
||||
HParsedToken *res = H_MAKE_SEQN(n);
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ H_ACT_APPLY(act_base64_3, act_base64_n, 3);
|
|||
H_ACT_APPLY(act_base64_2, act_base64_n, 2);
|
||||
H_ACT_APPLY(act_base64_1, act_base64_n, 1);
|
||||
|
||||
HParsedToken *act_base64(const HParseResult *p)
|
||||
HParsedToken *act_base64(const HParseResult *p, void* user_data)
|
||||
{
|
||||
assert(p->ast->token_type == TT_SEQUENCE);
|
||||
assert(p->ast->seq->used == 2);
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ uint8_t bsfdig_value(const HParsedToken *p)
|
|||
// helper: append a byte value to a sequence
|
||||
#define seq_append_byte(res, b) h_seq_snoc(res, H_MAKE_UINT(b))
|
||||
|
||||
HParsedToken *act_base64(const HParseResult *p)
|
||||
HParsedToken *act_base64(const HParseResult *p, void* user_data)
|
||||
{
|
||||
assert(p->ast->token_type == TT_SEQUENCE);
|
||||
assert(p->ast->seq->used == 2);
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ void set_rdata(struct dns_rr *rr, HCountedArray *rdata) {
|
|||
}
|
||||
}
|
||||
|
||||
HParsedToken* act_header(const HParseResult *p) {
|
||||
HParsedToken* act_header(const HParseResult *p, void* user_data) {
|
||||
HParsedToken **fields = h_seq_elements(p->ast);
|
||||
dns_header_t header_ = {
|
||||
.id = H_CAST_UINT(fields[0]),
|
||||
|
|
@ -109,7 +109,7 @@ HParsedToken* act_header(const HParseResult *p) {
|
|||
return H_MAKE(dns_header_t, header);
|
||||
}
|
||||
|
||||
HParsedToken* act_label(const HParseResult *p) {
|
||||
HParsedToken* act_label(const HParseResult *p, void* user_data) {
|
||||
dns_label_t *r = H_ALLOC(dns_label_t);
|
||||
|
||||
r->len = h_seq_len(p->ast);
|
||||
|
|
@ -121,7 +121,7 @@ HParsedToken* act_label(const HParseResult *p) {
|
|||
return H_MAKE(dns_label_t, r);
|
||||
}
|
||||
|
||||
HParsedToken* act_rr(const HParseResult *p) {
|
||||
HParsedToken* act_rr(const HParseResult *p, void* user_data) {
|
||||
dns_rr_t *rr = H_ALLOC(dns_rr_t);
|
||||
|
||||
rr->name = *H_FIELD(dns_domain_t, 0);
|
||||
|
|
@ -136,7 +136,7 @@ HParsedToken* act_rr(const HParseResult *p) {
|
|||
return H_MAKE(dns_rr_t, rr);
|
||||
}
|
||||
|
||||
HParsedToken* act_question(const HParseResult *p) {
|
||||
HParsedToken* act_question(const HParseResult *p, void* user_data) {
|
||||
dns_question_t *q = H_ALLOC(dns_question_t);
|
||||
HParsedToken **fields = h_seq_elements(p->ast);
|
||||
|
||||
|
|
@ -153,7 +153,7 @@ HParsedToken* act_question(const HParseResult *p) {
|
|||
return H_MAKE(dns_question_t, q);
|
||||
}
|
||||
|
||||
HParsedToken* act_message(const HParseResult *p) {
|
||||
HParsedToken* act_message(const HParseResult *p, void* user_data) {
|
||||
h_pprint(stdout, p->ast, 0, 2);
|
||||
dns_message_t *msg = H_ALLOC(dns_message_t);
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ bool validate_label(HParseResult *p) {
|
|||
|
||||
#define act_label h_act_flatten
|
||||
|
||||
HParsedToken* act_domain(const HParseResult *p) {
|
||||
HParsedToken* act_domain(const HParseResult *p, void* user_data) {
|
||||
HParsedToken *ret = NULL;
|
||||
char *arr = NULL;
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@
|
|||
HParser* init_domain();
|
||||
HParser* init_character_string();
|
||||
|
||||
HParsedToken* act_index0(const HParseResult *p);
|
||||
HParsedToken* act_index0(const HParseResult *p, void* user_data);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ bool validate_null(HParseResult *p) {
|
|||
return (65536 > p->ast->seq->used);
|
||||
}
|
||||
|
||||
HParsedToken *act_null(const HParseResult *p) {
|
||||
HParsedToken *act_null(const HParseResult *p, void* user_data) {
|
||||
dns_rr_null_t *null = H_ALLOC(dns_rr_null_t);
|
||||
|
||||
size_t len = h_seq_len(p->ast);
|
||||
|
|
@ -28,7 +28,7 @@ HParsedToken *act_null(const HParseResult *p) {
|
|||
return H_MAKE(dns_rr_null_t, null);
|
||||
}
|
||||
|
||||
HParsedToken *act_txt(const HParseResult *p) {
|
||||
HParsedToken *act_txt(const HParseResult *p, void* user_data) {
|
||||
dns_rr_txt_t *txt = H_ALLOC(dns_rr_txt_t);
|
||||
|
||||
const HCountedArray *arr = H_CAST_SEQ(p->ast);
|
||||
|
|
@ -47,7 +47,7 @@ HParsedToken *act_txt(const HParseResult *p) {
|
|||
return H_MAKE(dns_rr_txt_t, txt);
|
||||
}
|
||||
|
||||
HParsedToken* act_cstr(const HParseResult *p) {
|
||||
HParsedToken* act_cstr(const HParseResult *p, void* user_data) {
|
||||
dns_cstr_t *cs = H_ALLOC(dns_cstr_t);
|
||||
|
||||
const HCountedArray *arr = H_CAST_SEQ(p->ast);
|
||||
|
|
@ -60,7 +60,7 @@ HParsedToken* act_cstr(const HParseResult *p) {
|
|||
return H_MAKE(dns_cstr_t, cs);
|
||||
}
|
||||
|
||||
HParsedToken* act_soa(const HParseResult *p) {
|
||||
HParsedToken* act_soa(const HParseResult *p, void* user_data) {
|
||||
dns_rr_soa_t *soa = H_ALLOC(dns_rr_soa_t);
|
||||
|
||||
soa->mname = *H_FIELD(dns_domain_t, 0);
|
||||
|
|
@ -74,7 +74,7 @@ HParsedToken* act_soa(const HParseResult *p) {
|
|||
return H_MAKE(dns_rr_soa_t, soa);
|
||||
}
|
||||
|
||||
HParsedToken* act_wks(const HParseResult *p) {
|
||||
HParsedToken* act_wks(const HParseResult *p, void* user_data) {
|
||||
dns_rr_wks_t *wks = H_ALLOC(dns_rr_wks_t);
|
||||
|
||||
wks->address = H_FIELD_UINT(0);
|
||||
|
|
@ -87,7 +87,7 @@ HParsedToken* act_wks(const HParseResult *p) {
|
|||
return H_MAKE(dns_rr_wks_t, wks);
|
||||
}
|
||||
|
||||
HParsedToken* act_hinfo(const HParseResult *p) {
|
||||
HParsedToken* act_hinfo(const HParseResult *p, void* user_data) {
|
||||
dns_rr_hinfo_t *hinfo = H_ALLOC(dns_rr_hinfo_t);
|
||||
|
||||
hinfo->cpu = *H_FIELD(dns_cstr_t, 0);
|
||||
|
|
@ -96,7 +96,7 @@ HParsedToken* act_hinfo(const HParseResult *p) {
|
|||
return H_MAKE(dns_rr_hinfo_t, hinfo);
|
||||
}
|
||||
|
||||
HParsedToken* act_minfo(const HParseResult *p) {
|
||||
HParsedToken* act_minfo(const HParseResult *p, void* user_data) {
|
||||
dns_rr_minfo_t *minfo = H_ALLOC(dns_rr_minfo_t);
|
||||
|
||||
minfo->rmailbx = *H_FIELD(dns_domain_t, 0);
|
||||
|
|
@ -105,7 +105,7 @@ HParsedToken* act_minfo(const HParseResult *p) {
|
|||
return H_MAKE(dns_rr_minfo_t, minfo);
|
||||
}
|
||||
|
||||
HParsedToken* act_mx(const HParseResult *p) {
|
||||
HParsedToken* act_mx(const HParseResult *p, void* user_data) {
|
||||
dns_rr_mx_t *mx = H_ALLOC(dns_rr_mx_t);
|
||||
|
||||
mx->preference = H_FIELD_UINT(0);
|
||||
|
|
@ -184,7 +184,7 @@ HParser* init_rdata(uint16_t type) {
|
|||
for(uint16_t i = 0; i<RDATA_TYPE_MAX+1; i++) {
|
||||
if(parsers[i]) {
|
||||
parsers[i] = h_action(h_sequence(parsers[i], h_end_p(), NULL),
|
||||
act_index0);
|
||||
act_index0, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue