1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
void DBG(char *fmt,...)
{
va_list *ap;
#ifdef DEBUG
va_start(ap, fmt);
fprintf(stderr, "\n[fzap:DBG]\t");
vfprintf(stderr, fmt, ap);
fprintf(stderr, "\n");
#endif
}
#if defined(__linux__) || (defined(__svr4__) && defined(__sun__)) || defined(sgi) || defined(__osf__)
#define US ""
#else
#define US "_"
#endif
#define SYM_CONNECT US"connect"
#define SYM_BIND US"bind"
#ifdef LINUX_LIBC
#define LIB_PATH "/lib/libc.so.5"
#define CONNECT(A,B,C) int connect __P((int A, const struct sockaddr * B, int C))
int (*old_connect) (int, struct sockaddr *, int) = NULL;
#define BIND(A,B,C) int bind __P ((int A, const struct sockaddr * B, socklen_t C))
int (*old_bind) (int, const struct sockaddr * , socklen_t) = NULL;
#endif
#ifdef LINUX_GLIBC
#define LIB_PATH "/lib/libc.so.6"
#define CONNECT(A,B,C) int connect __P((int A, __CONST_SOCKADDR_ARG B, socklen_t C))
int (*old_connect) (int, __CONST_SOCKADDR_ARG, int) = NULL;
#define BIND(A,B,C) int bind __P ((int A, const struct sockaddr * B, socklen_t C))
int (*old_bind) (int, __CONST_SOCKADDR_ARG, socklen_t) = NULL;
#endif
#ifdef SOLARIS
#define LIB_PATH "/usr/lib/libsocket.so"
#define CONNECT(A,B,C) int connect (int A, const struct sockaddr * B, socklen_t C)
int (*old_connect) (int, const struct sockaddr *, int) = NULL;
#endif
#ifdef __FreeBSD__
#define LIB_PATH "/usr/lib/libc.so.3.0"
#define CONNECT(A,B,C) int connect(int A, const struct sockaddr *B, int C)
int (*old_connect)(int, const struct sockaddr *, int)=NULL;
#define BIND(A,B,C) int bind __P((int A, const struct sockaddr * B, int C))
int (*old_bind)(int, const struct sockaddr *, int);
#endif
|