diff --git a/daemon/fw/unsolicited-data-policy.cpp b/daemon/fw/unsolicited-data-policy.cpp
index 67d4d37..dd68e38 100644
--- a/daemon/fw/unsolicited-data-policy.cpp
+++ b/daemon/fw/unsolicited-data-policy.cpp
@@ -40,12 +40,31 @@
   return os << static_cast<int>(d);
 }
 
+UnsolicitedDataPolicy::Registry&
+UnsolicitedDataPolicy::getRegistry()
+{
+  static Registry registry;
+  return registry;
+}
+
+unique_ptr<UnsolicitedDataPolicy>
+UnsolicitedDataPolicy::create(const std::string& key)
+{
+  Registry& registry = getRegistry();
+  auto i = registry.find(key);
+  return i == registry.end() ? nullptr : i->second();
+}
+
+NFD_REGISTER_UNSOLICITED_DATA_POLICY(DropAllUnsolicitedDataPolicy, "drop-all");
+
 UnsolicitedDataDecision
 DropAllUnsolicitedDataPolicy::decide(const Face& inFace, const Data& data) const
 {
   return UnsolicitedDataDecision::DROP;
 }
 
+NFD_REGISTER_UNSOLICITED_DATA_POLICY(AdmitLocalUnsolicitedDataPolicy, "admit-local");
+
 UnsolicitedDataDecision
 AdmitLocalUnsolicitedDataPolicy::decide(const Face& inFace, const Data& data) const
 {
@@ -55,6 +74,8 @@
   return UnsolicitedDataDecision::DROP;
 }
 
+NFD_REGISTER_UNSOLICITED_DATA_POLICY(AdmitNetworkUnsolicitedDataPolicy, "admit-network");
+
 UnsolicitedDataDecision
 AdmitNetworkUnsolicitedDataPolicy::decide(const Face& inFace, const Data& data) const
 {
@@ -64,30 +85,13 @@
   return UnsolicitedDataDecision::DROP;
 }
 
+NFD_REGISTER_UNSOLICITED_DATA_POLICY(AdmitAllUnsolicitedDataPolicy, "admit-all");
+
 UnsolicitedDataDecision
 AdmitAllUnsolicitedDataPolicy::decide(const Face& inFace, const Data& data) const
 {
   return UnsolicitedDataDecision::CACHE;
 }
 
-unique_ptr<UnsolicitedDataPolicy>
-makeUnsolicitedDataPolicy(const std::string& key)
-{
-  /// \todo register policy with a macro
-  if (key == "drop-all") {
-    return make_unique<DropAllUnsolicitedDataPolicy>();
-  }
-  if (key == "admit-local") {
-    return make_unique<AdmitLocalUnsolicitedDataPolicy>();
-  }
-  if (key == "admit-network") {
-    return make_unique<AdmitNetworkUnsolicitedDataPolicy>();
-  }
-  if (key == "admit-all") {
-    return make_unique<AdmitAllUnsolicitedDataPolicy>();
-  }
-  return nullptr;
-}
-
 } // namespace fw
 } // namespace nfd
