module Bindings.APR.Network.IO where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
import Bindings.APR
import Bindings.APR.ErrNo
import Bindings.APR.File.Types
import Bindings.APR.Pools
import Bindings.APR.Time
import Bindings.APR.Want
c'APR_MAX_SECS_TO_LINGER = 30
c'APR_MAX_SECS_TO_LINGER :: (Num a) => a
c'APRMAXHOSTLEN = 256
c'APRMAXHOSTLEN :: (Num a) => a
foreign import ccall "array_APR_ANYADDR" c'APR_ANYADDR
:: Ptr (CChar)
c'APR_SO_LINGER = 1
c'APR_SO_LINGER :: (Num a) => a
c'APR_SO_KEEPALIVE = 2
c'APR_SO_KEEPALIVE :: (Num a) => a
c'APR_SO_DEBUG = 4
c'APR_SO_DEBUG :: (Num a) => a
c'APR_SO_NONBLOCK = 8
c'APR_SO_NONBLOCK :: (Num a) => a
c'APR_SO_REUSEADDR = 16
c'APR_SO_REUSEADDR :: (Num a) => a
c'APR_SO_SNDBUF = 64
c'APR_SO_SNDBUF :: (Num a) => a
c'APR_SO_RCVBUF = 128
c'APR_SO_RCVBUF :: (Num a) => a
c'APR_SO_DISCONNECTED = 256
c'APR_SO_DISCONNECTED :: (Num a) => a
c'APR_TCP_NODELAY = 512
c'APR_TCP_NODELAY :: (Num a) => a
c'APR_TCP_NOPUSH = 1024
c'APR_TCP_NOPUSH :: (Num a) => a
c'APR_RESET_NODELAY = 2048
c'APR_RESET_NODELAY :: (Num a) => a
c'APR_INCOMPLETE_READ = 4096
c'APR_INCOMPLETE_READ :: (Num a) => a
c'APR_INCOMPLETE_WRITE = 8192
c'APR_INCOMPLETE_WRITE :: (Num a) => a
c'APR_IPV6_V6ONLY = 16384
c'APR_IPV6_V6ONLY :: (Num a) => a
c'APR_TCP_DEFER_ACCEPT = 32768
c'APR_TCP_DEFER_ACCEPT :: (Num a) => a
type C'apr_shutdown_how_e = CUInt
c'APR_IPV4_ADDR_OK = 1
c'APR_IPV4_ADDR_OK :: (Num a) => a
c'APR_IPV6_ADDR_OK = 2
c'APR_IPV6_ADDR_OK :: (Num a) => a
c'APR_INADDR_NONE = 4294967295
c'APR_INADDR_NONE :: (Num a) => a
c'APR_INET = 2
c'APR_INET :: (Num a) => a
c'APR_UNSPEC = 0
c'APR_UNSPEC :: (Num a) => a
c'APR_INET6 = 10
c'APR_INET6 :: (Num a) => a
c'APR_PROTO_TCP = 6
c'APR_PROTO_TCP :: (Num a) => a
c'APR_PROTO_UDP = 17
c'APR_PROTO_UDP :: (Num a) => a
c'APR_PROTO_SCTP = 132
c'APR_PROTO_SCTP :: (Num a) => a
type C'apr_interface_e = CUInt
c'APR_LOCAL = 0
c'APR_LOCAL :: (Num a) => a
c'APR_REMOTE = 1
c'APR_REMOTE :: (Num a) => a
data C'apr_socket_t = C'apr_socket_t
data C'apr_hdtr_t = C'apr_hdtr_t{
c'apr_hdtr_t'headers :: Ptr C'iovec
,
c'apr_hdtr_t'numheaders :: CInt
,
c'apr_hdtr_t'trailers :: Ptr C'iovec
,
c'apr_hdtr_t'numtrailers :: CInt
} deriving (Eq,Show)
instance Storable C'apr_hdtr_t where
sizeOf _ = 16
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
return $ C'apr_hdtr_t v0 v1 v2 v3
poke p (C'apr_hdtr_t v0 v1 v2 v3) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
return ()
data C'apr_ipsubnet_t = C'apr_ipsubnet_t
type C'apr_port_t = Word16
data C'apr_sockaddr_t = C'apr_sockaddr_t{
c'apr_sockaddr_t'pool :: Ptr C'apr_pool_t
,
c'apr_sockaddr_t'hostname :: Ptr CChar
,
c'apr_sockaddr_t'servname :: Ptr CChar
,
c'apr_sockaddr_t'port :: C'apr_port_t
,
c'apr_sockaddr_t'family :: C'apr_int32_t
,
c'apr_sockaddr_t'salen :: C'apr_socklen_t
,
c'apr_sockaddr_t'ipaddr_len :: CInt
,
c'apr_sockaddr_t'addr_str_len :: CInt
,
c'apr_sockaddr_t'ipaddr_ptr :: Ptr ()
,
c'apr_sockaddr_t'next :: Ptr C'apr_sockaddr_t
} deriving (Eq,Show)
instance Storable C'apr_sockaddr_t where
sizeOf _ = 168
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
v5 <- peekByteOff p 20
v6 <- peekByteOff p 24
v7 <- peekByteOff p 28
v8 <- peekByteOff p 32
v9 <- peekByteOff p 36
return $ C'apr_sockaddr_t v0 v1 v2 v3 v4 v5 v6 v7 v8 v9
poke p (C'apr_sockaddr_t v0 v1 v2 v3 v4 v5 v6 v7 v8 v9) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
pokeByteOff p 20 v5
pokeByteOff p 24 v6
pokeByteOff p 28 v7
pokeByteOff p 32 v8
pokeByteOff p 36 v9
return ()
c'APR_SENDFILE_DISCONNECT_SOCKET = 1
c'APR_SENDFILE_DISCONNECT_SOCKET :: (Num a) => a
foreign import ccall "apr_socket_create" c'apr_socket_create
:: Ptr (Ptr C'apr_socket_t) -> CInt -> CInt -> CInt -> Ptr C'apr_pool_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_create" p'apr_socket_create
:: FunPtr (Ptr (Ptr C'apr_socket_t) -> CInt -> CInt -> CInt -> Ptr C'apr_pool_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_shutdown" c'apr_socket_shutdown
:: Ptr C'apr_socket_t -> C'apr_shutdown_how_e -> IO C'apr_status_t
foreign import ccall "&apr_socket_shutdown" p'apr_socket_shutdown
:: FunPtr (Ptr C'apr_socket_t -> C'apr_shutdown_how_e -> IO C'apr_status_t)
foreign import ccall "apr_socket_close" c'apr_socket_close
:: Ptr C'apr_socket_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_close" p'apr_socket_close
:: FunPtr (Ptr C'apr_socket_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_bind" c'apr_socket_bind
:: Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_bind" p'apr_socket_bind
:: FunPtr (Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_listen" c'apr_socket_listen
:: Ptr C'apr_status_t -> C'apr_int32_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_listen" p'apr_socket_listen
:: FunPtr (Ptr C'apr_status_t -> C'apr_int32_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_accept" c'apr_socket_accept
:: Ptr (Ptr C'apr_socket_t) -> Ptr C'apr_socket_t -> Ptr C'apr_pool_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_accept" p'apr_socket_accept
:: FunPtr (Ptr (Ptr C'apr_socket_t) -> Ptr C'apr_socket_t -> Ptr C'apr_pool_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_connect" c'apr_socket_connect
:: Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_connect" p'apr_socket_connect
:: FunPtr (Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t)
foreign import ccall "apr_sockaddr_info_get" c'apr_sockaddr_info_get
:: Ptr (Ptr C'apr_sockaddr_t) -> Ptr CChar -> C'apr_int32_t -> C'apr_port_t -> C'apr_int32_t -> Ptr C'apr_port_t -> IO C'apr_status_t
foreign import ccall "&apr_sockaddr_info_get" p'apr_sockaddr_info_get
:: FunPtr (Ptr (Ptr C'apr_sockaddr_t) -> Ptr CChar -> C'apr_int32_t -> C'apr_port_t -> C'apr_int32_t -> Ptr C'apr_port_t -> IO C'apr_status_t)
foreign import ccall "apr_getnameinfo" c'apr_getnameinfo
:: Ptr (Ptr CChar) -> Ptr C'apr_sockaddr_t -> C'apr_int32_t -> IO C'apr_status_t
foreign import ccall "&apr_getnameinfo" p'apr_getnameinfo
:: FunPtr (Ptr (Ptr CChar) -> Ptr C'apr_sockaddr_t -> C'apr_int32_t -> IO C'apr_status_t)
foreign import ccall "apr_parse_addr_port" c'apr_parse_addr_port
:: Ptr (Ptr CChar) -> Ptr (Ptr CChar) -> Ptr C'apr_port_t -> Ptr CChar -> Ptr C'apr_pool_t -> IO C'apr_status_t
foreign import ccall "&apr_parse_addr_port" p'apr_parse_addr_port
:: FunPtr (Ptr (Ptr CChar) -> Ptr (Ptr CChar) -> Ptr C'apr_port_t -> Ptr CChar -> Ptr C'apr_pool_t -> IO C'apr_status_t)
foreign import ccall "apr_gethostname" c'apr_gethostname
:: Ptr CChar -> CInt -> Ptr C'apr_pool_t -> IO C'apr_status_t
foreign import ccall "&apr_gethostname" p'apr_gethostname
:: FunPtr (Ptr CChar -> CInt -> Ptr C'apr_pool_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_data_get" c'apr_socket_data_get
:: Ptr (Ptr ()) -> Ptr CChar -> Ptr C'apr_socket_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_data_get" p'apr_socket_data_get
:: FunPtr (Ptr (Ptr ()) -> Ptr CChar -> Ptr C'apr_socket_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_data_set" c'apr_socket_data_set
:: Ptr C'apr_socket_t -> Ptr () -> Ptr CChar -> FunPtr (Ptr () -> IO C'apr_status_t) -> IO C'apr_status_t
foreign import ccall "&apr_socket_data_set" p'apr_socket_data_set
:: FunPtr (Ptr C'apr_socket_t -> Ptr () -> Ptr CChar -> FunPtr (Ptr () -> IO C'apr_status_t) -> IO C'apr_status_t)
foreign import ccall "apr_socket_send" c'apr_socket_send
:: Ptr C'apr_socket_t -> Ptr CChar -> Ptr C'apr_size_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_send" p'apr_socket_send
:: FunPtr (Ptr C'apr_socket_t -> Ptr CChar -> Ptr C'apr_size_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_sendv" c'apr_socket_sendv
:: Ptr C'apr_socket_t -> Ptr C'iovec -> C'apr_int32_t -> Ptr C'apr_size_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_sendv" p'apr_socket_sendv
:: FunPtr (Ptr C'apr_socket_t -> Ptr C'iovec -> C'apr_int32_t -> Ptr C'apr_size_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_sendto" c'apr_socket_sendto
:: Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> C'apr_int32_t -> Ptr CChar -> Ptr C'apr_size_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_sendto" p'apr_socket_sendto
:: FunPtr (Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> C'apr_int32_t -> Ptr CChar -> Ptr C'apr_size_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_recvfrom" c'apr_socket_recvfrom
:: Ptr C'apr_sockaddr_t -> Ptr C'apr_socket_t -> C'apr_int32_t -> Ptr CChar -> Ptr C'apr_size_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_recvfrom" p'apr_socket_recvfrom
:: FunPtr (Ptr C'apr_sockaddr_t -> Ptr C'apr_socket_t -> C'apr_int32_t -> Ptr CChar -> Ptr C'apr_size_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_sendfile" c'apr_socket_sendfile
:: Ptr C'apr_socket_t -> Ptr C'apr_file_t -> Ptr C'apr_hdtr_t -> Ptr C'apr_off_t -> Ptr C'apr_size_t -> C'apr_int32_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_sendfile" p'apr_socket_sendfile
:: FunPtr (Ptr C'apr_socket_t -> Ptr C'apr_file_t -> Ptr C'apr_hdtr_t -> Ptr C'apr_off_t -> Ptr C'apr_size_t -> C'apr_int32_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_recv" c'apr_socket_recv
:: Ptr C'apr_socket_t -> Ptr CChar -> Ptr C'apr_size_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_recv" p'apr_socket_recv
:: FunPtr (Ptr C'apr_socket_t -> Ptr CChar -> Ptr C'apr_size_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_opt_set" c'apr_socket_opt_set
:: Ptr C'apr_socket_t -> C'apr_int32_t -> C'apr_int32_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_opt_set" p'apr_socket_opt_set
:: FunPtr (Ptr C'apr_socket_t -> C'apr_int32_t -> C'apr_int32_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_timeout_set" c'apr_socket_timeout_set
:: Ptr C'apr_socket_t -> C'apr_interval_time_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_timeout_set" p'apr_socket_timeout_set
:: FunPtr (Ptr C'apr_socket_t -> C'apr_interval_time_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_opt_get" c'apr_socket_opt_get
:: Ptr C'apr_socket_t -> C'apr_int32_t -> C'apr_int32_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_opt_get" p'apr_socket_opt_get
:: FunPtr (Ptr C'apr_socket_t -> C'apr_int32_t -> C'apr_int32_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_timeout_get" c'apr_socket_timeout_get
:: Ptr C'apr_socket_t -> Ptr C'apr_interval_time_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_timeout_get" p'apr_socket_timeout_get
:: FunPtr (Ptr C'apr_socket_t -> Ptr C'apr_interval_time_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_atmark" c'apr_socket_atmark
:: Ptr C'apr_socket_t -> Ptr CInt -> IO C'apr_status_t
foreign import ccall "&apr_socket_atmark" p'apr_socket_atmark
:: FunPtr (Ptr C'apr_socket_t -> Ptr CInt -> IO C'apr_status_t)
foreign import ccall "apr_socket_addr_get" c'apr_socket_addr_get
:: Ptr (Ptr C'apr_socket_t) -> C'apr_interface_e -> Ptr C'apr_socket_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_addr_get" p'apr_socket_addr_get
:: FunPtr (Ptr (Ptr C'apr_socket_t) -> C'apr_interface_e -> Ptr C'apr_socket_t -> IO C'apr_status_t)
foreign import ccall "apr_sockaddr_ip_get" c'apr_sockaddr_ip_get
:: Ptr (Ptr CChar) -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t
foreign import ccall "&apr_sockaddr_ip_get" p'apr_sockaddr_ip_get
:: FunPtr (Ptr (Ptr CChar) -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t)
foreign import ccall "apr_sockaddr_ip_getbuf" c'apr_sockaddr_ip_getbuf
:: Ptr CChar -> C'apr_size_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t
foreign import ccall "&apr_sockaddr_ip_getbuf" p'apr_sockaddr_ip_getbuf
:: FunPtr (Ptr CChar -> C'apr_size_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t)
foreign import ccall "apr_sockaddr_equal" c'apr_sockaddr_equal
:: Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> IO CInt
foreign import ccall "&apr_sockaddr_equal" p'apr_sockaddr_equal
:: FunPtr (Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> IO CInt)
foreign import ccall "apr_socket_type_get" c'apr_socket_type_get
:: Ptr C'apr_socket_t -> Ptr CInt -> IO C'apr_status_t
foreign import ccall "&apr_socket_type_get" p'apr_socket_type_get
:: FunPtr (Ptr C'apr_socket_t -> Ptr CInt -> IO C'apr_status_t)
foreign import ccall "apr_getservbyname" c'apr_getservbyname
:: Ptr C'apr_sockaddr_t -> Ptr CChar -> IO C'apr_status_t
foreign import ccall "&apr_getservbyname" p'apr_getservbyname
:: FunPtr (Ptr C'apr_sockaddr_t -> Ptr CChar -> IO C'apr_status_t)
foreign import ccall "apr_ipsubnet_create" c'apr_ipsubnet_create
:: Ptr (Ptr C'apr_ipsubnet_t) -> Ptr CChar -> Ptr CChar -> Ptr C'apr_pool_t -> IO C'apr_status_t
foreign import ccall "&apr_ipsubnet_create" p'apr_ipsubnet_create
:: FunPtr (Ptr (Ptr C'apr_ipsubnet_t) -> Ptr CChar -> Ptr CChar -> Ptr C'apr_pool_t -> IO C'apr_status_t)
foreign import ccall "apr_ipsubnet_test" c'apr_ipsubnet_test
:: Ptr C'apr_ipsubnet_t -> Ptr C'apr_sockaddr_t -> IO CInt
foreign import ccall "&apr_ipsubnet_test" p'apr_ipsubnet_test
:: FunPtr (Ptr C'apr_ipsubnet_t -> Ptr C'apr_sockaddr_t -> IO CInt)
foreign import ccall "apr_socket_protocol_get" c'apr_socket_protocol_get
:: Ptr C'apr_socket_t -> Ptr CInt -> IO C'apr_status_t
foreign import ccall "&apr_socket_protocol_get" p'apr_socket_protocol_get
:: FunPtr (Ptr C'apr_socket_t -> Ptr CInt -> IO C'apr_status_t)
foreign import ccall "apr_socket_pool_get" c'apr_socket_pool_get
:: Ptr C'apr_socket_t -> IO (Ptr C'apr_pool_t)
foreign import ccall "&apr_socket_pool_get" p'apr_socket_pool_get
:: FunPtr (Ptr C'apr_socket_t -> IO (Ptr C'apr_pool_t))
foreign import ccall "apr_socket_inherit_set" c'apr_socket_inherit_set
:: Ptr C'apr_socket_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_inherit_set" p'apr_socket_inherit_set
:: FunPtr (Ptr C'apr_socket_t -> IO C'apr_status_t)
foreign import ccall "apr_socket_inherit_unset" c'apr_socket_inherit_unset
:: Ptr C'apr_socket_t -> IO C'apr_status_t
foreign import ccall "&apr_socket_inherit_unset" p'apr_socket_inherit_unset
:: FunPtr (Ptr C'apr_socket_t -> IO C'apr_status_t)
foreign import ccall "apr_mcast_join" c'apr_mcast_join
:: Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t
foreign import ccall "&apr_mcast_join" p'apr_mcast_join
:: FunPtr (Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t)
foreign import ccall "apr_mcast_leave" c'apr_mcast_leave
:: Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t
foreign import ccall "&apr_mcast_leave" p'apr_mcast_leave
:: FunPtr (Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t)
foreign import ccall "apr_mcast_hops" c'apr_mcast_hops
:: Ptr C'apr_socket_t -> C'apr_byte_t -> IO C'apr_status_t
foreign import ccall "&apr_mcast_hops" p'apr_mcast_hops
:: FunPtr (Ptr C'apr_socket_t -> C'apr_byte_t -> IO C'apr_status_t)
foreign import ccall "apr_mcast_loopback" c'apr_mcast_loopback
:: Ptr C'apr_socket_t -> C'apr_byte_t -> IO C'apr_status_t
foreign import ccall "&apr_mcast_loopback" p'apr_mcast_loopback
:: FunPtr (Ptr C'apr_socket_t -> C'apr_byte_t -> IO C'apr_status_t)
foreign import ccall "apr_mcast_interface" c'apr_mcast_interface
:: Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t
foreign import ccall "&apr_mcast_interface" p'apr_mcast_interface
:: FunPtr (Ptr C'apr_socket_t -> Ptr C'apr_sockaddr_t -> IO C'apr_status_t)