@@ -510,6 +510,75 @@ static void damon_test_feed_loop_next_input(struct kunit *test)
510
510
damon_feed_loop_next_input (last_input , 2000 ));
511
511
}
512
512
513
+ static void damon_test_set_filters_default_reject (struct kunit * test )
514
+ {
515
+ struct damos scheme ;
516
+ struct damos_filter * target_filter , * anon_filter ;
517
+
518
+ INIT_LIST_HEAD (& scheme .filters );
519
+ INIT_LIST_HEAD (& scheme .ops_filters );
520
+
521
+ damos_set_filters_default_reject (& scheme );
522
+ /*
523
+ * No filter is installed. Allow by default on both core and ops layer
524
+ * filtering stages, since there are no filters at all.
525
+ */
526
+ KUNIT_EXPECT_EQ (test , scheme .core_filters_default_reject , false);
527
+ KUNIT_EXPECT_EQ (test , scheme .ops_filters_default_reject , false);
528
+
529
+ target_filter = damos_new_filter (DAMOS_FILTER_TYPE_TARGET , true, true);
530
+ damos_add_filter (& scheme , target_filter );
531
+ damos_set_filters_default_reject (& scheme );
532
+ /*
533
+ * A core-handled allow-filter is installed.
534
+ * Rejct by default on core layer filtering stage due to the last
535
+ * core-layer-filter's behavior.
536
+ * Allow by default on ops layer filtering stage due to the absence of
537
+ * ops layer filters.
538
+ */
539
+ KUNIT_EXPECT_EQ (test , scheme .core_filters_default_reject , true);
540
+ KUNIT_EXPECT_EQ (test , scheme .ops_filters_default_reject , false);
541
+
542
+ target_filter -> allow = false;
543
+ damos_set_filters_default_reject (& scheme );
544
+ /*
545
+ * A core-handled reject-filter is installed.
546
+ * Allow by default on core layer filtering stage due to the last
547
+ * core-layer-filter's behavior.
548
+ * Allow by default on ops layer filtering stage due to the absence of
549
+ * ops layer filters.
550
+ */
551
+ KUNIT_EXPECT_EQ (test , scheme .core_filters_default_reject , false);
552
+ KUNIT_EXPECT_EQ (test , scheme .ops_filters_default_reject , false);
553
+
554
+ anon_filter = damos_new_filter (DAMOS_FILTER_TYPE_ANON , true, true);
555
+ damos_add_filter (& scheme , anon_filter );
556
+
557
+ damos_set_filters_default_reject (& scheme );
558
+ /*
559
+ * A core-handled reject-filter and ops-handled allow-filter are installed.
560
+ * Allow by default on core layer filtering stage due to the existence
561
+ * of the ops-handled filter.
562
+ * Reject by default on ops layer filtering stage due to the last
563
+ * ops-layer-filter's behavior.
564
+ */
565
+ KUNIT_EXPECT_EQ (test , scheme .core_filters_default_reject , false);
566
+ KUNIT_EXPECT_EQ (test , scheme .ops_filters_default_reject , true);
567
+
568
+ target_filter -> allow = true;
569
+ damos_set_filters_default_reject (& scheme );
570
+ /*
571
+ * A core-handled allow-filter and ops-handled allow-filter are
572
+ * installed.
573
+ * Allow by default on core layer filtering stage due to the existence
574
+ * of the ops-handled filter.
575
+ * Reject by default on ops layer filtering stage due to the last
576
+ * ops-layer-filter's behavior.
577
+ */
578
+ KUNIT_EXPECT_EQ (test , scheme .core_filters_default_reject , false);
579
+ KUNIT_EXPECT_EQ (test , scheme .ops_filters_default_reject , true);
580
+ }
581
+
513
582
static struct kunit_case damon_test_cases [] = {
514
583
KUNIT_CASE (damon_test_target ),
515
584
KUNIT_CASE (damon_test_regions ),
@@ -527,6 +596,7 @@ static struct kunit_case damon_test_cases[] = {
527
596
KUNIT_CASE (damos_test_new_filter ),
528
597
KUNIT_CASE (damos_test_filter_out ),
529
598
KUNIT_CASE (damon_test_feed_loop_next_input ),
599
+ KUNIT_CASE (damon_test_set_filters_default_reject ),
530
600
{},
531
601
};
532
602
0 commit comments