diff --git a/flowspec/forms.py b/flowspec/forms.py
index e82303c5dd048ae13fc21b35b2f24d6583c21f51..b39cfc08822109708b3a7b07b0d69fdc92ce84be 100644
--- a/flowspec/forms.py
+++ b/flowspec/forms.py
@@ -165,6 +165,7 @@ class RouteForm(forms.ModelForm):
         destination = self.cleaned_data.get('destination', None)
         destinationports = self.cleaned_data.get('destinationport', None)
         user = self.cleaned_data.get('applier', None)
+        fragmenttypes = self.cleaned_data.get('fragmenttype', None)
 
         if source:
             source = ip_network(source, strict=False).compressed
@@ -184,6 +185,15 @@ class RouteForm(forms.ModelForm):
         else:
             existing_routes = existing_routes.filter(protocol=None)
 
+        if fragmenttypes:
+            route_pk_list=get_fragementtypes_route_pks(fragmenttypes, existing_routes)
+            if route_pk_list:
+                existing_routes = existing_routes.filter(pk__in=route_pk_list)
+            else:
+                existing_routes = existing_routes.filter(fragmenttype=None) 
+        else:
+            existing_routes = existing_routes.filter(fragmenttype=None)
+
         if sourceports:
             route_pk_list=get_matchingport_route_pks(sourceports, existing_routes)
             if route_pk_list:
@@ -294,6 +304,14 @@ def get_matchingport_route_pks(portlist, routes):
             route_pk_list.append(route.pk)
     return route_pk_list
 
+def get_fragementtypes_route_pks(fragmenttype_list, routes):
+    route_pk_list = []
+    fragmenttype_value_list = value_list_to_list(fragmenttype_list.values_list('fragmenttype').order_by('fragmenttype'))
+    for route in routes:
+        rsp = value_list_to_list(route.fragmenttype.all().values_list('fragmenttype').order_by('fragmenttype'))
+        if rsp and rsp == fragmenttype_value_list:
+            route_pk_list.append(route.pk)
+    return route_pk_list
 
 def get_matchingprotocol_route_pks(protocolist, routes):
     route_pk_list = []