|
@@ -0,0 +1,89 @@
|
|
|
+#include <hooks/hooks.h>
|
|
|
+#include <dhcp/pkt4.h>
|
|
|
+#include <dhcp/hwaddr.h>
|
|
|
+#include <dhcpsrv/subnet.h>
|
|
|
+#include <dhcpsrv/lease.h>
|
|
|
+#include <util/strutil.h>
|
|
|
+#include <dhcp/option_string.h>
|
|
|
+#include <dhcp/option4_addrlst.h>
|
|
|
+#include <dhcp/docsis3_option_defs.h>
|
|
|
+#include <string>
|
|
|
+
|
|
|
+#include <boost/foreach.hpp>
|
|
|
+
|
|
|
+#include "logger.h"
|
|
|
+#include "common.h"
|
|
|
+
|
|
|
+#include "amqp.h"
|
|
|
+#include "AMQPcpp.h"
|
|
|
+// #include <amqp.h>
|
|
|
+// #include <AMQPcpp.h>
|
|
|
+// #include "amqppublisher.h"
|
|
|
+
|
|
|
+using namespace isc::dhcp;
|
|
|
+using namespace isc::hooks;
|
|
|
+
|
|
|
+int publishMessage(std::string message)
|
|
|
+{
|
|
|
+ try {
|
|
|
+ // AMQP amqp("guest:guest@amqp:5672/");
|
|
|
+ AMQP amqp("guest:guest@172.20.0.6:5672/");
|
|
|
+
|
|
|
+ AMQPExchange * ex = amqp.createExchange("kea");
|
|
|
+
|
|
|
+ ex->Declare("kea", "fanout");
|
|
|
+
|
|
|
+ AMQPQueue * qu2 = amqp.createQueue("kea");
|
|
|
+
|
|
|
+ qu2->Declare();
|
|
|
+ qu2->Bind( "kea", "");
|
|
|
+
|
|
|
+ ex->setHeader("Delivery-mode", 2);
|
|
|
+ ex->setHeader("Content-type", "text/text");
|
|
|
+ ex->setHeader("Content-encoding", "UTF-8");
|
|
|
+
|
|
|
+ ex->Publish( message , "");
|
|
|
+ } catch (AMQPException e) {
|
|
|
+ std::cout << e.getMessage() << std::endl;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+extern "C" {
|
|
|
+
|
|
|
+#include <numeric> //inner_product
|
|
|
+#include <functional> //plus, equal_to, not2
|
|
|
+#include <string>
|
|
|
+#include <stdexcept>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/* IPv4 callouts */
|
|
|
+int pkt4_receive(CalloutHandle& handle)
|
|
|
+{
|
|
|
+ Pkt4Ptr query;
|
|
|
+ handle.getArgument("query4", query);
|
|
|
+
|
|
|
+ // AMQPPublisher amqp;
|
|
|
+ publishMessage(query->toText());
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int pkt4_send(CalloutHandle& handle)
|
|
|
+{
|
|
|
+ Pkt4Ptr response;
|
|
|
+ Pkt4Ptr query;
|
|
|
+ handle.getArgument("response4", response);
|
|
|
+ handle.getArgument("query4", query);
|
|
|
+
|
|
|
+ // AMQPPublisher amqp;
|
|
|
+ publishMessage(query->toText());
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+} // end extern "C"
|