diff options
Diffstat (limited to 'spike')
-rw-r--r-- | spike/Makefile | 9 | ||||
-rw-r--r-- | spike/dnet_intf_get_dst.c | 32 | ||||
-rw-r--r-- | spike/libpcap_pcap_lookupnet.c | 16 | ||||
-rw-r--r-- | spike/libpcap_pcap_open_live.c | 17 |
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"); +} |