From 491a2280ba11e93fe752f62b6f8967d9a0b4937e Mon Sep 17 00:00:00 2001 From: Laurent Ghigonis Date: Wed, 5 Jun 2013 21:24:12 +0200 Subject: add libpcap/libdnet spikes --- spike/Makefile | 9 +++++++++ spike/dnet_intf_get_dst.c | 32 ++++++++++++++++++++++++++++++++ spike/libpcap_pcap_lookupnet.c | 16 ++++++++++++++++ spike/libpcap_pcap_open_live.c | 17 +++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 spike/dnet_intf_get_dst.c create mode 100644 spike/libpcap_pcap_lookupnet.c create mode 100644 spike/libpcap_pcap_open_live.c 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 +#include + +int +main(int argc, char **argv) { + intf_t *intf; + struct addr dst; + struct intf_entry entry; + int err; + + if (argc != 2) { + printf("usage: %s \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 + +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 + +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"); +} -- cgit v1.2.3-59-g8ed1b