summaryrefslogtreecommitdiff
path: root/rdns_scan/zmap4rdns/src/send-pfring.h
diff options
context:
space:
mode:
Diffstat (limited to 'rdns_scan/zmap4rdns/src/send-pfring.h')
-rw-r--r--rdns_scan/zmap4rdns/src/send-pfring.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/rdns_scan/zmap4rdns/src/send-pfring.h b/rdns_scan/zmap4rdns/src/send-pfring.h
new file mode 100644
index 0000000..9ef29b2
--- /dev/null
+++ b/rdns_scan/zmap4rdns/src/send-pfring.h
@@ -0,0 +1,42 @@
+/*
+ * ZMap Copyright 2013 Regents of the University of Michigan
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+#ifndef ZMAP_SEND_PFRING_H
+#define ZMAP_SEND_PFRING_H
+
+#include "../lib/includes.h"
+#include <sys/ioctl.h>
+
+#if defined(ZMAP_SEND_BSD_H) || defined(ZMAP_SEND_LINUX_H)
+#error "Don't include send-bsd.h or send-linux.h with send-pfring.h"
+#endif
+
+int send_run_init(sock_t socket)
+{
+ (void)socket;
+
+ // All init for pfring happens in get_socket
+ return 0;
+}
+
+int send_packet(sock_t sock, void *buf, int len, uint32_t idx)
+{
+ sock.pf.buffers[idx]->len = len;
+ memcpy(pfring_zc_pkt_buff_data(sock.pf.buffers[idx], sock.pf.queue),
+ buf, len);
+ int ret;
+ do {
+ ret =
+ pfring_zc_send_pkt(sock.pf.queue, &sock.pf.buffers[idx], 0);
+ } while (ret < 0);
+ return ret;
+}
+
+void send_finish(sock_t sock) { pfring_zc_sync_queue(sock.pf.queue, tx_only); }
+
+#endif /* ZMAP_SEND_PFRING_H */