From b6722e77a5298d30624ce01c9ab311b75624f37e Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Fri, 17 Sep 2010 11:35:16 -0400 Subject: [PATCH] Packetseer wrapper to let slices see all traffic on a PL node --- packetseer/Makefile | 7 +++++ packetseer/packetseer.c | 63 ++++++++++++++++++++++++++++++++++++++++ packetseer/packetseer.h | 6 ++++ packetseer/pcap | Bin 0 -> 8814 bytes 4 files changed, 76 insertions(+) create mode 100644 packetseer/Makefile create mode 100644 packetseer/packetseer.c create mode 100644 packetseer/packetseer.h create mode 100755 packetseer/pcap diff --git a/packetseer/Makefile b/packetseer/Makefile new file mode 100644 index 0000000..01147d4 --- /dev/null +++ b/packetseer/Makefile @@ -0,0 +1,7 @@ +all: packetseer.so + +LIBDIR=../lib/ +INCLUDEDIR=../lib/ + +packetseer.so: packetseer.c $(LIBDIR)/fdpass.c + gcc -I$(INCLUDEDIR) -shared -ldl packetseer.c $(LIBDIR)/fdpass.c -o packetseer.so diff --git a/packetseer/packetseer.c b/packetseer/packetseer.c new file mode 100644 index 0000000..8ab785d --- /dev/null +++ b/packetseer/packetseer.c @@ -0,0 +1,63 @@ +#include +#include +#include +#include +#include +#include "fdpass.h" +#include + +#define VSYS_PACKETSEER "/vsys/fd_packetseer.control" + +int (*socket_orig)(int f, int p, int s); + +int _init_pslib() { + socket_orig = &socket; + printf("Stored value of socket"); +} + +int socket(int f, int p, int s) +{ + if (!socket_orig) { + void *handle = dlopen("/lib/libc.so.6",RTLD_LAZY); + if (!handle) { + fprintf(stderr,"Error loading libc.so.6\n"); + return -1; + } + socket_orig = dlsym(handle, "socket"); + if (!socket_orig) { + fprintf(stderr,"Error loading socket symbol"); + return -1; + } + fprintf(stderr,"Socket call: %x",socket_orig); + } + + if (f == PF_PACKET) { + int sfd; + struct sockaddr_un addr; + int remotefd; + + sfd = socket(AF_UNIX, SOCK_STREAM, 0); + if (sfd == -1) { + perror("Could not create UNIX socket\n"); + exit(-1); + } + + memset(&addr, 0, sizeof(struct sockaddr_un)); + /* Clear structure */ + addr.sun_family = AF_UNIX; + strncpy(addr.sun_path, VSYS_PACKETSEER, + sizeof(addr.sun_path) - 1); + + if (connect(sfd, (struct sockaddr *) &addr, + sizeof(struct sockaddr_un)) == -1) { + perror("Could not connect to Vsys control socket"); + exit(-1); + } + + remotefd = receive_fd(sfd); + return remotefd; + } + else + return (*socket_orig)(f, p, s); +} + diff --git a/packetseer/packetseer.h b/packetseer/packetseer.h new file mode 100644 index 0000000..930f6f2 --- /dev/null +++ b/packetseer/packetseer.h @@ -0,0 +1,6 @@ +#ifndef _BM_SOCKET_H_ +#define _BM_SOCKET_H_ + +extern int CreateLargeBufSocket(int recvbuf, int sndbuf); + +#endif diff --git a/packetseer/pcap b/packetseer/pcap new file mode 100755 index 0000000000000000000000000000000000000000..942c42a38cd92db511470598c6d5a68cbb8fc86a GIT binary patch literal 8814 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 literal 0 HcmV?d00001 -- 2.43.0