summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filter/filter.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/filter/filter.c b/filter/filter.c
index 350cb08..63f8967 100644
--- a/filter/filter.c
+++ b/filter/filter.c
@@ -28,6 +28,17 @@ struct f_inst *startup_func = NULL, *test1_func, *test2_func;
#define CMP_ERROR 999
+int
+pm_path_compare(struct f_path_mask *m1, struct f_path_mask *m2)
+{
+ while (1) {
+ if ((!m1) || (!m2))
+ return !((!m1) && (!m2));
+ m1 = m1->next;
+ m2 = m2->next;
+ }
+}
+
/* Compare two values, returns -1, 0, 1 compared, ERROR 999 */
int
val_compare(struct f_val v1, struct f_val v2)
@@ -53,6 +64,8 @@ val_compare(struct f_val v1, struct f_val v2)
case T_IP:
case T_PREFIX:
return ipa_compare(v1.val.px.ip, v2.val.px.ip);
+ case T_PATH_MASK:
+ return pm_path_compare(v1.val.path_mask, v2.val.path_mask);
default:
debug( "Compare of unkown entities: %x\n", v1.type );
return CMP_ERROR;