aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Ghigonis <laurent@p1sec.com>2013-06-05 21:24:12 +0200
committerLaurent Ghigonis <laurent@p1sec.com>2013-06-05 21:24:12 +0200
commit491a2280ba11e93fe752f62b6f8967d9a0b4937e (patch)
treedc466f6bddf66480b9f7f7e0a5fed16c7f74f549
parentlibglouglou: comment about prefetch iface/route for traceroute (diff)
downloadglouglou-491a2280ba11e93fe752f62b6f8967d9a0b4937e.tar.xz
glouglou-491a2280ba11e93fe752f62b6f8967d9a0b4937e.zip
add libpcap/libdnet spikes
-rw-r--r--spike/Makefile9
-rw-r--r--spike/dnet_intf_get_dst.c32
-rw-r--r--spike/libpcap_pcap_lookupnet.c16
-rw-r--r--spike/libpcap_pcap_open_live.c17
4 files changed, 74 insertions, 0 deletions
diff --git a/spike/Makefile b/spike/Makefile
index 4d2cebe..2dc18f8 100644
--- a/spike/Makefile
+++ b/spike/Makefile
@@ -7,3 +7,12 @@ igraph_edges:
$(CC) -o igraph_edges igraph_edges.c -ligraph
igraph_graph:
$(CC) -o igraph_graph igraph_graph.c -ligraph
+
+libpcap_pcap_lookupnet:
+ $(CC) -o libpcap_pcap_lookupnet libpcap_pcap_lookupnet.c -lpcap
+
+libpcap_pcap_open_live:
+ $(CC) -o libpcap_pcap_open_live libpcap_pcap_open_live.c -lpcap
+
+dnet_intf_get_dst:
+ $(CC) -o dnet_intf_get_dst dnet_intf_get_dst.c -ldnet
diff --git a/spike/dnet_intf_get_dst.c b/spike/dnet_intf_get_dst.c
new file mode 100644
index 0000000..ed0f3ce
--- /dev/null
+++ b/spike/dnet_intf_get_dst.c
@@ -0,0 +1,32 @@
+#include <dnet.h>
+#include <stdio.h>
+
+int
+main(int argc, char **argv) {
+ intf_t *intf;
+ struct addr dst;
+ struct intf_entry entry;
+ int err;
+
+ if (argc != 2) {
+ printf("usage: %s <ip>\n", argv[0]);
+ return 1;
+ }
+ addr_aton(argv[1], &dst);
+ printf("dst: %s\n", addr_ntoa(&dst));
+
+ intf = intf_open();
+
+ err = intf_get_dst(intf, &entry, &dst);
+ if (err < 0) {
+ printf("intf_get_dst error !\n");
+ return 2;
+ }
+
+ printf("entry:\n");
+ printf(" intf_name: %s\n", entry.intf_name);
+ printf(" intf_addr: %s\n", addr_ntoa(&entry.intf_addr));
+ printf(" intf_link_addr: %s\n", addr_ntoa(&entry.intf_link_addr));
+
+ return 0;
+}
diff --git a/spike/libpcap_pcap_lookupnet.c b/spike/libpcap_pcap_lookupnet.c
new file mode 100644
index 0000000..f330001
--- /dev/null
+++ b/spike/libpcap_pcap_lookupnet.c
@@ -0,0 +1,16 @@
+#include <pcap.h>
+
+int
+main(void) {
+ int err;
+ char errbuf[PCAP_ERRBUF_SIZE];
+ bpf_u_int32 netp, maskp;
+
+ err = pcap_lookupnet("eth0", &netp, &maskp, errbuf);
+ if (err < 0) {
+ printf("pcap_lookupnet failed %d\n", err);
+ return err;
+ }
+ printf("result: %x %x\n", netp, maskp);
+ return 0;
+}
diff --git a/spike/libpcap_pcap_open_live.c b/spike/libpcap_pcap_open_live.c
new file mode 100644
index 0000000..b3c6923
--- /dev/null
+++ b/spike/libpcap_pcap_open_live.c
@@ -0,0 +1,17 @@
+#include <pcap.h>
+
+int
+main(void) {
+ pcap_t *p;
+ char errbuf[PCAP_ERRBUF_SIZE];
+ int fd;
+
+ p = pcap_open_live(NULL, 1500, 1, 500, errbuf);
+ if (!p) {
+ printf("pcap_open_live failed !\n%s\n", errbuf);
+ return 1;
+ }
+ fd = pcap_fileno(p);
+
+ printf("OK\n");
+}