Lines Matching full:key
71 struct avtab_key *key, struct avtab_datum *datum) in avtab_insert_node() argument
78 newnode->key = *key; in avtab_insert_node()
80 if (key->specified & AVTAB_XPERMS) { in avtab_insert_node()
106 static int avtab_insert(struct avtab *h, struct avtab_key *key, struct avtab_datum *datum) in avtab_insert() argument
110 u16 specified = key->specified & ~(AVTAB_ENABLED|AVTAB_ENABLED_OLD); in avtab_insert()
115 hvalue = avtab_hash(key, h->mask); in avtab_insert()
119 if (key->source_type == cur->key.source_type && in avtab_insert()
120 key->target_type == cur->key.target_type && in avtab_insert()
121 key->target_class == cur->key.target_class && in avtab_insert()
122 (specified & cur->key.specified)) { in avtab_insert()
128 if (key->source_type < cur->key.source_type) in avtab_insert()
130 if (key->source_type == cur->key.source_type && in avtab_insert()
131 key->target_type < cur->key.target_type) in avtab_insert()
133 if (key->source_type == cur->key.source_type && in avtab_insert()
134 key->target_type == cur->key.target_type && in avtab_insert()
135 key->target_class < cur->key.target_class) in avtab_insert()
139 newnode = avtab_insert_node(h, hvalue, prev, cur, key, datum); in avtab_insert()
147 * key/specified mask into the table, as needed by the conditional avtab.
151 avtab_insert_nonunique(struct avtab *h, struct avtab_key *key, struct avtab_datum *datum) in avtab_insert_nonunique() argument
155 u16 specified = key->specified & ~(AVTAB_ENABLED|AVTAB_ENABLED_OLD); in avtab_insert_nonunique()
159 hvalue = avtab_hash(key, h->mask); in avtab_insert_nonunique()
163 if (key->source_type == cur->key.source_type && in avtab_insert_nonunique()
164 key->target_type == cur->key.target_type && in avtab_insert_nonunique()
165 key->target_class == cur->key.target_class && in avtab_insert_nonunique()
166 (specified & cur->key.specified)) in avtab_insert_nonunique()
168 if (key->source_type < cur->key.source_type) in avtab_insert_nonunique()
170 if (key->source_type == cur->key.source_type && in avtab_insert_nonunique()
171 key->target_type < cur->key.target_type) in avtab_insert_nonunique()
173 if (key->source_type == cur->key.source_type && in avtab_insert_nonunique()
174 key->target_type == cur->key.target_type && in avtab_insert_nonunique()
175 key->target_class < cur->key.target_class) in avtab_insert_nonunique()
178 return avtab_insert_node(h, hvalue, prev, cur, key, datum); in avtab_insert_nonunique()
181 struct avtab_datum *avtab_search(struct avtab *h, struct avtab_key *key) in avtab_search() argument
185 u16 specified = key->specified & ~(AVTAB_ENABLED|AVTAB_ENABLED_OLD); in avtab_search()
190 hvalue = avtab_hash(key, h->mask); in avtab_search()
193 if (key->source_type == cur->key.source_type && in avtab_search()
194 key->target_type == cur->key.target_type && in avtab_search()
195 key->target_class == cur->key.target_class && in avtab_search()
196 (specified & cur->key.specified)) in avtab_search()
199 if (key->source_type < cur->key.source_type) in avtab_search()
201 if (key->source_type == cur->key.source_type && in avtab_search()
202 key->target_type < cur->key.target_type) in avtab_search()
204 if (key->source_type == cur->key.source_type && in avtab_search()
205 key->target_type == cur->key.target_type && in avtab_search()
206 key->target_class < cur->key.target_class) in avtab_search()
217 avtab_search_node(struct avtab *h, struct avtab_key *key) in avtab_search_node() argument
221 u16 specified = key->specified & ~(AVTAB_ENABLED|AVTAB_ENABLED_OLD); in avtab_search_node()
226 hvalue = avtab_hash(key, h->mask); in avtab_search_node()
229 if (key->source_type == cur->key.source_type && in avtab_search_node()
230 key->target_type == cur->key.target_type && in avtab_search_node()
231 key->target_class == cur->key.target_class && in avtab_search_node()
232 (specified & cur->key.specified)) in avtab_search_node()
235 if (key->source_type < cur->key.source_type) in avtab_search_node()
237 if (key->source_type == cur->key.source_type && in avtab_search_node()
238 key->target_type < cur->key.target_type) in avtab_search_node()
240 if (key->source_type == cur->key.source_type && in avtab_search_node()
241 key->target_type == cur->key.target_type && in avtab_search_node()
242 key->target_class < cur->key.target_class) in avtab_search_node()
258 if (node->key.source_type == cur->key.source_type && in avtab_search_node_next()
259 node->key.target_type == cur->key.target_type && in avtab_search_node_next()
260 node->key.target_class == cur->key.target_class && in avtab_search_node_next()
261 (specified & cur->key.specified)) in avtab_search_node_next()
264 if (node->key.source_type < cur->key.source_type) in avtab_search_node_next()
266 if (node->key.source_type == cur->key.source_type && in avtab_search_node_next()
267 node->key.target_type < cur->key.target_type) in avtab_search_node_next()
269 if (node->key.source_type == cur->key.source_type && in avtab_search_node_next()
270 node->key.target_type == cur->key.target_type && in avtab_search_node_next()
271 node->key.target_class < cur->key.target_class) in avtab_search_node_next()
290 if (temp->key.specified & AVTAB_XPERMS) in avtab_destroy()
361 tmp->key = node->key; in avtab_duplicate()
362 if (tmp->key.specified & AVTAB_XPERMS) { in avtab_duplicate()
441 struct avtab_key key; in avtab_read_item() local
448 memset(&key, 0, sizeof(struct avtab_key)); in avtab_read_item()
471 key.source_type = (u16)val; in avtab_read_item()
472 if (key.source_type != val) { in avtab_read_item()
477 key.target_type = (u16)val; in avtab_read_item()
478 if (key.target_type != val) { in avtab_read_item()
483 key.target_class = (u16)val; in avtab_read_item()
484 if (key.target_class != val) { in avtab_read_item()
508 key.specified = spec_order[i] | enabled; in avtab_read_item()
510 rc = insertf(a, &key, &datum, p); in avtab_read_item()
531 key.source_type = le16_to_cpu(buf16[items++]); in avtab_read_item()
532 key.target_type = le16_to_cpu(buf16[items++]); in avtab_read_item()
533 key.target_class = le16_to_cpu(buf16[items++]); in avtab_read_item()
534 key.specified = le16_to_cpu(buf16[items++]); in avtab_read_item()
536 if (!policydb_type_isvalid(pol, key.source_type) || in avtab_read_item()
537 !policydb_type_isvalid(pol, key.target_type) || in avtab_read_item()
538 !policydb_class_isvalid(pol, key.target_class)) { in avtab_read_item()
545 if (key.specified & spec_order[i]) in avtab_read_item()
554 (key.specified & AVTAB_XPERMS)) { in avtab_read_item()
559 } else if (key.specified & AVTAB_XPERMS) { in avtab_read_item()
587 if ((key.specified & AVTAB_TYPE) && in avtab_read_item()
592 return insertf(a, &key, &datum, p); in avtab_read_item()
652 buf16[0] = cpu_to_le16(cur->key.source_type); in avtab_write_item()
653 buf16[1] = cpu_to_le16(cur->key.target_type); in avtab_write_item()
654 buf16[2] = cpu_to_le16(cur->key.target_class); in avtab_write_item()
655 buf16[3] = cpu_to_le16(cur->key.specified); in avtab_write_item()
660 if (cur->key.specified & AVTAB_XPERMS) { in avtab_write_item()