diff --git a/daemon/face/null-face.cpp b/daemon/face/null-face.cpp
index a793e3e..2ce5c98 100644
--- a/daemon/face/null-face.cpp
+++ b/daemon/face/null-face.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2015,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -24,19 +24,18 @@
  */
 
 #include "null-face.hpp"
-#include "generic-link-service.hpp"
+#include "null-link-service.hpp"
 #include "internal-transport.hpp"
 
 namespace nfd {
 namespace face {
 
-// FIB could restrict creating a nexthop record toward non-local face in /localhost namespace.
-// NullFace has scope=local to enable creating a "blackhole" FIB entry under /localhost.
-
 shared_ptr<Face>
 makeNullFace(const FaceUri& uri)
 {
-  return make_shared<Face>(make_unique<GenericLinkService>(),
+  // FIB could restrict creating a nexthop record toward a non-local face in /localhost namespace.
+  // Therefore, NullFace has scope=local to enable creating a "blackhole" FIB entry under /localhost.
+  return make_shared<Face>(make_unique<NullLinkService>(),
                            make_unique<InternalForwarderTransport>(uri, uri, ndn::nfd::FACE_SCOPE_LOCAL));
 }
 
diff --git a/daemon/face/null-link-service.hpp b/daemon/face/null-link-service.hpp
new file mode 100644
index 0000000..7a8e8ba
--- /dev/null
+++ b/daemon/face/null-link-service.hpp
@@ -0,0 +1,63 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
+ *
+ * This file is part of NFD (Named Data Networking Forwarding Daemon).
+ * See AUTHORS.md for complete list of NFD authors and contributors.
+ *
+ * NFD is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NFD_DAEMON_FACE_NULL_LINK_SERVICE_HPP
+#define NFD_DAEMON_FACE_NULL_LINK_SERVICE_HPP
+
+#include "link-service.hpp"
+
+namespace nfd {
+namespace face {
+
+/** \brief A LinkService that drops every packet.
+ */
+class NullLinkService final : public LinkService
+{
+private:
+  void
+  doSendInterest(const Interest&) final
+  {
+  }
+
+  void
+  doSendData(const Data&) final
+  {
+  }
+
+  void
+  doSendNack(const lp::Nack&) final
+  {
+  }
+
+  void
+  doReceivePacket(Transport::Packet&&) final
+  {
+  }
+};
+
+} // namespace face
+} // namespace nfd
+
+#endif // NFD_DAEMON_FACE_NULL_LINK_SERVICE_HPP
