module System.Socket.Internal.FFI where import Foreign.Ptr import Foreign.C.Types import System.Posix.Types ( Fd(..) ) import System.Socket.Internal.MsgFlags foreign import ccall unsafe "sys/socket.h socket" c_socket :: CInt -> CInt -> CInt -> IO Fd foreign import ccall unsafe "unistd.h close" c_close :: Fd -> IO CInt foreign import ccall unsafe "sys/socket.h bind" c_bind :: Fd -> Ptr a -> CInt -> IO CInt foreign import ccall unsafe "sys/socket.h connect" c_connect :: Fd -> Ptr a -> CSize -> IO CInt foreign import ccall unsafe "sys/socket.h accept" c_accept :: Fd -> Ptr a -> Ptr CInt -> IO Fd foreign import ccall unsafe "sys/socket.h listen" c_listen :: Fd -> CInt -> IO CInt foreign import ccall unsafe "sys/socket.h send" c_send :: Fd -> Ptr a -> CSize -> MsgFlags -> IO CInt foreign import ccall unsafe "sys/socket.h sendto" c_sendto :: Fd -> Ptr a -> CSize -> MsgFlags -> Ptr b -> CInt -> IO CInt foreign import ccall unsafe "sys/socket.h recv" c_recv :: Fd -> Ptr a -> CSize -> MsgFlags -> IO CInt -- socklen_t is an int not a size_t! foreign import ccall unsafe "sys/socket.h recvfrom" c_recvfrom :: Fd -> Ptr a -> CSize -> MsgFlags -> Ptr b -> Ptr CInt -> IO CInt foreign import ccall unsafe "sys/socket.h getsockopt" c_getsockopt :: Fd -> CInt -> CInt -> Ptr a -> Ptr Int -> IO CInt foreign import ccall unsafe "misc.h setnonblocking" c_setnonblocking :: Fd -> IO CInt foreign import ccall unsafe "string.h memset" c_memset :: Ptr a -> CInt -> CSize -> IO ()