diff --git a/core/network-interface-predicate.cpp b/core/network-interface-predicate.cpp
index 81f199b..daf4cf4 100644
--- a/core/network-interface-predicate.cpp
+++ b/core/network-interface-predicate.cpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
+/*
  * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
@@ -122,6 +122,24 @@
          netif.etherAddress.toString() == rule;
 }
 
+static bool
+doesMatchRule2(const ndn::net::NetworkInterface& netif, const std::string& rule)
+{
+  // if '/' is in rule, this is a subnet, check if IP in subnet
+  if (rule.find('/') != std::string::npos) {
+    Network n = boost::lexical_cast<Network>(rule);
+    for (const auto& addr : netif.getNetworkAddresses()) {
+      if (n.doesContain(addr.getIp())) {
+        return true;
+      }
+    }
+  }
+
+  return rule == "*" ||
+         doesMatchPattern(netif.getName(), rule) ||
+         netif.getEthernetAddress().toString() == rule;
+}
+
 bool
 NetworkInterfacePredicate::operator()(const NetworkInterfaceInfo& netif) const
 {
@@ -130,6 +148,13 @@
 }
 
 bool
+NetworkInterfacePredicate::operator()(const ndn::net::NetworkInterface& netif) const
+{
+  return std::any_of(m_whitelist.begin(), m_whitelist.end(), bind(&doesMatchRule2, cref(netif), _1)) &&
+         std::none_of(m_blacklist.begin(), m_blacklist.end(), bind(&doesMatchRule2, cref(netif), _1));
+}
+
+bool
 NetworkInterfacePredicate::operator==(const NetworkInterfacePredicate& other) const
 {
   return this->m_whitelist == other.m_whitelist &&
diff --git a/core/network-interface-predicate.hpp b/core/network-interface-predicate.hpp
index f48da05..2443735 100644
--- a/core/network-interface-predicate.hpp
+++ b/core/network-interface-predicate.hpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
+/*
  * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
@@ -27,6 +27,7 @@
 #define NFD_CORE_NETWORK_INTERFACE_PREDICATE_HPP
 
 #include "common.hpp"
+#include <ndn-cxx/net/network-interface.hpp>
 
 namespace nfd {
 
@@ -62,6 +63,9 @@
   operator()(const NetworkInterfaceInfo& netif) const;
 
   bool
+  operator()(const ndn::net::NetworkInterface& netif) const;
+
+  bool
   operator==(const NetworkInterfacePredicate& other) const;
 
   bool
