Lines Matching refs:dfa

197 static int verify_dfa(struct aa_dfa *dfa)  in verify_dfa()  argument
202 state_count = dfa->tables[YYTD_ID_BASE]->td_lolen; in verify_dfa()
203 trans_count = dfa->tables[YYTD_ID_NXT]->td_lolen; in verify_dfa()
207 if (!(BASE_TABLE(dfa)[i] & MATCH_FLAG_DIFF_ENCODE) && in verify_dfa()
208 (DEFAULT_TABLE(dfa)[i] >= state_count)) in verify_dfa()
210 if (BASE_TABLE(dfa)[i] & MATCH_FLAGS_INVALID) { in verify_dfa()
214 if ((BASE_TABLE(dfa)[i] & MATCH_FLAG_DIFF_ENCODE)) { in verify_dfa()
215 if (!(dfa->flags & YYTH_FLAG_DIFF_ENCODE)) { in verify_dfa()
220 if ((BASE_TABLE(dfa)[i] & MATCH_FLAG_OOB_TRANSITION)) { in verify_dfa()
221 if (base_idx(BASE_TABLE(dfa)[i]) < dfa->max_oob) { in verify_dfa()
225 if (!(dfa->flags & YYTH_FLAG_OOB_TRANS)) { in verify_dfa()
230 if (base_idx(BASE_TABLE(dfa)[i]) + 255 >= trans_count) { in verify_dfa()
237 if (NEXT_TABLE(dfa)[i] >= state_count) in verify_dfa() local
239 if (CHECK_TABLE(dfa)[i] >= state_count) in verify_dfa() local
248 (BASE_TABLE(dfa)[j] & MATCH_FLAG_DIFF_ENCODE) && in verify_dfa()
249 !(BASE_TABLE(dfa)[j] & MARK_DIFF_ENCODE); in verify_dfa()
251 k = DEFAULT_TABLE(dfa)[j]; in verify_dfa()
256 BASE_TABLE(dfa)[j] |= MARK_DIFF_ENCODE; in verify_dfa() local
271 static void dfa_free(struct aa_dfa *dfa) in dfa_free() argument
273 if (dfa) { in dfa_free()
276 for (i = 0; i < ARRAY_SIZE(dfa->tables); i++) { in dfa_free()
277 kvfree(dfa->tables[i]); in dfa_free()
278 dfa->tables[i] = NULL; in dfa_free()
280 kfree(dfa); in dfa_free()
290 struct aa_dfa *dfa = container_of(kref, struct aa_dfa, count); in aa_dfa_free_kref() local
291 dfa_free(dfa); in aa_dfa_free_kref()
312 struct aa_dfa *dfa = kzalloc(sizeof(struct aa_dfa), GFP_KERNEL); in aa_dfa_unpack() local
313 if (!dfa) in aa_dfa_unpack()
316 kref_init(&dfa->count); in aa_dfa_unpack()
331 dfa->flags = ntohs(*(__be16 *) (data + 12)); in aa_dfa_unpack()
332 if (dfa->flags & ~(YYTH_FLAGS)) in aa_dfa_unpack()
347 dfa->max_oob = 1; in aa_dfa_unpack()
384 if (dfa->tables[table->td_id]) in aa_dfa_unpack()
386 dfa->tables[table->td_id] = table; in aa_dfa_unpack()
391 error = verify_table_headers(dfa->tables, flags); in aa_dfa_unpack()
396 error = verify_dfa(dfa); in aa_dfa_unpack()
401 return dfa; in aa_dfa_unpack()
405 dfa_free(dfa); in aa_dfa_unpack()
439 aa_state_t aa_dfa_match_len(struct aa_dfa *dfa, aa_state_t start, in aa_dfa_match_len() argument
442 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_match_len()
443 u32 *base = BASE_TABLE(dfa); in aa_dfa_match_len()
444 u16 *next = NEXT_TABLE(dfa); in aa_dfa_match_len()
445 u16 *check = CHECK_TABLE(dfa); in aa_dfa_match_len()
452 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_match_len()
454 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_match_len()
479 aa_state_t aa_dfa_match(struct aa_dfa *dfa, aa_state_t start, const char *str) in aa_dfa_match() argument
481 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_match()
482 u32 *base = BASE_TABLE(dfa); in aa_dfa_match()
483 u16 *next = NEXT_TABLE(dfa); in aa_dfa_match()
484 u16 *check = CHECK_TABLE(dfa); in aa_dfa_match()
491 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_match()
493 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_match()
517 aa_state_t aa_dfa_next(struct aa_dfa *dfa, aa_state_t state, const char c) in aa_dfa_next() argument
519 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_next()
520 u32 *base = BASE_TABLE(dfa); in aa_dfa_next()
521 u16 *next = NEXT_TABLE(dfa); in aa_dfa_next()
522 u16 *check = CHECK_TABLE(dfa); in aa_dfa_next()
525 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_next()
527 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_next()
535 aa_state_t aa_dfa_outofband_transition(struct aa_dfa *dfa, aa_state_t state) in aa_dfa_outofband_transition() argument
537 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_outofband_transition()
538 u32 *base = BASE_TABLE(dfa); in aa_dfa_outofband_transition()
539 u16 *next = NEXT_TABLE(dfa); in aa_dfa_outofband_transition()
540 u16 *check = CHECK_TABLE(dfa); in aa_dfa_outofband_transition()
565 aa_state_t aa_dfa_match_until(struct aa_dfa *dfa, aa_state_t start, in aa_dfa_match_until() argument
568 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_match_until()
569 u32 *base = BASE_TABLE(dfa); in aa_dfa_match_until()
570 u16 *next = NEXT_TABLE(dfa); in aa_dfa_match_until()
571 u16 *check = CHECK_TABLE(dfa); in aa_dfa_match_until()
572 u32 *accept = ACCEPT_TABLE(dfa); in aa_dfa_match_until()
579 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_match_until()
581 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_match_until()
626 aa_state_t aa_dfa_matchn_until(struct aa_dfa *dfa, aa_state_t start, in aa_dfa_matchn_until() argument
629 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_matchn_until()
630 u32 *base = BASE_TABLE(dfa); in aa_dfa_matchn_until()
631 u16 *next = NEXT_TABLE(dfa); in aa_dfa_matchn_until()
632 u16 *check = CHECK_TABLE(dfa); in aa_dfa_matchn_until()
633 u32 *accept = ACCEPT_TABLE(dfa); in aa_dfa_matchn_until()
641 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_matchn_until()
643 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_matchn_until()
701 static aa_state_t leftmatch_fb(struct aa_dfa *dfa, aa_state_t start, in leftmatch_fb() argument
705 u16 *def = DEFAULT_TABLE(dfa); in leftmatch_fb()
706 u32 *base = BASE_TABLE(dfa); in leftmatch_fb()
707 u16 *next = NEXT_TABLE(dfa); in leftmatch_fb()
708 u16 *check = CHECK_TABLE(dfa); in leftmatch_fb()
711 AA_BUG(!dfa); in leftmatch_fb()
721 if (dfa->tables[YYTD_ID_EC]) { in leftmatch_fb()
723 u8 *equiv = EQUIV_TABLE(dfa); in leftmatch_fb()
735 state = aa_dfa_match(dfa, state, str); in leftmatch_fb()
754 state = aa_dfa_match(dfa, state, str); in leftmatch_fb()
782 aa_state_t aa_dfa_leftmatch(struct aa_dfa *dfa, aa_state_t start, in aa_dfa_leftmatch() argument
789 return leftmatch_fb(dfa, start, str, &wb, count); in aa_dfa_leftmatch()