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