Lines Matching refs:dfa
100 static int verify_dfa(struct aa_dfa *dfa, int flags) in verify_dfa() argument
106 if (!(dfa->tables[YYTD_ID_DEF] && in verify_dfa()
107 dfa->tables[YYTD_ID_BASE] && in verify_dfa()
108 dfa->tables[YYTD_ID_NXT] && dfa->tables[YYTD_ID_CHK])) in verify_dfa()
112 state_count = dfa->tables[YYTD_ID_BASE]->td_lolen; in verify_dfa()
114 if (!dfa->tables[YYTD_ID_ACCEPT]) in verify_dfa()
116 if (state_count != dfa->tables[YYTD_ID_ACCEPT]->td_lolen) in verify_dfa()
120 if (!dfa->tables[YYTD_ID_ACCEPT2]) in verify_dfa()
122 if (state_count != dfa->tables[YYTD_ID_ACCEPT2]->td_lolen) in verify_dfa()
125 if (state_count != dfa->tables[YYTD_ID_DEF]->td_lolen) in verify_dfa()
129 trans_count = dfa->tables[YYTD_ID_NXT]->td_lolen; in verify_dfa()
130 if (trans_count != dfa->tables[YYTD_ID_CHK]->td_lolen) in verify_dfa()
134 if (dfa->tables[YYTD_ID_EC] && in verify_dfa()
135 dfa->tables[YYTD_ID_EC]->td_lolen != 256) in verify_dfa()
140 if (DEFAULT_TABLE(dfa)[i] >= state_count) in verify_dfa() local
142 if (base_idx(BASE_TABLE(dfa)[i]) + 255 >= trans_count) { in verify_dfa()
150 if (NEXT_TABLE(dfa)[i] >= state_count) in verify_dfa() local
152 if (CHECK_TABLE(dfa)[i] >= state_count) in verify_dfa() local
168 static void dfa_free(struct aa_dfa *dfa) in dfa_free() argument
170 if (dfa) { in dfa_free()
173 for (i = 0; i < ARRAY_SIZE(dfa->tables); i++) { in dfa_free()
174 kvfree(dfa->tables[i]); in dfa_free()
175 dfa->tables[i] = NULL; in dfa_free()
177 kfree(dfa); in dfa_free()
187 struct aa_dfa *dfa = container_of(kref, struct aa_dfa, count); in aa_dfa_free_kref() local
188 dfa_free(dfa); in aa_dfa_free_kref()
209 struct aa_dfa *dfa = kzalloc(sizeof(struct aa_dfa), GFP_KERNEL); in aa_dfa_unpack() local
210 if (!dfa) in aa_dfa_unpack()
213 kref_init(&dfa->count); in aa_dfa_unpack()
228 dfa->flags = ntohs(*(u16 *) (data + 12)); in aa_dfa_unpack()
264 if (dfa->tables[table->td_id]) in aa_dfa_unpack()
266 dfa->tables[table->td_id] = table; in aa_dfa_unpack()
272 error = verify_dfa(dfa, flags); in aa_dfa_unpack()
276 return dfa; in aa_dfa_unpack()
280 dfa_free(dfa); in aa_dfa_unpack()
300 unsigned int aa_dfa_match_len(struct aa_dfa *dfa, unsigned int start, in aa_dfa_match_len() argument
303 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_match_len()
304 u32 *base = BASE_TABLE(dfa); in aa_dfa_match_len()
305 u16 *next = NEXT_TABLE(dfa); in aa_dfa_match_len()
306 u16 *check = CHECK_TABLE(dfa); in aa_dfa_match_len()
313 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_match_len()
315 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_match_len()
350 unsigned int aa_dfa_match(struct aa_dfa *dfa, unsigned int start, in aa_dfa_match() argument
353 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_match()
354 u32 *base = BASE_TABLE(dfa); in aa_dfa_match()
355 u16 *next = NEXT_TABLE(dfa); in aa_dfa_match()
356 u16 *check = CHECK_TABLE(dfa); in aa_dfa_match()
363 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_match()
365 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_match()
398 unsigned int aa_dfa_next(struct aa_dfa *dfa, unsigned int state, in aa_dfa_next() argument
401 u16 *def = DEFAULT_TABLE(dfa); in aa_dfa_next()
402 u32 *base = BASE_TABLE(dfa); in aa_dfa_next()
403 u16 *next = NEXT_TABLE(dfa); in aa_dfa_next()
404 u16 *check = CHECK_TABLE(dfa); in aa_dfa_next()
408 if (dfa->tables[YYTD_ID_EC]) { in aa_dfa_next()
410 u8 *equiv = EQUIV_TABLE(dfa); in aa_dfa_next()