34 #ifndef __sctp_os_userspace_h__ 35 #define __sctp_os_userspace_h__ 44 #if defined(__Userspace_os_Windows) 61 CRITICAL_SECTION waiters_count_lock;
62 HANDLE events_[C_MAX_EVENTS];
68 #define InitializeConditionVariable(cond) InitializeXPConditionVariable(cond) 69 #define DeleteConditionVariable(cond) DeleteXPConditionVariable(cond) 70 #define SleepConditionVariableCS(cond, mtx, time) SleepXPConditionVariable(cond, mtx) 71 #define WakeAllConditionVariable(cond) WakeAllXPConditionVariable(cond) 73 #define DeleteConditionVariable(cond) 77 #define ADDRESS_FAMILY unsigned __int8 84 #define uint64_t unsigned __int64 85 #define uint32_t unsigned __int32 86 #define int32_t __int32 87 #define uint16_t unsigned __int16 88 #define int16_t __int16 89 #define uint8_t unsigned __int8 92 #ifndef _SIZE_T_DEFINED 93 #define size_t __int32 95 #define u_long unsigned __int64 96 #define u_int unsigned __int32 97 #define u_int32_t unsigned __int32 98 #define u_int16_t unsigned __int16 99 #define u_int8_t unsigned __int8 100 #define u_char unsigned char 101 #define n_short unsigned __int16 102 #define u_short unsigned __int16 103 #define n_time unsigned __int32 104 #define sa_family_t unsigned __int8 105 #define ssize_t __int64 106 #define __func__ __FUNCTION__ 109 #define EWOULDBLOCK WSAEWOULDBLOCK 112 #define EINPROGRESS WSAEINPROGRESS 115 #define EALREADY WSAEALREADY 118 #define ENOTSOCK WSAENOTSOCK 121 #define EDESTADDRREQ WSAEDESTADDRREQ 124 #define EMSGSIZE WSAEMSGSIZE 127 #define EPROTOTYPE WSAEPROTOTYPE 130 #define ENOPROTOOPT WSAENOPROTOOPT 132 #ifndef EPROTONOSUPPORT 133 #define EPROTONOSUPPORT WSAEPROTONOSUPPORT 135 #ifndef ESOCKTNOSUPPORT 136 #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT 139 #define EOPNOTSUPP WSAEOPNOTSUPP 142 #define ENOTSUP WSAEOPNOTSUPP 145 #define EPFNOSUPPORT WSAEPFNOSUPPORT 148 #define EAFNOSUPPORT WSAEAFNOSUPPORT 151 #define EADDRINUSE WSAEADDRINUSE 153 #ifndef EADDRNOTAVAIL 154 #define EADDRNOTAVAIL WSAEADDRNOTAVAIL 157 #define ENETDOWN WSAENETDOWN 160 #define ENETUNREACH WSAENETUNREACH 163 #define ENETRESET WSAENETRESET 166 #define ECONNABORTED WSAECONNABORTED 169 #define ECONNRESET WSAECONNRESET 172 #define ENOBUFS WSAENOBUFS 175 #define EISCONN WSAEISCONN 178 #define ENOTCONN WSAENOTCONN 181 #define ESHUTDOWN WSAESHUTDOWN 184 #define ETOOMANYREFS WSAETOOMANYREFS 187 #define ETIMEDOUT WSAETIMEDOUT 190 #define ECONNREFUSED WSAECONNREFUSED 193 #define ELOOP WSAELOOP 196 #define EHOSTDOWN WSAEHOSTDOWN 199 #define EHOSTUNREACH WSAEHOSTUNREACH 202 #define EPROCLIM WSAEPROCLIM 205 #define EUSERS WSAEUSERS 208 #define EDQUOT WSAEDQUOT 211 #define ESTALE WSAESTALE 214 #define EREMOTE WSAEREMOTE 217 typedef char* caddr_t;
219 #define bzero(buf, len) memset(buf, 0, len) 220 #define bcopy(srcKey, dstKey, len) memcpy(dstKey, srcKey, len) 222 #define snprintf(data, size, format, ...) _snprintf_s(data, size, _TRUNCATE, format, __VA_ARGS__) 224 #define inline __inline 225 #define __inline__ __inline 227 #define MSG_DONTWAIT 0x80 236 #define CMSG_DATA(x) WSA_CMSG_DATA(x) 237 #define CMSG_ALIGN(x) WSA_CMSGDATA_ALIGN(x) 238 #ifndef CMSG_FIRSTHDR 239 #define CMSG_FIRSTHDR(x) WSA_CMSG_FIRSTHDR(x) 242 #define CMSG_NXTHDR(x, y) WSA_CMSG_NXTHDR(x, y) 245 #define CMSG_SPACE(x) WSA_CMSG_SPACE(x) 248 #define CMSG_LEN(x) WSA_CMSG_LEN(x) 252 #define SCTP_IFN_IS_IFT_LOOP(ifn) ((ifn)->ifn_type == IFT_LOOP) 253 #define SCTP_ROUTE_IS_REAL_LOOP(ro) ((ro)->ro_rt && (ro)->ro_rt->rt_ifa && (ro)->ro_rt->rt_ifa->ifa_ifp && (ro)->ro_rt->rt_ifa->ifa_ifp->if_type == IFT_LOOP) 259 #define SCTP_GET_IFN_VOID_FROM_ROUTE(ro) \ 260 ((ro)->ro_rt != NULL ? (ro)->ro_rt->rt_ifp : NULL) 261 #define SCTP_ROUTE_HAS_VALID_IFN(ro) \ 262 ((ro)->ro_rt && (ro)->ro_rt->rt_ifp) 265 #define SCTP_GET_IF_INDEX_FROM_ROUTE(ro) 1 268 #define LITTLE_ENDIAN 0 269 #ifdef WORDS_BIGENDIAN 270 #define BYTE_ORDER BIG_ENDIAN 272 #define BYTE_ORDER LITTLE_ENDIAN 276 #include <sys/socket.h> 277 #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) 285 #if defined(__Userspace_os_Windows) || defined(__Userspace_os_NaCl) 289 #define random() rand() 290 #define srandom(s) srand(s) 292 #define timeradd(tvp, uvp, vvp) \ 294 (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ 295 (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \ 296 if ((vvp)->tv_usec >= 1000000) { \ 298 (vvp)->tv_usec -= 1000000; \ 302 #define timersub(tvp, uvp, vvp) \ 304 (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ 305 (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \ 306 if ((vvp)->tv_usec < 0) { \ 308 (vvp)->tv_usec += 1000000; \ 315 u_char ip_hl:4, ip_v:4;
323 #define IP_OFFMASK 0x1fff 327 struct in_addr ip_src, ip_dst;
334 struct sockaddr *ifa_addr;
335 struct sockaddr *ifa_netmask;
336 struct sockaddr *ifa_dstaddr;
357 unsigned char ifam_version;
358 unsigned char ifam_type;
372 unsigned int ifk_module_id;
373 unsigned int ifk_type;
383 struct sockaddr ifru_addr;
384 struct sockaddr ifru_dstaddr;
385 struct sockaddr ifru_broadaddr;
393 struct ifdevmtu ifru_devmtu;
394 struct ifkpi ifru_kpi;
397 #define ifr_addr ifr_ifru.ifru_addr 398 #define ifr_dstaddr ifr_ifru.ifru_dstaddr 399 #define ifr_broadaddr ifr_ifru.ifru_broadaddr 400 #define ifr_flags ifr_ifru.ifru_flags[0] 401 #define ifr_prevflags ifr_ifru.ifru_flags[1] 402 #define ifr_metric ifr_ifru.ifru_metric 403 #define ifr_mtu ifr_ifru.ifru_mtu 404 #define ifr_phys ifr_ifru.ifru_phys 405 #define ifr_media ifr_ifru.ifru_media 406 #define ifr_data ifr_ifru.ifru_data 407 #define ifr_devmtu ifr_ifru.ifru_devmtu 408 #define ifr_intval ifr_ifru.ifru_intval 409 #define ifr_kpi ifr_ifru.ifru_kpi 410 #define ifr_wake_flags ifr_ifru.ifru_wake_flags 415 #if defined(__Userspace_os_Windows) 416 int Win_getifaddrs(
struct ifaddrs**);
417 #define getifaddrs(interfaces) (int)Win_getifaddrs(interfaces) 418 int win_if_nametoindex(
const char *);
419 #define if_nametoindex(x) win_if_nametoindex(x) 422 #define mtx_lock(arg1) 423 #define mtx_unlock(arg1) 424 #define mtx_assert(arg1,arg2) 426 #if !defined(__Userspace_os_FreeBSD) 428 #if !defined(__Userspace_os_NetBSD) 439 #if defined(HAVE_SYS_QUEUE_H) 440 #include <sys/queue.h> 458 #if defined(__FreeBSD__) && __FreeBSD_version > 602000 459 #include <sys/rwlock.h> 462 #if defined(__FreeBSD__) && __FreeBSD_version > 602000 463 #include <sys/priv.h> 469 #if defined(__Userspace_os_Darwin) 471 #include <net/if_var.h> 473 #if defined(__Userspace_os_FreeBSD) 474 #include <net/if_types.h> 481 #if !defined(__Userspace_os_Windows) && !defined(__Userspace_os_NaCl) 483 #include <netinet/in.h> 484 #include <netinet/in_systm.h> 485 #include <netinet/ip.h> 487 #if defined(HAVE_NETINET_IP_ICMP_H) 488 #include <netinet/ip_icmp.h> 496 #include <sys/types.h> 497 #if !defined(__Userspace_os_Windows) 498 #if defined(INET) || defined(INET6) 503 #include <sys/ioctl.h> 514 #if defined(SCTP_PROCESS_LEVEL_LOCKS) && !defined(__Userspace_os_Windows) 520 #include <netipsec/ipsec.h> 521 #include <netipsec/key.h> 525 #if defined(__Userspace_os_FreeBSD) 526 #include <sys/domain.h> 529 #include <netipsec/ipsec6.h> 531 #if !defined(__Userspace_os_Windows) 532 #include <netinet/ip6.h> 534 #if defined(__Userspace_os_Darwin) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_Linux) || defined(__Userspace_os_NetBSD) || defined(__Userspace_os_OpenBSD) || defined(__Userspace_os_Windows) 537 #include <netinet6/ip6_var.h> 539 #if defined(__Userspace_os_FreeBSD) 540 #include <netinet6/in6_pcb.h> 541 #include <netinet6/ip6protosw.h> 543 #include <netinet6/scope6_var.h> 547 #if defined(HAVE_SCTP_PEELOFF_SOCKOPT) 548 #include <sys/file.h> 549 #include <sys/filedesc.h> 554 #if __FreeBSD_version >= 700000 555 #include <netinet/ip_options.h> 558 #define SCTP_PRINTF(...) \ 559 if (SCTP_BASE_VAR(debug_printf)) { \ 560 SCTP_BASE_VAR(debug_printf)(__VA_ARGS__); \ 563 #if defined(__FreeBSD__) 589 #if defined(SCTP_LOCAL_TRACE_BUF) 591 #define SCTP_GET_CYCLECOUNT get_cyclecount() 592 #define SCTP_CTR6 sctp_log_trace 595 #define SCTP_CTR6 CTR6 599 #define CTR6(m, d, p1, p2, p3, p4, p5, p6) 603 #define SCTP_BASE_INFO(__m) system_base_info.sctppcbinfo.__m 604 #define SCTP_BASE_STATS system_base_info.sctpstat 605 #define SCTP_BASE_STAT(__m) system_base_info.sctpstat.__m 606 #define SCTP_BASE_SYSCTL(__m) system_base_info.sctpsysctl.__m 607 #define SCTP_BASE_VAR(__m) system_base_info.__m 612 #if !defined(__Userspace_os_Darwin) 613 #define USER_ADDR_NULL (NULL) 616 #if defined(SCTP_DEBUG) 618 #define SCTPDBG(level, ...) \ 621 if (SCTP_BASE_SYSCTL(sctp_debug_on) & level) { \ 622 SCTP_PRINTF(__VA_ARGS__); \ 626 #define SCTPDBG_ADDR(level, addr) \ 629 if (SCTP_BASE_SYSCTL(sctp_debug_on) & level ) { \ 630 sctp_print_address(addr); \ 635 #define SCTPDBG(level, ...) 636 #define SCTPDBG_ADDR(level, addr) 639 #ifdef SCTP_LTRACE_CHUNKS 640 #define SCTP_LTRACE_CHK(a, b, c, d) if(sctp_logging_level & SCTP_LTRACE_CHUNK_ENABLE) CTR6(KTR_SUBSYS, "SCTP:%d[%d]:%x-%x-%x-%x", SCTP_LOG_CHUNK_PROC, 0, a, b, c, d) 642 #define SCTP_LTRACE_CHK(a, b, c, d) 645 #ifdef SCTP_LTRACE_ERRORS 646 #define SCTP_LTRACE_ERR_RET_PKT(m, inp, stcb, net, file, err) \ 647 if (sctp_logging_level & SCTP_LTRACE_ERROR_ENABLE) \ 648 SCTP_PRINTF("mbuf:%p inp:%p stcb:%p net:%p file:%x line:%d error:%d\n", \ 649 (void *)m, (void *)inp, (void *)stcb, (void *)net, file, __LINE__, err); 650 #define SCTP_LTRACE_ERR_RET(inp, stcb, net, file, err) \ 651 if (sctp_logging_level & SCTP_LTRACE_ERROR_ENABLE) \ 652 SCTP_PRINTF("inp:%p stcb:%p net:%p file:%x line:%d error:%d\n", \ 653 (void *)inp, (void *)stcb, (void *)net, file, __LINE__, err); 655 #define SCTP_LTRACE_ERR_RET_PKT(m, inp, stcb, net, file, err) 656 #define SCTP_LTRACE_ERR_RET(inp, stcb, net, file, err) 663 #define SCTP_MAX_VRF_ID 0 664 #define SCTP_SIZE_OF_VRF_HASH 3 665 #define SCTP_IFNAMSIZ IFNAMSIZ 666 #define SCTP_DEFAULT_VRFID 0 667 #define SCTP_VRF_ADDR_HASH_SIZE 16 668 #define SCTP_VRF_IFN_HASH_SIZE 3 669 #define SCTP_INIT_VRF_TABLEID(vrf) 671 #if !defined(__Userspace_os_Windows) 672 #define SCTP_IFN_IS_IFT_LOOP(ifn) (strncmp((ifn)->ifn_name, "lo", 2) == 0) 676 #define SCTP_ROUTE_IS_REAL_LOOP(ro) 0 682 #define SCTP_GET_IFN_VOID_FROM_ROUTE(ro) (void *)ro->ro_rt->rt_ifp 683 #define SCTP_GET_IF_INDEX_FROM_ROUTE(ro) 1 684 #define SCTP_ROUTE_HAS_VALID_IFN(ro) ((ro)->ro_rt && (ro)->ro_rt->rt_ifp) 690 #define SCTP_MALLOC(var, type, size, name) \ 692 MALLOC(var, type, size, name, M_NOWAIT); \ 695 #define SCTP_FREE(var, type) FREE(var, type) 697 #define SCTP_MALLOC_SONAME(var, type, size) \ 699 MALLOC(var, type, size, M_SONAME, (M_WAITOK | M_ZERO)); \ 702 #define SCTP_FREE_SONAME(var) FREE(var, M_SONAME) 704 #define SCTP_PROCESS_STRUCT struct proc * 711 #if defined(SCTP_SIMPLE_ALLOCATOR) 713 #define SCTP_ZONE_INIT(zone, name, size, number) { \ 718 #define SCTP_ZONE_GET(zone, type) \ 719 (type *)malloc(zone); 723 #define SCTP_ZONE_FREE(zone, element) { \ 727 #define SCTP_ZONE_DESTROY(zone) 736 #include "user_include/umem.h" 746 #define SCTP_ZONE_INIT(zone, name, size, number) { \ 747 zone = umem_cache_create(name, size, 0, NULL, NULL, NULL, NULL, NULL, 0); \ 751 #define SCTP_ZONE_GET(zone, type) \ 752 (type *)umem_cache_alloc(zone, UMEM_DEFAULT); 756 #define SCTP_ZONE_FREE(zone, element) \ 757 umem_cache_free(zone, element); 761 #define SCTP_ZONE_DESTROY(zone) \ 762 umem_cache_destroy(zone); 769 u_long *hashmask,
int flags);
777 #define HASH_NOWAIT 0x00000001 778 #define HASH_WAITOK 0x00000002 781 #define SCTP_HASH_INIT(size, hashmark) sctp_hashinit_flags(size, M_PCB, hashmark, HASH_NOWAIT) 783 #define SCTP_HASH_FREE(table, hashmark) sctp_hashdestroy(table, M_PCB, hashmark) 785 #define SCTP_HASH_FREE_DESTROY(table, hashmark) sctp_hashfreedestroy(table, M_PCB, hashmark) 786 #define SCTP_M_COPYM m_copym 805 #if !defined(__Userspace_os_Windows) 806 #define SCTP_PACKED __attribute__((packed)) 807 #define SCTP_UNUSED __attribute__((unused)) 817 #define SCTP_BUF_LEN(m) (m->m_len) 818 #define SCTP_BUF_NEXT(m) (m->m_next) 819 #define SCTP_BUF_NEXT_PKT(m) (m->m_nextpkt) 820 #define SCTP_BUF_RESV_UF(m, size) m->m_data += size 821 #define SCTP_BUF_AT(m, size) m->m_data + size 822 #define SCTP_BUF_IS_EXTENDED(m) (m->m_flags & M_EXT) 823 #define SCTP_BUF_EXTEND_SIZE(m) (m->m_ext.ext_size) 824 #define SCTP_BUF_TYPE(m) (m->m_type) 825 #define SCTP_BUF_RECVIF(m) (m->m_pkthdr.rcvif) 826 #define SCTP_BUF_PREPEND M_PREPEND 828 #define SCTP_ALIGN_TO_END(m, len) if(m->m_flags & M_PKTHDR) { \ 830 } else if ((m->m_flags & M_EXT) == 0) { \ 840 #define SCTP_PKTLOG_WRITERS_NEED_LOCK 3 850 static inline void sctp_userspace_rtalloc(
sctp_route_t *ro)
868 if (userspace_rawroute == -1) {
869 userspace_rawroute =
socket(AF_ROUTE, SOCK_RAW, 0);
870 if (userspace_rawroute == -1)
880 #define SCTP_RTALLOC(ro, vrf_id, fibnum) sctp_userspace_rtalloc((sctp_route_t *)ro) 894 #define rtfree(arg1) sctp_userspace_rtfree(arg1) 902 #define SCTP_GATHER_MTU_FROM_IFN_INFO(ifn, ifn_index, af) sctp_userspace_get_mtu_from_ifn(ifn_index, af) 904 #define SCTP_GATHER_MTU_FROM_ROUTE(sctp_ifa, sa, rt) ((rt != NULL) ? rt->rt_rmx.rmx_mtu : 0) 906 #define SCTP_GATHER_MTU_FROM_INTFC(sctp_ifn) sctp_userspace_get_mtu_from_ifn(if_nametoindex(((struct ifaddrs *) (sctp_ifn))->ifa_name), AF_INET) 908 #define SCTP_SET_MTU_OF_ROUTE(sa, rt, mtu) do { \ 910 rt->rt_rmx.rmx_mtu = mtu; \ 914 #define SCTP_REGISTER_INTERFACE(ifhandle, af) 915 #define SCTP_DEREGISTER_INTERFACE(ifhandle, af) 922 #define SCTP_BUF_EXTEND_BASE(m) (m->m_ext.ext_buf) 924 #define SCTP_BUF_EXTEND_REFCNT(m) (*m->m_ext.ref_cnt) 928 #define SCTP_BUF_GET_FLAGS(m) (m->m_flags) 935 #define SCTP_HEADER_TO_CHAIN(m) (m) 936 #define SCTP_DETACH_HEADER_FROM_CHAIN(m) 937 #define SCTP_HEADER_LEN(m) ((m)->m_pkthdr.len) 938 #define SCTP_GET_HEADER_FOR_OUTPUT(o_pak) 0 939 #define SCTP_RELEASE_HEADER(m) 940 #define SCTP_RELEASE_PKT(m) sctp_m_freem(m) 942 #define SCTP_GET_PKT_VRFID(m, vrf_id) ((vrf_id = SCTP_DEFAULT_VRFID) != SCTP_DEFAULT_VRFID) 947 #define SCTP_ATTACH_CHAIN(pak, m, packet_length) do { \ 949 pak->m_pkthdr.len = packet_length; \ 954 #define SCTP_IS_IT_BROADCAST(dst, m) 0 956 #define SCTP_IS_IT_LOOPBACK(m) 0 966 #define SCTP_GET_HLIM(inp, ro) 128 967 #define IPv6_HOP_LIMIT 128 970 #define SCTP_IPV6_V6ONLY(inp) (((struct inpcb *)inp)->inp_flags & IN6P_IPV6_V6ONLY) 972 #define SCTP_SO_IS_NBIO(so) ((so)->so_state & SS_NBIO) 973 #define SCTP_SET_SO_NBIO(so) ((so)->so_state |= SS_NBIO) 974 #define SCTP_CLEAR_SO_NBIO(so) ((so)->so_state &= ~SS_NBIO) 976 #define SCTP_SO_TYPE(so) ((so)->so_type) 979 #define SCTP_SORESERVE(so, send, recv) soreserve(so, send, recv) 982 #define SCTP_SOWAKEUP(so) wakeup(&(so)->so_timeo, so) 984 #define SCTP_SB_CLEAR(sb) \ 989 #define SCTP_SB_LIMIT_RCV(so) so->so_rcv.sb_hiwat 990 #define SCTP_SB_LIMIT_SND(so) so->so_snd.sb_hiwat 993 #define SCTP_ZERO_COPY_EVENT(inp, so) 995 #define SCTP_ZERO_COPY_SENDQ_EVENT(inp, so) 997 #define SCTP_READ_RANDOM(buf, len) read_random(buf, len) 999 #define SCTP_SHA1_CTX struct sctp_sha1_context 1000 #define SCTP_SHA1_INIT sctp_sha1_init 1001 #define SCTP_SHA1_UPDATE sctp_sha1_update 1002 #define SCTP_SHA1_FINAL(x,y) sctp_sha1_final((unsigned char *)x, y) 1006 #define IFT_LOOP 0x18 1010 #if defined(__Userspace_os_Windows) 1015 #define PRU_FLUSH_RD SHUT_RD 1016 #define PRU_FLUSH_WR SHUT_WR 1017 #define PRU_FLUSH_RDWR SHUT_RDWR 1020 #define IP_RAWOUTPUT 0x2 1027 #ifdef HAVE_SCONN_LEN 1037 typedef void *(*start_routine_t)(
void *);
1048 #define M_NOTIFICATION M_PROTO5 1059 #define SCTP_IP_ID(inp) (ip_id) 1067 #define SCTP_IP_OUTPUT(result, o_pak, ro, stcb, vrf_id) sctp_userspace_ip_output(&result, o_pak, ro, stcb, vrf_id); 1070 extern void sctp_userspace_ip6_output(
int *
result,
struct mbuf *o_pak,
1073 #define SCTP_IP6_OUTPUT(result, o_pak, ro, ifp, stcb, vrf_id) sctp_userspace_ip6_output(&result, o_pak, ro, stcb, vrf_id); 1079 #define SCTP_IP6_OUTPUT(result, o_pak, ro, ifp, stcb, vrf_id) \ 1081 if (stcb && stcb->sctp_ep) \ 1082 result = ip6_output(o_pak, \ 1083 ((struct in6pcb *)(stcb->sctp_ep))->in6p_outputopts, \ 1084 (ro), 0, 0, ifp, NULL); \ 1086 result = ip6_output(o_pak, NULL, (ro), 0, 0, ifp, NULL); \ 1097 #if defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_OpenBSD) || defined(__Userspace_os_NaCl) 1099 #define CMSG_ALIGN(n) _ALIGN(n) 1100 #elif defined(__Userspace_os_NetBSD) 1101 #define CMSG_ALIGN(n) (((n) + __ALIGNBYTES) & ~__ALIGNBYTES) 1102 #elif defined(__Userspace_os_Darwin) 1103 #if !defined(__DARWIN_ALIGNBYTES) 1104 #define __DARWIN_ALIGNBYTES (sizeof(__darwin_size_t) - 1) 1107 #if !defined(__DARWIN_ALIGN) 1108 #define __DARWIN_ALIGN(p) ((__darwin_size_t)((char *)(uintptr_t)(p) + __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES) 1111 #if !defined(__DARWIN_ALIGNBYTES32) 1112 #define __DARWIN_ALIGNBYTES32 (sizeof(__uint32_t) - 1) 1115 #if !defined(__DARWIN_ALIGN32) 1116 #define __DARWIN_ALIGN32(p) ((__darwin_size_t)((char *)(uintptr_t)(p) + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32) 1118 #define CMSG_ALIGN(n) __DARWIN_ALIGN32(n) 1122 SCTP_PRINTF("%s:%d at %s\n", __FILE__, __LINE__ , __func__); \ 1126 #define timevalsub(tp1, tp2) \ 1128 (tp1)->tv_sec -= (tp2)->tv_sec; \ 1129 (tp1)->tv_usec -= (tp2)->tv_usec; \ 1130 if ((tp1)->tv_usec < 0) { \ 1132 (tp1)->tv_usec += 1000000; \ 1137 #if defined(__Userspace_os_Linux) 1138 #if !defined(TAILQ_FOREACH_SAFE) 1139 #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ 1140 for ((var) = ((head)->tqh_first); \ 1141 (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ 1144 #if !defined(LIST_FOREACH_SAFE) 1145 #define LIST_FOREACH_SAFE(var, head, field, tvar) \ 1146 for ((var) = ((head)->lh_first); \ 1147 (var) && ((tvar) = LIST_NEXT((var), field), 1); \ 1151 #if defined(__Userspace_os_DragonFly) 1152 #define TAILQ_FOREACH_SAFE TAILQ_FOREACH_MUTABLE 1153 #define LIST_FOREACH_SAFE LIST_FOREACH_MUTABLE 1156 #if defined(__Userspace_os_NaCl) 1157 #define timercmp(tvp, uvp, cmp) \ 1158 (((tvp)->tv_sec == (uvp)->tv_sec) ? \ 1159 ((tvp)->tv_usec cmp (uvp)->tv_usec) : \ 1160 ((tvp)->tv_sec cmp (uvp)->tv_sec)) struct sctp_rtentry * ro_rt
Definition: user_route.h:48
thread
Definition: __init__.py:35
int dummy
Definition: sctp_os_userspace.h:427
int sctp_userspace_thread_create(userland_thread_t *thread, start_routine_t start_routine)
Definition: sctp_userspace.c:66
MALLOC_DECLARE(SCTP_M_MAP)
pthread_cond_t userland_cond_t
Definition: sctp_os_userspace.h:281
void sctp_hashdestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask)
Definition: sctp_os_userspace.h:429
struct mbuf * sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int allonebuf, int type)
Definition: sctp_bsd_addr.c:788
unsigned int uint32_t
Definition: ptypes.h:105
int dummy
Definition: sctp_os_userspace.h:431
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: gl2ext.h:134
void * sconn_addr
Definition: sctp_os_userspace.h:1034
int dummy
Definition: sctp_os_userspace.h:429
Definition: user_route.h:47
pthread_t userland_thread_t
Definition: sctp_os_userspace.h:282
Definition: user_route.h:72
void *(* start_routine_t)(void *)
Definition: sctp_os_userspace.h:1037
int sctp_userspace_get_mtu_from_ifn(uint32_t if_index, int af)
Definition: sctp_userspace.c:88
OPENSSL_EXPORT const ASN1_OBJECT int const unsigned char int len
Definition: x509.h:1053
struct ifaddrs * ifa_next
Definition: ifaddrs-android.h:23
void sctp_hashfreedestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask)
Definition: sctp_os_userspace.h:1026
uint16_t sconn_port
Definition: sctp_os_userspace.h:1033
uint32_t rmx_mtu
Definition: user_route.h:57
void * sctp_hashinit_flags(int elements, struct malloc_type *type, u_long *hashmask, int flags)
unsigned char uint8_t
Definition: ptypes.h:89
u_short ip_id
Definition: user_environment.c:56
unsigned short uint16_t
Definition: ptypes.h:97
long rt_refcnt
Definition: user_route.h:88
EGLImageKHR EGLint * name
Definition: eglext.h:851
struct sctp_rt_metrics_lite rt_rmx
Definition: user_route.h:87
char * ifa_name
Definition: ifaddrs-android.h:24
Definition: user_mbuf.h:231
#define malloc
Definition: mbmalloc.h:49
void sctp_userspace_ip_output(int *result, struct mbuf *o_pak, sctp_route_t *ro, void *stcb, uint32_t vrf_id)
uint16_t sconn_family
Definition: sctp_os_userspace.h:1031
unsigned int ifa_flags
Definition: ifaddrs-android.h:25
pthread_mutex_t userland_mutex_t
Definition: sctp_os_userspace.h:280
EGLenum type
Definition: eglext.h:63
Definition: user_malloc.h:109
result
Definition: target-blank-opener-post-window.php:5
Definition: sctp_os_userspace.h:431
#define NULL
Definition: common_types.h:41
void sctp_userspace_set_threadname(const char *name)
Definition: sctp_userspace.c:73
Definition: sctp_os_userspace.h:427
Definition: user_ip6_var.h:99
socket
Definition: timeoutsocket.py:421
#define free
Definition: mbmalloc.h:50
Definition: bwe_rtp.cc:26
Definition: ifaddrs-android.h:22