1
2dnl
3dnl EC_MESSAGE(MESSAGE)
4dnl
5
6AC_DEFUN(EC_MESSAGE,[
7   AC_MSG_RESULT()
8   AC_MSG_RESULT(${SB}$1...${EB})
9   AC_MSG_RESULT()
10])
11
12dnl
13dnl EC_CHECK_OPTION(STRING, VAR)
14dnl
15
16AC_DEFUN(EC_CHECK_OPTION,[
17   echo "$1 ${SB}$2${EB}"
18])
19
20
21dnl
22dnl EC_LINUX_KERNEL()
23dnl
24
25AC_DEFUN(EC_LINUX_KERNEL,[
26
27   AC_MSG_CHECKING(Linux kernel version)
28   major=`uname -r  | cut -f1 -d"."`
29   minor=`uname -r  | cut -f2 -d"."`
30   uname=`uname -r`
31   AC_MSG_RESULT($uname)
32   if test "$major$minor" -lt 20; then
33      AC_MSG_WARN(*******************************);
34      AC_MSG_WARN(* Kernel >= 2.0.x REQUIRED !! *);
35      AC_MSG_WARN(*******************************);
36      exit;
37   fi
38])
39
40
41dnl
42dnl EC_FREEBSD_VERSION()
43dnl
44
45AC_DEFUN(EC_FREEBSD_VERSION,[
46
47   AC_MSG_CHECKING(FreeBSD version)
48   major=`uname -r  | cut -f1 -d"."`
49   minor=`uname -r  | cut -f2 -d"." | cut -f1 -d"-"`
50   uname=`uname -r`
51   AC_MSG_RESULT($uname)
52   if test "$major$minor" -lt 40; then
53      AC_MSG_WARN(***************************************************);
54      AC_MSG_WARN(* Tested only on FreeBSD 4.x !!                   *);
55      AC_MSG_WARN(* Please send me comments, patches or bug-reports *);
56      AC_MSG_WARN(* on how ettercap works within your system...     *);
57      AC_MSG_WARN(***************************************************);
58   fi
59
60])
61
62
63dnl
64dnl EC_DARWIN_KERNEL()
65dnl
66
67AC_DEFUN(EC_DARWIN_KERNEL,[
68
69   AC_MSG_CHECKING(Darwin version)
70   major=`uname -r  | cut -f1 -d"."`
71   minor=`uname -r  | cut -f2 -d"."`
72   uname=`uname -r`
73   AC_MSG_RESULT($uname)
74   if test "$major$minor" -lt 14; then
75      ac_cv_ec_undefined="suppress"
76   elif test "$major$minor" -gt 13; then
77      ac_cv_ec_undefined="error"
78   fi
79])
80
81
82dnl
83dnl EC_WINDOWS_KERNEL()
84dnl
85
86AC_DEFUN(EC_WINDOWS_KERNEL,[
87
88   AC_MSG_CHECKING(Windows kernel version)
89   tech=`uname | cut -f2 -d"_" | cut -f1 -d"-"`
90   major=`uname | cut -f2 -d"-" | cut -f1 -d"."`
91   minor=`uname | cut -f2 -d"-" | cut -f2 -d"."`
92   AC_MSG_RESULT($tech $major.$minor)
93   if test "$tech" != "NT"; then
94      ac_cv_ec_windows_version="-DWIN9X"
95   elif test "$major$minor" -lt 50; then
96      ac_cv_ec_windows_version="-DWINNT"
97   else
98      ac_cv_ec_windows_version="-DWIN2K_XP"
99   fi
100
101   AC_MSG_CHECKING(Cygwin dll version)
102   uname=`uname -r | cut -f1 -d"("`
103   major=`uname -r | cut -f1 -d"(" | cut -f1 -d"."`
104   minor=`uname -r | cut -f1 -d"(" | cut -f2 -d"."`
105   AC_MSG_RESULT($uname)
106   if test "$major$minor" -lt 13; then
107      AC_MSG_WARN(****************************);
108      AC_MSG_WARN(* Cygwin 1.3.x REQUIRED !! *);
109      AC_MSG_WARN(****************************);
110      exit;
111   fi
112])
113
114
115dnl
116dnl EC_PF_PACKET()
117dnl
118dnl   returns  HAVE_PF_PACKET
119dnl            ac_cv_ec_nopf=1  (if fails)
120dnl
121
122AC_DEFUN(EC_PF_PACKET,[
123
124   AC_MSG_CHECKING(if you can create PF_PACKET socket)
125   AC_TRY_COMPILE([
126   #include <arpa/inet.h>
127   #include <sys/socket.h>
128   #include <features.h>         /* for the glibc version number */
129   #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
130   #include <netpacket/packet.h>
131   #include <net/ethernet.h>     /* the L2 protocols */
132   #else
133   #include <asm/types.h>
134   #include <linux/if_ether.h>   /* The L2 protocols */
135   #endif],
136   [ int sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); ],
137   [  AC_MSG_RESULT(yes)
138      AC_DEFINE(HAVE_PF_PACKET,1) ],
139   [  AC_MSG_RESULT(no);
140      ac_cv_ec_nopf=1 ]
141   )
142
143])
144
145
146dnl
147dnl EC_SOCK_PACKET()
148dnl
149dnl   returns  HAVE_SCOK_PACKET
150dnl            ac_cv_ec_nosock=1 (if fails)
151dnl
152
153AC_DEFUN(EC_SOCK_PACKET,[
154
155   AC_MSG_CHECKING(if you can create SOCK_PACKET socket)
156   AC_TRY_COMPILE([
157   #include <arpa/inet.h>
158   #include <sys/socket.h>
159   #include <features.h>         /* for the glibc version number */
160   #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
161   #include <net/ethernet.h>     /* the L2 protocols */
162   #else
163   #include <asm/types.h>
164   #include <linux/if_ether.h>   /* The L2 protocols */
165   #endif],
166   [ int sock = socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL)); ],
167   [  AC_MSG_RESULT(yes)
168      AC_DEFINE(HAVE_SOCK_PACKET,1) ],
169   [  AC_MSG_RESULT(no);
170      ac_cv_ec_nosock=1 ]
171   )
172
173])
174
175
176
177dnl
178dnl     EC_SOCKLEN_CHECK
179dnl
180dnl results:
181dnl
182dnl     HAVE_SOCKLEN_T
183dnl
184
185AC_DEFUN(EC_SOCKLEN_CHECK,
186   [AC_MSG_CHECKING(for socklen_t in sys/socket.h)
187
188   AC_TRY_RUN([
189      #include <sys/types.h>
190      #include <sys/socket.h>
191
192      int main()
193      {
194         socklen_t from;
195         from = sizeof(socklen_t);
196
197         return 0;
198      }
199   ],
200   [  AC_MSG_RESULT(yes)
201      AC_DEFINE(HAVE_SOCKLEN_T)
202      ],
203      AC_MSG_RESULT(no);
204      ,
205      AC_MSG_RESULT(unkown when cross-compiling)
206   )
207
208])
209
210
211dnl
212dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
213dnl
214dnl usage:
215dnl
216dnl     AC_LBL_SOCKADDR_SA_LEN
217dnl
218dnl results:
219dnl
220dnl     HAVE_SOCKADDR_SA_LEN (defined)
221dnl
222AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
223    [AC_MSG_CHECKING(if sockaddr struct has sa_len member)
224    AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len,
225        AC_TRY_COMPILE([
226#       include <sys/types.h>
227#       include <sys/socket.h>],
228        [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
229        ac_cv_lbl_sockaddr_has_sa_len=yes,
230        ac_cv_lbl_sockaddr_has_sa_len=no))
231    AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len)
232    if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then
233            AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[if struct sockaddr has sa_len])
234    fi])
235
236
237
238dnl
239dnl Checks to see if unaligned memory accesses fail         (from libpcap aclocal.m4)
240dnl
241dnl usage:
242dnl
243dnl   AC_LBL_UNALIGNED_ACCESS
244dnl
245dnl results:
246dnl
247dnl   LBL_ALIGN (DEFINED)
248dnl
249AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
250    [AC_MSG_CHECKING(if unaligned accesses fail)
251    AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
252   [case "$target_cpu" in
253
254   # XXX: should also check that they don't do weird things (like on arm)
255   alpha*|arm*|hp*|mips|sparc)
256      ac_cv_lbl_unaligned_fail=yes
257      ;;
258
259   *)
260      cat >conftest.c <<EOF
261#     include <sys/types.h>
262#     include <sys/wait.h>
263#     include <stdio.h>
264      unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
265      main() {
266      unsigned int i;
267      pid_t pid;
268      int status;
269      /* avoid "core dumped" message */
270      pid = fork();
271      if (pid <  0)
272         exit(2);
273      if (pid > 0) {
274         /* parent */
275         pid = waitpid(pid, &status, 0);
276         if (pid < 0)
277            exit(3);
278         exit(!WIFEXITED(status));
279      }
280      /* child */
281      i = *(unsigned int *)&a[[1]];
282      printf("%d\n", i);
283      exit(0);
284      }
285EOF
286      ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
287          conftest.c $LIBS >/dev/null 2>&1
288      if test ! -x conftest ; then
289         dnl failed to compile for some reason
290         ac_cv_lbl_unaligned_fail=yes
291      else
292         ./conftest >conftest.out
293         if test ! -s conftest.out ; then
294            ac_cv_lbl_unaligned_fail=yes
295         else
296            ac_cv_lbl_unaligned_fail=no
297         fi
298      fi
299      rm -f conftest* core core.conftest
300      ;;
301   esac])
302   AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
303   if test $ac_cv_lbl_unaligned_fail = yes ; then
304      AC_DEFINE(LBL_ALIGN,1,[if unaligned access fails])
305   fi])
306
307
308
309AC_DEFUN(EC_CHECK_DATE,[
310   today=`date +%m%d`
311   if test "$today" -eq "0930" -o "$today" -eq "1114" -o "$today" -eq "0125"; then
312
313      if test "$today" -eq "1114"; then
314         who="ALoR"
315      elif test "$today" -eq "0930"; then
316         who="NaGA"
317      elif test "$today" -eq "0125"; then
318         who="Ettercap"
319      fi
320
321      echo
322      echo
323      echo "********************************"
324      echo "*                              *"
325      echo "* Today is the $who's birthday *"
326      echo "*                              *"
327      echo "********************************"
328      echo
329      echo "  Only for today ettercap is a"
330      echo " cardware or emailware software."
331      echo
332      echo " a mail will be appreciated... ;)"
333      echo
334      exit
335   fi
336])
337
338
339
340dnl
341dnl EC_PTHREAD_CHECK()
342dnl            ac_cv_ec_nopthread=1 (if fails)
343dnl
344
345AC_DEFUN(EC_PTHREAD_CHECK,[
346
347   AC_SEARCH_LIBS(pthread_create, pthread,,
348      [
349         AC_MSG_CHECKING(whether $CC accepts -pthread)
350         CFLAGS_store="$CFLAGS"
351         CFLAGS="$CFLAGS -pthread"
352         AC_TRY_COMPILE([#include <pthread.h>],[pthread_create(NULL, NULL, NULL, NULL);],
353            [AC_MSG_RESULT(yes)
354             LIBS="$LIBS -pthread"],
355            [AC_MSG_RESULT(no)
356               CFLAGS="$CFLAGS_store"
357               AC_MSG_WARN(***************************);
358               AC_MSG_WARN(* PTHREAD ARE REQUIRED !! *);
359               AC_MSG_WARN(***************************);
360               exit
361            ])
362         unset CFLAGS_store
363      ]
364   )
365
366   if test "$OS" = "SOLARIS"; then
367      AC_SEARCH_LIBS(_getfp, pthread,,)
368   fi
369
370])
371
372dnl
373dnl EC_NS_GET()
374dnl
375dnl   returns  HAVE_NS_GET
376dnl
377
378AC_DEFUN(EC_NS_GET,[
379
380   AC_MSG_CHECKING(for NS_GET32)
381   AC_TRY_RUN([
382      #include <arpa/nameser.h>
383
384      int main()
385      {
386         int i;
387         char *p = "\x01\x02\x03\x04";
388         NS_GET32(i, p);
389
390         return 0;
391      }
392   ],
393   [  AC_MSG_RESULT(yes)
394      AC_DEFINE(HAVE_NS_GET,1) ],
395   [  AC_MSG_RESULT(no); ]
396   )
397
398])
399
400dnl vim:ts=3:expandtab
401