// --------------------------------------------------------------------------- // - cnet.hxx - // - standard system library - c network function platform definitions - // --------------------------------------------------------------------------- // - This program is free software; you can redistribute it and/or modify - // - it provided that this copyright notice is kept intact. - // - - // - This program is distributed in the hope that it will be useful, but - // - without any warranty; without even the implied warranty of - // - merchantability or fitness for a particular purpose. In no event shall - // - the copyright holder be liable for any direct, indirect, incidental or - // - special damages arising in any way out of the use of this software. - // --------------------------------------------------------------------------- // - copyright (c) 1999-2007 amaury darsch - // --------------------------------------------------------------------------- // check for unknown platform #if (AFNIX_PLATFORM_PLATID == AFNIX_PLATFORM_UNKNOWN) #error "unknown platform type" #endif // check for unknown processor #if (AFNIX_PLATFORM_PROCID == AFNIX_PROCTYPE_UNKNOWN) #error "unknown processor type" #endif // linux platform #if (AFNIX_PLATFORM_PLATID == AFNIX_PLATFORM_LINUX) #define AFNIX_HAVE_IPV6 #define AFNIX_HAVE_ADDRINFO #define AFNIX_HAVE_NAMEINFO #define AFNIX_HAVE_IPV6_MCAST #define AFNIX_LOOPBACK_NAME "localhost" #include #include #include #include #include #include #include #endif // solaris platform #if (AFNIX_PLATFORM_PLATID == AFNIX_PLATFORM_SOLARIS) #define AFNIX_LOOPBACK_NAME "localhost" #include #include #include #include #include #include #include #include // solaris 2.5.1 uses old setsockopt and does not define socklen_t #if (AFNIX_PLATFORM_MAJOR == 5) && (AFNIX_PLATFORM_MINOR < 7) typedef int socklen_t; #define AFNIX_HAVE_CHAROPT #endif // ipv6 is only on solaris 8 #if (AFNIX_PLATFORM_MAJOR == 5) && (AFNIX_PLATFORM_MINOR >= 8) #define AFNIX_HAVE_IPV6 #define AFNIX_HAVE_IPV6_MCAST #include #endif #endif // freebsd platform #if (AFNIX_PLATFORM_PLATID == AFNIX_PLATFORM_FREEBSD) #define AFNIX_LOOPBACK_NAME "localhost" #define AFNIX_HAVE_ADDRINFO #define AFNIX_HAVE_NAMEINFO #define AFNIX_HAVE_IPV6 #define AFNIX_HAVE_IPV6_MCAST #include #include #include #include #include #include #include #include // define ipv6 multicast socket option #ifndef IPV6_ADD_MEMBERSHIP #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP #endif #ifndef IPV6_DROP_MEMBERSHIP #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP #endif #endif // darwin platform #if (AFNIX_PLATFORM_PLATID == AFNIX_PLATFORM_DARWIN) #define AFNIX_LOOPBACK_NAME "localhost" #define AFNIX_HAVE_ADDRINFO #define AFNIX_HAVE_NAMEINFO #define AFNIX_HAVE_IPV6 #define AFNIX_HAVE_IPV6_MCAST #include #include #include #include #include #include #include #include // define ipv6 multicast socket option #ifndef IPV6_ADD_MEMBERSHIP #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP #endif #ifndef IPV6_DROP_MEMBERSHIP #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP #endif #endif // gnu/freebsd platform #if (AFNIX_PLATFORM_PLATID == AFNIX_PLATFORM_GNUKBSD) #define AFNIX_HAVE_IPV6 #define AFNIX_HAVE_ADDRINFO #define AFNIX_HAVE_NAMEINFO #define AFNIX_HAVE_IPV6_MCAST #define AFNIX_LOOPBACK_NAME "localhost" #include #include #include #include #include #include #include #endif // the global socket address space is defined depending on ipv6 or not. // some implementations are sensitive to the address length #ifdef AFNIX_HAVE_IPV6 // the socket option level #ifndef SOL_IPV6 #define SOL_IPV6 IPPROTO_IPV6 #endif // the address length const socklen_t IP_ADDRLEN_6 = sizeof (struct sockaddr_in6); const socklen_t IP_ADDRLEN_4 = sizeof (struct sockaddr_in); // the global address space typedef union { struct sockaddr_in addr4; struct sockaddr_in6 addr6; } t_sockaddr; #else const socklen_t IP_ADDRLEN_4 = sizeof (struct sockaddr_in); typedef union { struct sockaddr_in addr4; } t_sockaddr; #endif // adjust socket options constant #ifndef SOL_TCP #define SOL_TCP IPPROTO_TCP #endif #ifndef SOL_IP #define SOL_IP IPPROTO_IP #endif