1# sockaddr.m4
2# Copyright (C) 2003 R�mi Denis-Courmont
3# <rdenis (at) simphalempin (dot) com>.
4# This file (sockaddr.m4) is free software; unlimited permission to
5# copy and/or distribute it , with or without modifications, as long
6# as this notice is preserved.
7
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11# PARTICULAR PURPOSE.
12
13AC_DEFUN(RDC_STRUCT_SOCKADDR_LEN,
14[AH_TEMPLATE(HAVE_SA_LEN, [Define to 1 if `struct sockaddr' has a `sa_len' member.])
15AC_CACHE_CHECK([if struct sockaddr has a sa_len member],
16rdc_cv_struct_sockaddr_len,
17[AC_TRY_COMPILE(
18[#if HAVE_SYS_TYPES_H
19# include <sys/types.h>
20#endif
21#if HAVE_SYS_SOCKET_H
22# include <sys/socket.h>
23#endif], [struct sockaddr addr; addr.sa_len = 0;],
24rdc_cv_struct_sockaddr_len=yes, rdc_cv_struct_sockaddr_len=no)])
25if test $rdc_cv_struct_sockaddr_len = yes; then
26  AC_DEFINE(HAVE_SA_LEN)
27fi
28])
29
30AC_DEFUN(RDC_STRUCT_SOCKADDR_STORAGE,
31[AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.])
32AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.])
33AC_CACHE_CHECK([for struct sockaddr_storage in sys/socket.h],
34rdc_cv_struct_sockaddr_storage,
35[AC_TRY_COMPILE(
36[#include <sys/types.h>
37#if HAVE_SYS_SOCKET_H
38# include <sys/socket.h>
39#endif], [struct sockaddr_storage addr;], rdc_cv_struct_sockaddr_storage=yes,
40rdc_cv_struct_sockaddr_storage=no)])
41if test $rdc_cv_struct_sockaddr_storage = no; then
42  AC_DEFINE(sockaddr_storage, sockaddr)
43  AC_DEFINE(ss_family, sa_family)
44fi
45])
46
47AC_DEFUN(RDC_TYPE_SOCKLEN_T,
48[AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
49AC_CACHE_CHECK([for socklen_t in sys/socket.h],
50rdc_cv_type_socklen_t,
51[AC_TRY_COMPILE(
52[#include <sys/types.h>
53#if HAVE_SYS_SOCKET_H
54# include <sys/socket.h>
55#endif], [socklen_t len;], rdc_cv_type_socklen_t=yes, rdc_cv_type_socklen_t=no)
56])
57if test $rdc_cv_type_socklen_t = no; then
58  AC_DEFINE(socklen_t, int)
59fi
60])
61
62AC_DEFUN(RDC_FUNC_SOCKET,
63[AC_SEARCH_LIBS(socket, [socket], $1, $2)
64])
65
66AC_DEFUN(RDC_FUNC_GETADDRINFO,
67[AC_CHECK_FUNCS([getaddrinfo getnameinfo gai_strerror], gai_support=yes,
68gai_support=no)
69AC_LIBSOURCES([getaddrinfo.h, getaddrinfo.c])dnl
70if test $gai_support = no; then
71  AC_CHECK_HEADERS([arpa/inet.h netinet/in.h])
72  AC_SEARCH_LIBS(gethostbyaddr, [resolv])
73  AC_LIBOBJ(getaddrinfo)
74fi
75])
76
77