130 lines
2.8 KiB
C
130 lines
2.8 KiB
C
/* $Header: /pjproject-0.3/pjlib/include/pj/compat/socket.h 5 10/29/05 11:51a Bennylp $*/
|
|
/* $Log: /pjproject-0.3/pjlib/include/pj/compat/socket.h $
|
|
*
|
|
* 5 10/29/05 11:51a Bennylp
|
|
* Version 0.3-pre2.
|
|
*
|
|
* 4 10/14/05 12:26a Bennylp
|
|
* Finished error code framework, some fixes in ioqueue, etc. Pretty
|
|
* major.
|
|
*
|
|
* 3 9/21/05 1:39p Bennylp
|
|
* Periodic checkin for backup.
|
|
*
|
|
* 2 9/17/05 10:37a Bennylp
|
|
* Major reorganization towards version 0.3.
|
|
*
|
|
*/
|
|
#ifndef __PJ_COMPAT_SOCKET_H__
|
|
#define __PJ_COMPAT_SOCKET_H__
|
|
|
|
/**
|
|
* @file socket.h
|
|
* @brief Provides all socket related functions,data types, error codes, etc.
|
|
*/
|
|
|
|
#if defined(PJ_HAS_WINSOCK_H) && PJ_HAS_WINSOCK_H != 0
|
|
# include <winsock.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_WINSOCK2_H) && PJ_HAS_WINSOCK2_H != 0
|
|
# include <winsock2.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_SYS_TYPES_H) && PJ_HAS_SYS_TYPES_H != 0
|
|
# include <sys/types.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_SYS_SOCKET_H) && PJ_HAS_SYS_SOCKET_H != 0
|
|
# include <sys/socket.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_LINUX_SOCKET_H) && PJ_HAS_LINUX_SOCKET_H != 0
|
|
# include <linux/socket.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_SYS_SELECT_H) && PJ_HAS_SYS_SELECT_H != 0
|
|
# include <sys/select.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_NETINET_IN_H) && PJ_HAS_NETINET_IN_H != 0
|
|
# include <netinet/in.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_ARPA_INET_H) && PJ_HAS_ARPA_INET_H != 0
|
|
# include <arpa/inet.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_SYS_IOCTL_H) && PJ_HAS_SYS_IOCTL_H != 0
|
|
# include <sys/ioctl.h> /* FBIONBIO */
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_ERRNO_H) && PJ_HAS_ERRNO_H != 0
|
|
# include <errno.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_NETDB_H) && PJ_HAS_NETDB_H != 0
|
|
# include <netdb.h>
|
|
#endif
|
|
|
|
#if defined(PJ_HAS_UNISTD_H) && PJ_HAS_UNISTD_H != 0
|
|
# include <unistd.h>
|
|
#endif
|
|
|
|
|
|
/*
|
|
* Define common errors.
|
|
*/
|
|
#ifdef PJ_WIN32
|
|
# define OSERR_EWOULDBLOCK WSAEWOULDBLOCK
|
|
# define OSERR_EINPROGRESS WSAEINPROGRESS
|
|
#else
|
|
# define OSERR_EWOULDBLOCK EWOULDBLOCK
|
|
# define OSERR_EINPROGRESS EINPROGRESS
|
|
#endif
|
|
|
|
|
|
/*
|
|
* And undefine this..
|
|
*/
|
|
#undef s_addr
|
|
|
|
/*
|
|
* Linux kernel specifics
|
|
*/
|
|
#ifdef PJ_LINUX_KERNEL
|
|
# include <linux/net.h>
|
|
# include <asm/ioctls.h> /* FIONBIO */
|
|
# include <linux/syscalls.h> /* sys_select() */
|
|
# include <asm/uaccess.h> /* set/get_fs() */
|
|
|
|
typedef int socklen_t;
|
|
# define getsockopt sys_getsockopt
|
|
|
|
/*
|
|
* Wrapper for select() in Linux kernel.
|
|
*/
|
|
PJ_INLINE(int) select(int n, fd_set *inp, fd_set *outp, fd_set *exp,
|
|
struct timeval *tvp)
|
|
{
|
|
int count;
|
|
mm_segment_t oldfs = get_fs();
|
|
set_fs(KERNEL_DS);
|
|
count = sys_select(n, inp, outp, exp, tvp);
|
|
set_fs(oldfs);
|
|
return count;
|
|
}
|
|
#endif /* PJ_LINUX_KERNEL */
|
|
|
|
|
|
/*
|
|
* Windows specific
|
|
*/
|
|
#ifdef PJ_WIN32
|
|
typedef int socklen_t;;
|
|
#endif
|
|
|
|
|
|
#endif /* __PJ_COMPAT_SOCKET_H__ */
|
|
|