51
52
uint16_t *pattern, *prefix, length, prefix_length;
52
53
uint32_t mindist, maxdist;
54
57
char *virname, *offset;
56
59
uint16_t ch_mindist[2];
57
60
uint16_t ch_maxdist[2];
58
61
uint16_t parts, partno, alt, alt_pattern;
59
62
struct cli_ac_alt **alttable;
60
63
struct cli_ac_patt *next, *next_same;
63
65
uint16_t rtype, type;
69
71
uint8_t leaf, final;
74
struct cli_ac_result {
77
struct cli_ac_result *next;
72
80
#include "matcher.h"
74
82
int cli_ac_addpatt(struct cli_matcher *root, struct cli_ac_patt *pattern);
75
int cli_ac_initdata(struct cli_ac_data *data, uint32_t partsigs, uint8_t tracklen);
83
int cli_ac_initdata(struct cli_ac_data *data, uint32_t partsigs, uint32_t lsigs, uint8_t tracklen);
84
int cli_ac_chklsig(const char *expr, const char *end, uint32_t *lsigcnt, unsigned int *cnt, uint64_t *ids, unsigned int parse_only);
76
85
void cli_ac_freedata(struct cli_ac_data *data);
77
int cli_ac_scanbuff(const unsigned char *buffer, uint32_t length, const char **virname, const struct cli_matcher *root, struct cli_ac_data *mdata, uint32_t offset, cli_file_t ftype, int fd, struct cli_matched_type **ftoffset, unsigned int mode, const cli_ctx *ctx);
86
int cli_ac_scanbuff(const unsigned char *buffer, uint32_t length, const char **virname, void **customdata, struct cli_ac_result **res, const struct cli_matcher *root, struct cli_ac_data *mdata, uint32_t offset, cli_file_t ftype, int fd, struct cli_matched_type **ftoffset, unsigned int mode, const cli_ctx *ctx);
78
87
int cli_ac_buildtrie(struct cli_matcher *root);
79
88
int cli_ac_init(struct cli_matcher *root, uint8_t mindepth, uint8_t maxdepth);
80
89
void cli_ac_free(struct cli_matcher *root);
81
int cli_ac_addsig(struct cli_matcher *root, const char *virname, const char *hexsig, uint32_t sigid, uint16_t parts, uint16_t partno, uint16_t rtype, uint16_t type, uint32_t mindist, uint32_t maxdist, const char *offset, uint8_t target);
90
int cli_ac_addsig(struct cli_matcher *root, const char *virname, const char *hexsig, uint32_t sigid, uint16_t parts, uint16_t partno, uint16_t rtype, uint16_t type, uint32_t mindist, uint32_t maxdist, const char *offset, const uint32_t *lsigid, unsigned int options);
82
91
void cli_ac_setdepth(uint8_t mindepth, uint8_t maxdepth);