diff --git a/core/api/src/main/java/org/onosproject/event/EventFilter.java b/core/api/src/main/java/org/onosproject/event/EventFilter.java
new file mode 100644
index 0000000..3b2498f
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/event/EventFilter.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.event;
+
+/**
+ * Entity capable of filtering events.
+ */
+public interface EventFilter<E extends Event> {
+
+    /**
+     * Indicates whether the specified event is of interest or not.
+     * Default implementation always returns true.
+     *
+     * @param event event to be inspected
+     * @return true if event is relevant; false otherwise
+     */
+    default boolean isRelevant(E event) {
+        return true;
+    }
+
+}
diff --git a/core/api/src/main/java/org/onosproject/event/EventListener.java b/core/api/src/main/java/org/onosproject/event/EventListener.java
index e4d6937..e77369f 100644
--- a/core/api/src/main/java/org/onosproject/event/EventListener.java
+++ b/core/api/src/main/java/org/onosproject/event/EventListener.java
@@ -18,7 +18,7 @@
 /**
  * Entity capable of receiving events.
  */
-public interface EventListener<E extends Event> {
+public interface EventListener<E extends Event> extends EventFilter<E> {
 
     /**
      * Reacts to the specified event.
diff --git a/core/api/src/main/java/org/onosproject/event/ListenerRegistry.java b/core/api/src/main/java/org/onosproject/event/ListenerRegistry.java
index c84fb68..e6af201 100644
--- a/core/api/src/main/java/org/onosproject/event/ListenerRegistry.java
+++ b/core/api/src/main/java/org/onosproject/event/ListenerRegistry.java
@@ -71,7 +71,9 @@
             try {
                 lastListener = listener;
                 lastStart = System.currentTimeMillis();
-                listener.event(event);
+                if (listener.isRelevant(event)) {
+                    listener.event(event);
+                }
                 lastStart = 0;
             } catch (Exception error) {
                 reportProblem(event, error);
