diff --git a/daemon/fw/broadcast-strategy.cpp b/daemon/fw/broadcast-strategy.cpp
new file mode 100644
index 0000000..7781377
--- /dev/null
+++ b/daemon/fw/broadcast-strategy.cpp
@@ -0,0 +1,44 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (C) 2014 Named Data Networking Project
+ * See COPYING for copyright and distribution information.
+ */
+
+#include "broadcast-strategy.hpp"
+
+namespace nfd {
+namespace fw {
+
+BroadcastStrategy::BroadcastStrategy(Forwarder& forwarder)
+  : Strategy(forwarder)
+{
+}
+
+BroadcastStrategy::~BroadcastStrategy()
+{
+}
+
+void
+BroadcastStrategy::afterReceiveInterest(const Face& inFace,
+                   const Interest& interest,
+                   shared_ptr<fib::Entry> fibEntry,
+                   shared_ptr<pit::Entry> pitEntry)
+{
+  const fib::NextHopList& nexthops = fibEntry->getNextHops();
+
+  bool isPropagated = false;
+  for (fib::NextHopList::const_iterator it = nexthops.begin(); it != nexthops.end(); ++it) {
+    shared_ptr<Face> outFace = it->getFace();
+    if (outFace->getId() != inFace.getId()) {
+      this->sendInterest(pitEntry, outFace);
+      isPropagated = true;
+    }
+  }
+
+  if (!isPropagated) {
+    this->rebuffPendingInterest(pitEntry);
+  }
+}
+
+} // namespace fw
+} // namespace nfd
