diff --git a/filter/filter.c b/filter/filter.c
index cd41960..a6e7ee3 100644
--- a/filter/filter.c
+++ b/filter/filter.c
@@ -377,6 +377,11 @@ val_in_range(struct f_val v1, struct f_val v2)
   if ((v1.type == T_PREFIX) && (v2.type == T_PREFIX_SET))
     return trie_match_fprefix(v2.val.ti, &v1.val.px);
 
+  if ((v1.type == T_IP) && (v2.type == T_PREFIX_SET)) {
+    v1.val.px.len = MAX_PREFIX_LENGTH;
+    return trie_match_fprefix(v2.val.ti, &v1.val.px);
+  }
+
   if (v2.type != T_SET)
     return CMP_ERROR;
 
