MCPcopy Create free account
hub / github.com/F-Stack/f-stack / rctl_rule_matches

Function rctl_rule_matches

freebsd/kern/kern_rctl.c:767–829  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

765}
766
767static int
768rctl_rule_matches(const struct rctl_rule *rule, const struct rctl_rule *filter)
769{
770
771 ASSERT_RACCT_ENABLED();
772
773 if (filter->rr_subject_type != RCTL_SUBJECT_TYPE_UNDEFINED) {
774 if (rule->rr_subject_type != filter->rr_subject_type)
775 return (0);
776
777 switch (filter->rr_subject_type) {
778 case RCTL_SUBJECT_TYPE_PROCESS:
779 if (filter->rr_subject.rs_proc != NULL &&
780 rule->rr_subject.rs_proc !=
781 filter->rr_subject.rs_proc)
782 return (0);
783 break;
784 case RCTL_SUBJECT_TYPE_USER:
785 if (filter->rr_subject.rs_uip != NULL &&
786 rule->rr_subject.rs_uip !=
787 filter->rr_subject.rs_uip)
788 return (0);
789 break;
790 case RCTL_SUBJECT_TYPE_LOGINCLASS:
791 if (filter->rr_subject.rs_loginclass != NULL &&
792 rule->rr_subject.rs_loginclass !=
793 filter->rr_subject.rs_loginclass)
794 return (0);
795 break;
796 case RCTL_SUBJECT_TYPE_JAIL:
797 if (filter->rr_subject.rs_prison_racct != NULL &&
798 rule->rr_subject.rs_prison_racct !=
799 filter->rr_subject.rs_prison_racct)
800 return (0);
801 break;
802 default:
803 panic("rctl_rule_matches: unknown subject type %d",
804 filter->rr_subject_type);
805 }
806 }
807
808 if (filter->rr_resource != RACCT_UNDEFINED) {
809 if (rule->rr_resource != filter->rr_resource)
810 return (0);
811 }
812
813 if (filter->rr_action != RCTL_ACTION_UNDEFINED) {
814 if (rule->rr_action != filter->rr_action)
815 return (0);
816 }
817
818 if (filter->rr_amount != RCTL_AMOUNT_UNDEFINED) {
819 if (rule->rr_amount != filter->rr_amount)
820 return (0);
821 }
822
823 if (filter->rr_per != RCTL_SUBJECT_TYPE_UNDEFINED) {
824 if (rule->rr_per != filter->rr_per)

Callers 3

rctl_racct_remove_rulesFunction · 0.85
rctl_get_rules_callbackFunction · 0.85
sys_rctl_get_rulesFunction · 0.85

Calls 1

panicFunction · 0.70

Tested by

no test coverage detected