diff options
Diffstat (limited to 'netinet/sctp_os_userspace.h')
-rwxr-xr-x | netinet/sctp_os_userspace.h | 144 |
1 files changed, 80 insertions, 64 deletions
diff --git a/netinet/sctp_os_userspace.h b/netinet/sctp_os_userspace.h index eca3e18..a8d1f08 100755 --- a/netinet/sctp_os_userspace.h +++ b/netinet/sctp_os_userspace.h @@ -103,7 +103,6 @@ typedef HANDLE userland_thread_t; #define n_time unsigned __int32 #define sa_family_t unsigned __int8 #define ssize_t __int64 -#define IFNAMSIZ 64 #define __func__ __FUNCTION__ #ifndef EWOULDBLOCK @@ -222,8 +221,6 @@ typedef char* caddr_t; #define snprintf(data, size, format, ...) _snprintf_s(data, size, _TRUNCATE, format, __VA_ARGS__) #define inline __inline #define __inline__ __inline -#define random() rand() -#define srandom(s) srand(s) #define MSG_EOR 0x8 /* data completes record */ #define MSG_DONTWAIT 0x80 /* this message should be nonblocking */ @@ -265,6 +262,32 @@ typedef char* caddr_t; #define SCTP_GET_IF_INDEX_FROM_ROUTE(ro) 1 /* compiles... TODO use routing socket to determine */ +#define BIG_ENDIAN 1 +#define LITTLE_ENDIAN 0 +#ifdef WORDS_BIGENDIAN +#define BYTE_ORDER BIG_ENDIAN +#else +#define BYTE_ORDER LITTLE_ENDIAN +#endif + +#else /* !defined(Userspace_os_Windows) */ +#include <sys/cdefs.h> /* needed? added from old __FreeBSD__ */ +#include <sys/socket.h> +#if defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_Linux) || defined(__Userspace_os_NetBSD) || defined(__Userspace_os_OpenBSD) || defined(__Userspace_os_NaCl) +#include <pthread.h> +#endif +typedef pthread_mutex_t userland_mutex_t; +typedef pthread_cond_t userland_cond_t; +typedef pthread_t userland_thread_t; +#endif + +#if defined(__Userspace_os_Windows) || defined(__Userspace_os_NaCl) + +#define IFNAMSIZ 64 + +#define random() rand() +#define srandom(s) srand(s) + #define timeradd(tvp, uvp, vvp) \ do { \ (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ @@ -285,30 +308,57 @@ typedef char* caddr_t; } \ } while (0) -#define BIG_ENDIAN 1 -#define LITTLE_ENDIAN 0 -#ifdef WORDS_BIGENDIAN -#define BYTE_ORDER BIG_ENDIAN -#else -#define BYTE_ORDER LITTLE_ENDIAN -#endif +/*#include <packon.h> +#pragma pack(push, 1)*/ +struct ip { + u_char ip_hl:4, ip_v:4; + u_char ip_tos; + u_short ip_len; + u_short ip_id; + u_short ip_off; +#define IP_RP 0x8000 +#define IP_DF 0x4000 +#define IP_MF 0x2000 +#define IP_OFFMASK 0x1fff + u_char ip_ttl; + u_char ip_p; + u_short ip_sum; + struct in_addr ip_src, ip_dst; +}; + +struct ifaddrs { + struct ifaddrs *ifa_next; + char *ifa_name; + unsigned int ifa_flags; + struct sockaddr *ifa_addr; + struct sockaddr *ifa_netmask; + struct sockaddr *ifa_dstaddr; + void *ifa_data; +}; + +struct udphdr { + uint16_t uh_sport; + uint16_t uh_dport; + uint16_t uh_ulen; + uint16_t uh_sum; +}; struct iovec { - ULONG len; - CHAR FAR *buf; + unsigned long len; + char *buf; }; #define iov_base buf #define iov_len len struct ifa_msghdr { - unsigned __int16 ifam_msglen; + uint16_t ifam_msglen; unsigned char ifam_version; unsigned char ifam_type; - __int32 ifam_addrs; - __int32 ifam_flags; - unsigned __int16 ifam_index; - __int32 ifam_metric; + uint32_t ifam_addrs; + uint32_t ifam_flags; + uint16_t ifam_index; + uint32_t ifam_metric; }; struct ifdevmtu { @@ -341,7 +391,7 @@ struct ifreq { char* ifru_data; struct ifdevmtu ifru_devmtu; struct ifkpi ifru_kpi; - unsigned __int32 ifru_wake_flags; + uint32_t ifru_wake_flags; } ifr_ifru; #define ifr_addr ifr_ifru.ifru_addr #define ifr_dstaddr ifr_ifru.ifru_dstaddr @@ -359,55 +409,13 @@ struct ifreq { #define ifr_wake_flags ifr_ifru.ifru_wake_flags }; -/*#include <packon.h> -#pragma pack(push, 1)*/ -struct ip { - u_char ip_hl:4, ip_v:4; - u_char ip_tos; - u_short ip_len; - u_short ip_id; - u_short ip_off; -#define IP_RP 0x8000 -#define IP_DF 0x4000 -#define IP_MF 0x2000 -#define IP_OFFMASK 0x1fff - u_char ip_ttl; - u_char ip_p; - u_short ip_sum; - struct in_addr ip_src, ip_dst; -}; - -struct ifaddrs { - struct ifaddrs *ifa_next; - char *ifa_name; - unsigned int ifa_flags; - struct sockaddr *ifa_addr; - struct sockaddr *ifa_netmask; - struct sockaddr *ifa_dstaddr; - void *ifa_data; -}; - -struct udphdr { - unsigned __int16 uh_sport; - unsigned __int16 uh_dport; - unsigned __int16 uh_ulen; - unsigned __int16 uh_sum; -}; +#endif +#if defined(__Userspace_os_Windows) int Win_getifaddrs(struct ifaddrs**); #define getifaddrs(interfaces) (int)Win_getifaddrs(interfaces) int win_if_nametoindex(const char *); #define if_nametoindex(x) win_if_nametoindex(x) - -#else /* !defined(Userspace_os_Windows) */ -#include <sys/cdefs.h> /* needed? added from old __FreeBSD__ */ -#include <sys/socket.h> -#if defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_Linux) || defined(__Userspace_os_NetBSD) || defined(__Userspace_os_OpenBSD) -#include <pthread.h> -#endif -typedef pthread_mutex_t userland_mutex_t; -typedef pthread_cond_t userland_cond_t; -typedef pthread_t userland_thread_t; #endif #define mtx_lock(arg1) @@ -469,7 +477,7 @@ struct sx {int dummy;}; * userspace as well? */ /* on FreeBSD, this results in a redefintion of struct route */ /* #include <net/route.h> */ -#if !defined(__Userspace_os_Windows) +#if !defined(__Userspace_os_Windows) && !defined(__Userspace_os_NaCl) #include <net/if.h> #include <netinet/in.h> #include <netinet/in_systm.h> @@ -1095,7 +1103,7 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int a /* with the current included files, this is defined in Linux but * in FreeBSD, it is behind a _KERNEL in sys/socket.h ... */ -#if defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_OpenBSD) +#if defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_OpenBSD) || defined(__Userspace_os_NaCl) /* stolen from /usr/include/sys/socket.h */ #define CMSG_ALIGN(n) _ALIGN(n) #elif defined(__Userspace_os_NetBSD) @@ -1153,4 +1161,12 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int a #define TAILQ_FOREACH_SAFE TAILQ_FOREACH_MUTABLE #define LIST_FOREACH_SAFE LIST_FOREACH_MUTABLE #endif + +#if defined(__Userspace_os_NaCl) +#define timercmp(tvp, uvp, cmp) \ + (((tvp)->tv_sec == (uvp)->tv_sec) ? \ + ((tvp)->tv_usec cmp (uvp)->tv_usec) : \ + ((tvp)->tv_sec cmp (uvp)->tv_sec)) +#endif + #endif |