Lines Matching refs:dfa

194 static int verify_dfa(struct aa_dfa *dfa)  in verify_dfa()  argument
199 state_count = dfa->tables[YYTD_ID_BASE]->td_lolen; in verify_dfa()
200 trans_count = dfa->tables[YYTD_ID_NXT]->td_lolen; in verify_dfa()
202 if (!(BASE_TABLE(dfa)[i] & MATCH_FLAG_DIFF_ENCODE) && in verify_dfa()
203 (DEFAULT_TABLE(dfa)[i] >= state_count)) in verify_dfa()
205 if (base_idx(BASE_TABLE(dfa)[i]) + 255 >= trans_count) { in verify_dfa()
212 if (NEXT_TABLE(dfa)[i] >= state_count) in verify_dfa() local
214 if (CHECK_TABLE(dfa)[i] >= state_count) in verify_dfa() local
223 (BASE_TABLE(dfa)[j] & MATCH_FLAG_DIFF_ENCODE) && in verify_dfa()
224 !(BASE_TABLE(dfa)[j] & MARK_DIFF_ENCODE); in verify_dfa()
226 k = DEFAULT_TABLE(dfa)[j]; in verify_dfa()
231 BASE_TABLE(dfa)[j] |= MARK_DIFF_ENCODE; in verify_dfa() local
246 static void dfa_free(struct aa_dfa *dfa) in dfa_free() argument
248 if (dfa) { in dfa_free()
251 for (i = 0; i < ARRAY_SIZE(dfa->tables); i++) { in dfa_free()
252 kvfree(dfa->tables[i]); in dfa_free()
253 dfa->tables[i] = NULL; in dfa_free()
255 kfree(dfa); in dfa_free()
265 struct aa_dfa *dfa = container_of(kref, struct aa_dfa, count); in aa_dfa_free_kref() local
266 dfa_free(dfa); in aa_dfa_free_kref()
287 struct aa_dfa *dfa = kzalloc(sizeof(struct aa_dfa), GFP_KERNEL); in aa_dfa_unpack() local
288 if (!dfa) in aa_dfa_unpack()
291 kref_init(&dfa->count); in aa_dfa_unpack()
306 dfa->flags = ntohs(*(__be16 *) (data + 12)); in aa_dfa_unpack()
307 if (dfa->flags != 0 && dfa->flags != YYTH_FLAG_DIFF_ENCODE) in aa_dfa_unpack()
345 if (dfa->tables[table->td_id]) in aa_dfa_unpack()
347 dfa->tables[table->td_id] = table; in aa_dfa_unpack()
352 error = verify_table_headers(dfa->tables, flags); in aa_dfa_unpack()
357 error = verify_dfa(dfa); in aa_dfa_unpack()
362 return dfa; in aa_dfa_unpack()
366 dfa_free(dfa); in aa_dfa_unpack()
400 unsigned int aa_dfa_match_len(struct aa_dfa *dfa, unsigned int start, in aa_dfa_match_len() argument
403 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_match_len()
404 u32 *base = BASE_TABLE(dfa); in aa_dfa_match_len()
405 u16 *next = NEXT_TABLE(dfa); in aa_dfa_match_len()
406 u16 *check = CHECK_TABLE(dfa); in aa_dfa_match_len()
413 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_match_len()
415 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_match_len()
440 unsigned int aa_dfa_match(struct aa_dfa *dfa, unsigned int start, in aa_dfa_match() argument
443 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_match()
444 u32 *base = BASE_TABLE(dfa); in aa_dfa_match()
445 u16 *next = NEXT_TABLE(dfa); in aa_dfa_match()
446 u16 *check = CHECK_TABLE(dfa); in aa_dfa_match()
453 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_match()
455 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_match()
479 unsigned int aa_dfa_next(struct aa_dfa *dfa, unsigned int state, in aa_dfa_next() argument
482 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_next()
483 u32 *base = BASE_TABLE(dfa); in aa_dfa_next()
484 u16 *next = NEXT_TABLE(dfa); in aa_dfa_next()
485 u16 *check = CHECK_TABLE(dfa); in aa_dfa_next()
488 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_next()
490 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_next()
511 unsigned int aa_dfa_match_until(struct aa_dfa *dfa, unsigned int start, in aa_dfa_match_until() argument
514 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_match_until()
515 u32 *base = BASE_TABLE(dfa); in aa_dfa_match_until()
516 u16 *next = NEXT_TABLE(dfa); in aa_dfa_match_until()
517 u16 *check = CHECK_TABLE(dfa); in aa_dfa_match_until()
518 u32 *accept = ACCEPT_TABLE(dfa); in aa_dfa_match_until()
525 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_match_until()
527 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_match_until()
572 unsigned int aa_dfa_matchn_until(struct aa_dfa *dfa, unsigned int start, in aa_dfa_matchn_until() argument
575 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_matchn_until()
576 u32 *base = BASE_TABLE(dfa); in aa_dfa_matchn_until()
577 u16 *next = NEXT_TABLE(dfa); in aa_dfa_matchn_until()
578 u16 *check = CHECK_TABLE(dfa); in aa_dfa_matchn_until()
579 u32 *accept = ACCEPT_TABLE(dfa); in aa_dfa_matchn_until()
587 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_matchn_until()
589 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_matchn_until()
647 static unsigned int leftmatch_fb(struct aa_dfa *dfa, unsigned int start, in leftmatch_fb() argument
651 u16 *def = DEFAULT_TABLE(dfa); in leftmatch_fb()
652 u32 *base = BASE_TABLE(dfa); in leftmatch_fb()
653 u16 *next = NEXT_TABLE(dfa); in leftmatch_fb()
654 u16 *check = CHECK_TABLE(dfa); in leftmatch_fb()
657 AA_BUG(!dfa); in leftmatch_fb()
667 if (dfa->tables[YYTD_ID_EC]) { in leftmatch_fb()
669 u8 *equiv = EQUIV_TABLE(dfa); in leftmatch_fb()
681 state = aa_dfa_match(dfa, state, str); in leftmatch_fb()
700 state = aa_dfa_match(dfa, state, str); in leftmatch_fb()
728 unsigned int aa_dfa_leftmatch(struct aa_dfa *dfa, unsigned int start, in aa_dfa_leftmatch() argument
735 return leftmatch_fb(dfa, start, str, &wb, count); in aa_dfa_leftmatch()