Lines Matching full:mm
144 mls_free(struct mac_mls *mm)
147 if (mm != NULL)
148 uma_zfree(zone_mls, mm);
154 mls_atmostflags(struct mac_mls *mm, int flags)
157 if ((mm->mm_flags & flags) != mm->mm_flags)
276 mls_contains_equal(struct mac_mls *mm)
279 if (mm->mm_flags & MAC_MLS_FLAG_EFFECTIVE)
280 if (mm->mm_effective.mme_type == MAC_MLS_TYPE_EQUAL)
283 if (mm->mm_flags & MAC_MLS_FLAG_RANGE) {
284 if (mm->mm_rangelow.mme_type == MAC_MLS_TYPE_EQUAL)
286 if (mm->mm_rangehigh.mme_type == MAC_MLS_TYPE_EQUAL)
294 mls_subject_privileged(struct mac_mls *mm)
297 KASSERT((mm->mm_flags & MAC_MLS_FLAGS_BOTH) == MAC_MLS_FLAGS_BOTH,
301 if (mm->mm_effective.mme_type == MAC_MLS_TYPE_EQUAL)
305 if (mm->mm_rangelow.mme_type == MAC_MLS_TYPE_EQUAL ||
306 mm->mm_rangehigh.mme_type == MAC_MLS_TYPE_EQUAL)
310 if (mm->mm_rangelow.mme_type == MAC_MLS_TYPE_LOW &&
311 mm->mm_rangehigh.mme_type == MAC_MLS_TYPE_HIGH)
319 mls_valid(struct mac_mls *mm)
322 if (mm->mm_flags & MAC_MLS_FLAG_EFFECTIVE) {
323 switch (mm->mm_effective.mme_type) {
330 if (mm->mm_effective.mme_level != 0 ||
332 mm->mm_effective.mme_compartments))
340 if (mm->mm_effective.mme_type != MAC_MLS_TYPE_UNDEF)
344 if (mm->mm_flags & MAC_MLS_FLAG_RANGE) {
345 switch (mm->mm_rangelow.mme_type) {
352 if (mm->mm_rangelow.mme_level != 0 ||
354 mm->mm_rangelow.mme_compartments))
362 switch (mm->mm_rangehigh.mme_type) {
369 if (mm->mm_rangehigh.mme_level != 0 ||
371 mm->mm_rangehigh.mme_compartments))
378 if (!mls_dominate_element(&mm->mm_rangehigh,
379 &mm->mm_rangelow))
382 if (mm->mm_rangelow.mme_type != MAC_MLS_TYPE_UNDEF ||
383 mm->mm_rangehigh.mme_type != MAC_MLS_TYPE_UNDEF)
391 mls_set_range(struct mac_mls *mm, u_short typelow, u_short levellow,
396 mm->mm_rangelow.mme_type = typelow;
397 mm->mm_rangelow.mme_level = levellow;
399 memcpy(mm->mm_rangelow.mme_compartments, compartmentslow,
400 sizeof(mm->mm_rangelow.mme_compartments));
401 mm->mm_rangehigh.mme_type = typehigh;
402 mm->mm_rangehigh.mme_level = levelhigh;
404 memcpy(mm->mm_rangehigh.mme_compartments, compartmentshigh,
405 sizeof(mm->mm_rangehigh.mme_compartments));
406 mm->mm_flags |= MAC_MLS_FLAG_RANGE;
410 mls_set_effective(struct mac_mls *mm, u_short type, u_short level,
414 mm->mm_effective.mme_type = type;
415 mm->mm_effective.mme_level = level;
417 memcpy(mm->mm_effective.mme_compartments, compartments,
418 sizeof(mm->mm_effective.mme_compartments));
419 mm->mm_flags |= MAC_MLS_FLAG_EFFECTIVE;
550 mls_to_string(struct sbuf *sb, struct mac_mls *mm)
553 if (mm->mm_flags & MAC_MLS_FLAG_EFFECTIVE) {
554 if (mls_element_to_string(sb, &mm->mm_effective) == -1)
558 if (mm->mm_flags & MAC_MLS_FLAG_RANGE) {
562 if (mls_element_to_string(sb, &mm->mm_rangelow) == -1)
568 if (mls_element_to_string(sb, &mm->mm_rangehigh) == -1)
582 struct mac_mls *mm;
589 mm = SLOT(label);
591 return (mls_to_string(sb, mm));
651 mls_parse(struct mac_mls *mm, char *string)
678 bzero(mm, sizeof(*mm));
680 error = mls_parse_element(&mm->mm_effective, effective);
683 mm->mm_flags |= MAC_MLS_FLAG_EFFECTIVE;
687 error = mls_parse_element(&mm->mm_rangelow, rangelow);
690 error = mls_parse_element(&mm->mm_rangehigh, rangehigh);
693 mm->mm_flags |= MAC_MLS_FLAG_RANGE;
696 error = mls_valid(mm);
707 struct mac_mls *mm, mm_temp;
719 mm = SLOT(label);
720 *mm = mm_temp;
904 struct mac_mls *mm;
908 mm = SLOT(delabel);
925 mls_set_effective(mm, mls_type, 0, NULL);
932 struct mac_mls *mm;
934 mm = SLOT(delabel);
935 mls_set_effective(mm, MAC_MLS_TYPE_LOW, 0, NULL);