webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
Classes | Macros | Typedefs | Functions
sctp_os_userspace.h File Reference
#include <errno.h>
#include <sys/socket.h>
#include <stdio.h>
#include <string.h>
#include <user_queue.h>
#include <user_malloc.h>
#include "user_socketvar.h"
#include <user_environment.h>
#include <user_atomic.h>
#include <user_mbuf.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <user_ip_icmp.h>
#include <user_inpcb.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <stddef.h>
#include "netinet/sctp_sha1.h"
#include "user_include/umem.h"
#include <netinet/sctp_callout.h>
#include <user_recv_thread.h>
#include <netinet/sctp.h>

Go to the source code of this file.

Classes

struct  mtx
 
struct  selinfo
 
struct  sx
 
struct  sockaddr_conn
 

Macros

#define mtx_lock(arg1)
 
#define mtx_unlock(arg1)
 
#define mtx_assert(arg1, arg2)
 
#define MA_OWNED   7 /* sys/mutex.h typically on FreeBSD */
 
#define SCTP_PRINTF(...)
 
#define SCTP_CTR6   CTR6
 
#define CTR6(m, d, p1, p2, p3, p4, p5, p6)
 
#define SCTP_BASE_INFO(__m)   system_base_info.sctppcbinfo.__m
 
#define SCTP_BASE_STATS   system_base_info.sctpstat
 
#define SCTP_BASE_STAT(__m)   system_base_info.sctpstat.__m
 
#define SCTP_BASE_SYSCTL(__m)   system_base_info.sctpsysctl.__m
 
#define SCTP_BASE_VAR(__m)   system_base_info.__m
 
#define USER_ADDR_NULL   (NULL) /* FIX ME: temp */
 
#define SCTPDBG(level, ...)
 
#define SCTPDBG_ADDR(level, addr)
 
#define SCTP_LTRACE_CHK(a, b, c, d)
 
#define SCTP_LTRACE_ERR_RET_PKT(m, inp, stcb, net, file, err)
 
#define SCTP_LTRACE_ERR_RET(inp, stcb, net, file, err)
 
#define SCTP_MAX_VRF_ID   0
 
#define SCTP_SIZE_OF_VRF_HASH   3
 
#define SCTP_IFNAMSIZ   IFNAMSIZ
 
#define SCTP_DEFAULT_VRFID   0
 
#define SCTP_VRF_ADDR_HASH_SIZE   16
 
#define SCTP_VRF_IFN_HASH_SIZE   3
 
#define SCTP_INIT_VRF_TABLEID(vrf)
 
#define SCTP_IFN_IS_IFT_LOOP(ifn)   (strncmp((ifn)->ifn_name, "lo", 2) == 0)
 
#define SCTP_ROUTE_IS_REAL_LOOP(ro)   0
 
#define SCTP_GET_IFN_VOID_FROM_ROUTE(ro)   (void *)ro->ro_rt->rt_ifp
 
#define SCTP_GET_IF_INDEX_FROM_ROUTE(ro)   1 /* compiles... TODO use routing socket to determine */
 
#define SCTP_ROUTE_HAS_VALID_IFN(ro)   ((ro)->ro_rt && (ro)->ro_rt->rt_ifp)
 
#define SCTP_MALLOC(var, type, size, name)
 
#define SCTP_FREE(var, type)   FREE(var, type)
 
#define SCTP_MALLOC_SONAME(var, type, size)
 
#define SCTP_FREE_SONAME(var)   FREE(var, M_SONAME)
 
#define SCTP_PROCESS_STRUCT   struct proc *
 
#define SCTP_ZONE_INIT(zone, name, size, number)
 
#define SCTP_ZONE_GET(zone, type)   (type *)umem_cache_alloc(zone, UMEM_DEFAULT);
 
#define SCTP_ZONE_FREE(zone, element)   umem_cache_free(zone, element);
 
#define SCTP_ZONE_DESTROY(zone)   umem_cache_destroy(zone);
 
#define HASH_NOWAIT   0x00000001
 
#define HASH_WAITOK   0x00000002
 
#define SCTP_HASH_INIT(size, hashmark)   sctp_hashinit_flags(size, M_PCB, hashmark, HASH_NOWAIT)
 
#define SCTP_HASH_FREE(table, hashmark)   sctp_hashdestroy(table, M_PCB, hashmark)
 
#define SCTP_HASH_FREE_DESTROY(table, hashmark)   sctp_hashfreedestroy(table, M_PCB, hashmark)
 
#define SCTP_M_COPYM   m_copym
 
#define KTR_SUBSYS   1
 
#define SCTP_PACKED   __attribute__((packed))
 
#define SCTP_UNUSED   __attribute__((unused))
 
#define SCTP_BUF_LEN(m)   (m->m_len)
 
#define SCTP_BUF_NEXT(m)   (m->m_next)
 
#define SCTP_BUF_NEXT_PKT(m)   (m->m_nextpkt)
 
#define SCTP_BUF_RESV_UF(m, size)   m->m_data += size
 
#define SCTP_BUF_AT(m, size)   m->m_data + size
 
#define SCTP_BUF_IS_EXTENDED(m)   (m->m_flags & M_EXT)
 
#define SCTP_BUF_EXTEND_SIZE(m)   (m->m_ext.ext_size)
 
#define SCTP_BUF_TYPE(m)   (m->m_type)
 
#define SCTP_BUF_RECVIF(m)   (m->m_pkthdr.rcvif)
 
#define SCTP_BUF_PREPEND   M_PREPEND
 
#define SCTP_ALIGN_TO_END(m, len)
 
#define SCTP_PKTLOG_WRITERS_NEED_LOCK   3
 
#define SCTP_RTALLOC(ro, vrf_id, fibnum)   sctp_userspace_rtalloc((sctp_route_t *)ro)
 
#define rtfree(arg1)   sctp_userspace_rtfree(arg1)
 
#define SCTP_GATHER_MTU_FROM_IFN_INFO(ifn, ifn_index, af)   sctp_userspace_get_mtu_from_ifn(ifn_index, af)
 
#define SCTP_GATHER_MTU_FROM_ROUTE(sctp_ifa, sa, rt)   ((rt != NULL) ? rt->rt_rmx.rmx_mtu : 0)
 
#define SCTP_GATHER_MTU_FROM_INTFC(sctp_ifn)   sctp_userspace_get_mtu_from_ifn(if_nametoindex(((struct ifaddrs *) (sctp_ifn))->ifa_name), AF_INET)
 
#define SCTP_SET_MTU_OF_ROUTE(sa, rt, mtu)
 
#define SCTP_REGISTER_INTERFACE(ifhandle, af)
 
#define SCTP_DEREGISTER_INTERFACE(ifhandle, af)
 
#define SCTP_BUF_EXTEND_BASE(m)   (m->m_ext.ext_buf)
 
#define SCTP_BUF_EXTEND_REFCNT(m)   (*m->m_ext.ref_cnt)
 
#define SCTP_BUF_GET_FLAGS(m)   (m->m_flags)
 
#define SCTP_HEADER_TO_CHAIN(m)   (m)
 
#define SCTP_DETACH_HEADER_FROM_CHAIN(m)
 
#define SCTP_HEADER_LEN(m)   ((m)->m_pkthdr.len)
 
#define SCTP_GET_HEADER_FOR_OUTPUT(o_pak)   0
 
#define SCTP_RELEASE_HEADER(m)
 
#define SCTP_RELEASE_PKT(m)   sctp_m_freem(m)
 
#define SCTP_GET_PKT_VRFID(m, vrf_id)   ((vrf_id = SCTP_DEFAULT_VRFID) != SCTP_DEFAULT_VRFID)
 
#define SCTP_ATTACH_CHAIN(pak, m, packet_length)
 
#define SCTP_IS_IT_BROADCAST(dst, m)   0
 
#define SCTP_IS_IT_LOOPBACK(m)   0
 
#define SCTP_GET_HLIM(inp, ro)   128 /* As done for __Windows__ */
 
#define IPv6_HOP_LIMIT   128
 
#define SCTP_IPV6_V6ONLY(inp)   (((struct inpcb *)inp)->inp_flags & IN6P_IPV6_V6ONLY)
 
#define SCTP_SO_IS_NBIO(so)   ((so)->so_state & SS_NBIO)
 
#define SCTP_SET_SO_NBIO(so)   ((so)->so_state |= SS_NBIO)
 
#define SCTP_CLEAR_SO_NBIO(so)   ((so)->so_state &= ~SS_NBIO)
 
#define SCTP_SO_TYPE(so)   ((so)->so_type)
 
#define SCTP_SORESERVE(so, send, recv)   soreserve(so, send, recv)
 
#define SCTP_SOWAKEUP(so)   wakeup(&(so)->so_timeo, so)
 
#define SCTP_SB_CLEAR(sb)
 
#define SCTP_SB_LIMIT_RCV(so)   so->so_rcv.sb_hiwat
 
#define SCTP_SB_LIMIT_SND(so)   so->so_snd.sb_hiwat
 
#define SCTP_ZERO_COPY_EVENT(inp, so)
 
#define SCTP_ZERO_COPY_SENDQ_EVENT(inp, so)
 
#define SCTP_READ_RANDOM(buf, len)   read_random(buf, len)
 
#define SCTP_SHA1_CTX   struct sctp_sha1_context
 
#define SCTP_SHA1_INIT   sctp_sha1_init
 
#define SCTP_SHA1_UPDATE   sctp_sha1_update
 
#define SCTP_SHA1_FINAL(x, y)   sctp_sha1_final((unsigned char *)x, y)
 
#define IFT_LOOP   0x18
 
#define PRU_FLUSH_RD   SHUT_RD
 
#define PRU_FLUSH_WR   SHUT_WR
 
#define PRU_FLUSH_RDWR   SHUT_RDWR
 
#define IP_RAWOUTPUT   0x2
 
#define AF_CONN   123
 
#define M_NOTIFICATION   M_PROTO5 /* SCTP notification */
 
#define SCTP_IP_ID(inp)   (ip_id)
 
#define SCTP_IP_OUTPUT(result, o_pak, ro, stcb, vrf_id)   sctp_userspace_ip_output(&result, o_pak, ro, stcb, vrf_id);
 
#define I_AM_HERE
 
#define timevalsub(tp1, tp2)
 

Typedefs

typedef pthread_mutex_t userland_mutex_t
 
typedef pthread_cond_t userland_cond_t
 
typedef pthread_t userland_thread_t
 
typedef struct sctp_route sctp_route_t
 
typedef struct sctp_rtentry sctp_rtentry_t
 
typedef void *(* start_routine_t) (void *)
 

Functions

 MALLOC_DECLARE (SCTP_M_MAP)
 
 MALLOC_DECLARE (SCTP_M_STRMI)
 
 MALLOC_DECLARE (SCTP_M_STRMO)
 
 MALLOC_DECLARE (SCTP_M_ASC_ADDR)
 
 MALLOC_DECLARE (SCTP_M_ASC_IT)
 
 MALLOC_DECLARE (SCTP_M_AUTH_CL)
 
 MALLOC_DECLARE (SCTP_M_AUTH_KY)
 
 MALLOC_DECLARE (SCTP_M_AUTH_HL)
 
 MALLOC_DECLARE (SCTP_M_AUTH_IF)
 
 MALLOC_DECLARE (SCTP_M_STRESET)
 
 MALLOC_DECLARE (SCTP_M_CMSG)
 
 MALLOC_DECLARE (SCTP_M_COPYAL)
 
 MALLOC_DECLARE (SCTP_M_VRF)
 
 MALLOC_DECLARE (SCTP_M_IFA)
 
 MALLOC_DECLARE (SCTP_M_IFN)
 
 MALLOC_DECLARE (SCTP_M_TIMW)
 
 MALLOC_DECLARE (SCTP_M_MVRF)
 
 MALLOC_DECLARE (SCTP_M_ITER)
 
 MALLOC_DECLARE (SCTP_M_SOCKOPT)
 
voidsctp_hashinit_flags (int elements, struct malloc_type *type, u_long *hashmask, int flags)
 
void sctp_hashdestroy (void *vhashtbl, struct malloc_type *type, u_long hashmask)
 
void sctp_hashfreedestroy (void *vhashtbl, struct malloc_type *type, u_long hashmask)
 
int sctp_userspace_get_mtu_from_ifn (uint32_t if_index, int af)
 
int sctp_userspace_thread_create (userland_thread_t *thread, start_routine_t start_routine)
 
void sctp_userspace_set_threadname (const char *name)
 
void sctp_userspace_ip_output (int *result, struct mbuf *o_pak, sctp_route_t *ro, void *stcb, uint32_t vrf_id)
 
struct mbufsctp_get_mbuf_for_msg (unsigned int space_needed, int want_header, int how, int allonebuf, int type)
 

Macro Definition Documentation

◆ AF_CONN

#define AF_CONN   123

◆ CTR6

#define CTR6 (   m,
  d,
  p1,
  p2,
  p3,
  p4,
  p5,
  p6 
)

◆ HASH_NOWAIT

#define HASH_NOWAIT   0x00000001

◆ HASH_WAITOK

#define HASH_WAITOK   0x00000002

◆ I_AM_HERE

#define I_AM_HERE
Value:
do { \
SCTP_PRINTF("%s:%d at %s\n", __FILE__, __LINE__ , __func__); \
} while (0)

◆ IFT_LOOP

#define IFT_LOOP   0x18

◆ IP_RAWOUTPUT

#define IP_RAWOUTPUT   0x2

◆ IPv6_HOP_LIMIT

#define IPv6_HOP_LIMIT   128

◆ KTR_SUBSYS

#define KTR_SUBSYS   1

◆ M_NOTIFICATION

#define M_NOTIFICATION   M_PROTO5 /* SCTP notification */

◆ MA_OWNED

#define MA_OWNED   7 /* sys/mutex.h typically on FreeBSD */

◆ mtx_assert

#define mtx_assert (   arg1,
  arg2 
)

◆ mtx_lock

#define mtx_lock (   arg1)

◆ mtx_unlock

#define mtx_unlock (   arg1)

◆ PRU_FLUSH_RD

#define PRU_FLUSH_RD   SHUT_RD

◆ PRU_FLUSH_RDWR

#define PRU_FLUSH_RDWR   SHUT_RDWR

◆ PRU_FLUSH_WR

#define PRU_FLUSH_WR   SHUT_WR

◆ rtfree

#define rtfree (   arg1)    sctp_userspace_rtfree(arg1)

◆ SCTP_ALIGN_TO_END

#define SCTP_ALIGN_TO_END (   m,
  len 
)
Value:
if(m->m_flags & M_PKTHDR) { \
MH_ALIGN(m, len); \
} else if ((m->m_flags & M_EXT) == 0) { \
M_ALIGN(m, len); \
}
const GLfloat * m
Definition: gl2ext.h:850
OPENSSL_EXPORT const ASN1_OBJECT int const unsigned char int len
Definition: x509.h:1053
#define M_PKTHDR
Definition: user_mbuf.h:262
#define M_EXT
Definition: user_mbuf.h:261

◆ SCTP_ATTACH_CHAIN

#define SCTP_ATTACH_CHAIN (   pak,
  m,
  packet_length 
)
Value:
do { \
pak = m; \
pak->m_pkthdr.len = packet_length; \
} while(0)
const GLfloat * m
Definition: gl2ext.h:850

◆ SCTP_BASE_INFO

#define SCTP_BASE_INFO (   __m)    system_base_info.sctppcbinfo.__m

◆ SCTP_BASE_STAT

#define SCTP_BASE_STAT (   __m)    system_base_info.sctpstat.__m

◆ SCTP_BASE_STATS

#define SCTP_BASE_STATS   system_base_info.sctpstat

◆ SCTP_BASE_SYSCTL

#define SCTP_BASE_SYSCTL (   __m)    system_base_info.sctpsysctl.__m

◆ SCTP_BASE_VAR

#define SCTP_BASE_VAR (   __m)    system_base_info.__m

◆ SCTP_BUF_AT

#define SCTP_BUF_AT (   m,
  size 
)    m->m_data + size

◆ SCTP_BUF_EXTEND_BASE

#define SCTP_BUF_EXTEND_BASE (   m)    (m->m_ext.ext_buf)

◆ SCTP_BUF_EXTEND_REFCNT

#define SCTP_BUF_EXTEND_REFCNT (   m)    (*m->m_ext.ref_cnt)

◆ SCTP_BUF_EXTEND_SIZE

#define SCTP_BUF_EXTEND_SIZE (   m)    (m->m_ext.ext_size)

◆ SCTP_BUF_GET_FLAGS

#define SCTP_BUF_GET_FLAGS (   m)    (m->m_flags)

◆ SCTP_BUF_IS_EXTENDED

#define SCTP_BUF_IS_EXTENDED (   m)    (m->m_flags & M_EXT)

◆ SCTP_BUF_LEN

#define SCTP_BUF_LEN (   m)    (m->m_len)

◆ SCTP_BUF_NEXT

#define SCTP_BUF_NEXT (   m)    (m->m_next)

◆ SCTP_BUF_NEXT_PKT

#define SCTP_BUF_NEXT_PKT (   m)    (m->m_nextpkt)

◆ SCTP_BUF_PREPEND

#define SCTP_BUF_PREPEND   M_PREPEND

◆ SCTP_BUF_RECVIF

#define SCTP_BUF_RECVIF (   m)    (m->m_pkthdr.rcvif)

◆ SCTP_BUF_RESV_UF

#define SCTP_BUF_RESV_UF (   m,
  size 
)    m->m_data += size

◆ SCTP_BUF_TYPE

#define SCTP_BUF_TYPE (   m)    (m->m_type)

◆ SCTP_CLEAR_SO_NBIO

#define SCTP_CLEAR_SO_NBIO (   so)    ((so)->so_state &= ~SS_NBIO)

◆ SCTP_CTR6

#define SCTP_CTR6   CTR6

◆ SCTP_DEFAULT_VRFID

#define SCTP_DEFAULT_VRFID   0

◆ SCTP_DEREGISTER_INTERFACE

#define SCTP_DEREGISTER_INTERFACE (   ifhandle,
  af 
)

◆ SCTP_DETACH_HEADER_FROM_CHAIN

#define SCTP_DETACH_HEADER_FROM_CHAIN (   m)

◆ SCTP_FREE

#define SCTP_FREE (   var,
  type 
)    FREE(var, type)

◆ SCTP_FREE_SONAME

#define SCTP_FREE_SONAME (   var)    FREE(var, M_SONAME)

◆ SCTP_GATHER_MTU_FROM_IFN_INFO

#define SCTP_GATHER_MTU_FROM_IFN_INFO (   ifn,
  ifn_index,
  af 
)    sctp_userspace_get_mtu_from_ifn(ifn_index, af)

◆ SCTP_GATHER_MTU_FROM_INTFC

#define SCTP_GATHER_MTU_FROM_INTFC (   sctp_ifn)    sctp_userspace_get_mtu_from_ifn(if_nametoindex(((struct ifaddrs *) (sctp_ifn))->ifa_name), AF_INET)

◆ SCTP_GATHER_MTU_FROM_ROUTE

#define SCTP_GATHER_MTU_FROM_ROUTE (   sctp_ifa,
  sa,
  rt 
)    ((rt != NULL) ? rt->rt_rmx.rmx_mtu : 0)

◆ SCTP_GET_HEADER_FOR_OUTPUT

#define SCTP_GET_HEADER_FOR_OUTPUT (   o_pak)    0

◆ SCTP_GET_HLIM

#define SCTP_GET_HLIM (   inp,
  ro 
)    128 /* As done for __Windows__ */

◆ SCTP_GET_IF_INDEX_FROM_ROUTE

#define SCTP_GET_IF_INDEX_FROM_ROUTE (   ro)    1 /* compiles... TODO use routing socket to determine */

◆ SCTP_GET_IFN_VOID_FROM_ROUTE

#define SCTP_GET_IFN_VOID_FROM_ROUTE (   ro)    (void *)ro->ro_rt->rt_ifp

◆ SCTP_GET_PKT_VRFID

#define SCTP_GET_PKT_VRFID (   m,
  vrf_id 
)    ((vrf_id = SCTP_DEFAULT_VRFID) != SCTP_DEFAULT_VRFID)

◆ SCTP_HASH_FREE

#define SCTP_HASH_FREE (   table,
  hashmark 
)    sctp_hashdestroy(table, M_PCB, hashmark)

◆ SCTP_HASH_FREE_DESTROY

#define SCTP_HASH_FREE_DESTROY (   table,
  hashmark 
)    sctp_hashfreedestroy(table, M_PCB, hashmark)

◆ SCTP_HASH_INIT

#define SCTP_HASH_INIT (   size,
  hashmark 
)    sctp_hashinit_flags(size, M_PCB, hashmark, HASH_NOWAIT)

◆ SCTP_HEADER_LEN

#define SCTP_HEADER_LEN (   m)    ((m)->m_pkthdr.len)

◆ SCTP_HEADER_TO_CHAIN

#define SCTP_HEADER_TO_CHAIN (   m)    (m)

◆ SCTP_IFN_IS_IFT_LOOP

#define SCTP_IFN_IS_IFT_LOOP (   ifn)    (strncmp((ifn)->ifn_name, "lo", 2) == 0)

◆ SCTP_IFNAMSIZ

#define SCTP_IFNAMSIZ   IFNAMSIZ

◆ SCTP_INIT_VRF_TABLEID

#define SCTP_INIT_VRF_TABLEID (   vrf)

◆ SCTP_IP_ID

#define SCTP_IP_ID (   inp)    (ip_id)

◆ SCTP_IP_OUTPUT

#define SCTP_IP_OUTPUT (   result,
  o_pak,
  ro,
  stcb,
  vrf_id 
)    sctp_userspace_ip_output(&result, o_pak, ro, stcb, vrf_id);

◆ SCTP_IPV6_V6ONLY

#define SCTP_IPV6_V6ONLY (   inp)    (((struct inpcb *)inp)->inp_flags & IN6P_IPV6_V6ONLY)

◆ SCTP_IS_IT_BROADCAST

#define SCTP_IS_IT_BROADCAST (   dst,
  m 
)    0

◆ SCTP_IS_IT_LOOPBACK

#define SCTP_IS_IT_LOOPBACK (   m)    0

◆ SCTP_LTRACE_CHK

#define SCTP_LTRACE_CHK (   a,
  b,
  c,
  d 
)

◆ SCTP_LTRACE_ERR_RET

#define SCTP_LTRACE_ERR_RET (   inp,
  stcb,
  net,
  file,
  err 
)

◆ SCTP_LTRACE_ERR_RET_PKT

#define SCTP_LTRACE_ERR_RET_PKT (   m,
  inp,
  stcb,
  net,
  file,
  err 
)

◆ SCTP_M_COPYM

#define SCTP_M_COPYM   m_copym

◆ SCTP_MALLOC

#define SCTP_MALLOC (   var,
  type,
  size,
  name 
)
Value:
do { \
MALLOC(var, type, size, name, M_NOWAIT); \
} while (0)
EGLStreamKHR EGLint EGLint EGLint size
Definition: eglext.h:984
EGLImageKHR EGLint * name
Definition: eglext.h:851
EGLenum type
Definition: eglext.h:63
#define M_NOWAIT
Definition: user_malloc.h:60

◆ SCTP_MALLOC_SONAME

#define SCTP_MALLOC_SONAME (   var,
  type,
  size 
)
Value:
do { \
MALLOC(var, type, size, M_SONAME, (M_WAITOK | M_ZERO)); \
} while (0)
EGLStreamKHR EGLint EGLint EGLint size
Definition: eglext.h:984
#define M_ZERO
Definition: user_malloc.h:62
#define M_WAITOK
Definition: user_malloc.h:61
EGLenum type
Definition: eglext.h:63

◆ SCTP_MAX_VRF_ID

#define SCTP_MAX_VRF_ID   0

◆ SCTP_PACKED

#define SCTP_PACKED   __attribute__((packed))

◆ SCTP_PKTLOG_WRITERS_NEED_LOCK

#define SCTP_PKTLOG_WRITERS_NEED_LOCK   3

◆ SCTP_PRINTF

#define SCTP_PRINTF (   ...)
Value:
SCTP_BASE_VAR(debug_printf)(__VA_ARGS__); \
}
void debug_printf(const char *format,...)
Definition: client.c:79
#define SCTP_BASE_VAR(__m)
Definition: sctp_os_userspace.h:607

◆ SCTP_PROCESS_STRUCT

#define SCTP_PROCESS_STRUCT   struct proc *

◆ SCTP_READ_RANDOM

#define SCTP_READ_RANDOM (   buf,
  len 
)    read_random(buf, len)

◆ SCTP_REGISTER_INTERFACE

#define SCTP_REGISTER_INTERFACE (   ifhandle,
  af 
)

◆ SCTP_RELEASE_HEADER

#define SCTP_RELEASE_HEADER (   m)

◆ SCTP_RELEASE_PKT

#define SCTP_RELEASE_PKT (   m)    sctp_m_freem(m)

◆ SCTP_ROUTE_HAS_VALID_IFN

#define SCTP_ROUTE_HAS_VALID_IFN (   ro)    ((ro)->ro_rt && (ro)->ro_rt->rt_ifp)

◆ SCTP_ROUTE_IS_REAL_LOOP

#define SCTP_ROUTE_IS_REAL_LOOP (   ro)    0

◆ SCTP_RTALLOC

#define SCTP_RTALLOC (   ro,
  vrf_id,
  fibnum 
)    sctp_userspace_rtalloc((sctp_route_t *)ro)

◆ SCTP_SB_CLEAR

#define SCTP_SB_CLEAR (   sb)
Value:
(sb).sb_cc = 0; \
(sb).sb_mb = NULL; \
(sb).sb_mbcnt = 0;
short sb[N]
Definition: gcc-loops.cpp:21
#define NULL
Definition: common_types.h:41

◆ SCTP_SB_LIMIT_RCV

#define SCTP_SB_LIMIT_RCV (   so)    so->so_rcv.sb_hiwat

◆ SCTP_SB_LIMIT_SND

#define SCTP_SB_LIMIT_SND (   so)    so->so_snd.sb_hiwat

◆ SCTP_SET_MTU_OF_ROUTE

#define SCTP_SET_MTU_OF_ROUTE (   sa,
  rt,
  mtu 
)
Value:
do { \
if (rt != NULL) \
rt->rt_rmx.rmx_mtu = mtu; \
} while(0)
#define NULL
Definition: common_types.h:41

◆ SCTP_SET_SO_NBIO

#define SCTP_SET_SO_NBIO (   so)    ((so)->so_state |= SS_NBIO)

◆ SCTP_SHA1_CTX

#define SCTP_SHA1_CTX   struct sctp_sha1_context

◆ SCTP_SHA1_FINAL

#define SCTP_SHA1_FINAL (   x,
  y 
)    sctp_sha1_final((unsigned char *)x, y)

◆ SCTP_SHA1_INIT

#define SCTP_SHA1_INIT   sctp_sha1_init

◆ SCTP_SHA1_UPDATE

#define SCTP_SHA1_UPDATE   sctp_sha1_update

◆ SCTP_SIZE_OF_VRF_HASH

#define SCTP_SIZE_OF_VRF_HASH   3

◆ SCTP_SO_IS_NBIO

#define SCTP_SO_IS_NBIO (   so)    ((so)->so_state & SS_NBIO)

◆ SCTP_SO_TYPE

#define SCTP_SO_TYPE (   so)    ((so)->so_type)

◆ SCTP_SORESERVE

#define SCTP_SORESERVE (   so,
  send,
  recv 
)    soreserve(so, send, recv)

◆ SCTP_SOWAKEUP

#define SCTP_SOWAKEUP (   so)    wakeup(&(so)->so_timeo, so)

◆ SCTP_UNUSED

#define SCTP_UNUSED   __attribute__((unused))

◆ SCTP_VRF_ADDR_HASH_SIZE

#define SCTP_VRF_ADDR_HASH_SIZE   16

◆ SCTP_VRF_IFN_HASH_SIZE

#define SCTP_VRF_IFN_HASH_SIZE   3

◆ SCTP_ZERO_COPY_EVENT

#define SCTP_ZERO_COPY_EVENT (   inp,
  so 
)

◆ SCTP_ZERO_COPY_SENDQ_EVENT

#define SCTP_ZERO_COPY_SENDQ_EVENT (   inp,
  so 
)

◆ SCTP_ZONE_DESTROY

#define SCTP_ZONE_DESTROY (   zone)    umem_cache_destroy(zone);

◆ SCTP_ZONE_FREE

#define SCTP_ZONE_FREE (   zone,
  element 
)    umem_cache_free(zone, element);

◆ SCTP_ZONE_GET

#define SCTP_ZONE_GET (   zone,
  type 
)    (type *)umem_cache_alloc(zone, UMEM_DEFAULT);

◆ SCTP_ZONE_INIT

#define SCTP_ZONE_INIT (   zone,
  name,
  size,
  number 
)
Value:
{ \
zone = umem_cache_create(name, size, 0, NULL, NULL, NULL, NULL, NULL, 0); \
}
EGLStreamKHR EGLint EGLint EGLint size
Definition: eglext.h:984
EGLImageKHR EGLint * name
Definition: eglext.h:851
#define NULL
Definition: common_types.h:41

◆ SCTPDBG

#define SCTPDBG (   level,
  ... 
)

◆ SCTPDBG_ADDR

#define SCTPDBG_ADDR (   level,
  addr 
)

◆ timevalsub

#define timevalsub (   tp1,
  tp2 
)
Value:
do { \
(tp1)->tv_sec -= (tp2)->tv_sec; \
(tp1)->tv_usec -= (tp2)->tv_usec; \
if ((tp1)->tv_usec < 0) { \
(tp1)->tv_sec--; \
(tp1)->tv_usec += 1000000; \
} \
} while (0)

◆ USER_ADDR_NULL

#define USER_ADDR_NULL   (NULL) /* FIX ME: temp */

Typedef Documentation

◆ sctp_route_t

◆ sctp_rtentry_t

◆ start_routine_t

typedef void*(* start_routine_t) (void *)

◆ userland_cond_t

typedef pthread_cond_t userland_cond_t

◆ userland_mutex_t

typedef pthread_mutex_t userland_mutex_t

◆ userland_thread_t

Function Documentation

◆ MALLOC_DECLARE() [1/19]

MALLOC_DECLARE ( SCTP_M_MAP  )

◆ MALLOC_DECLARE() [2/19]

MALLOC_DECLARE ( SCTP_M_STRMI  )

◆ MALLOC_DECLARE() [3/19]

MALLOC_DECLARE ( SCTP_M_STRMO  )

◆ MALLOC_DECLARE() [4/19]

MALLOC_DECLARE ( SCTP_M_ASC_ADDR  )

◆ MALLOC_DECLARE() [5/19]

MALLOC_DECLARE ( SCTP_M_ASC_IT  )

◆ MALLOC_DECLARE() [6/19]

MALLOC_DECLARE ( SCTP_M_AUTH_CL  )

◆ MALLOC_DECLARE() [7/19]

MALLOC_DECLARE ( SCTP_M_AUTH_KY  )

◆ MALLOC_DECLARE() [8/19]

MALLOC_DECLARE ( SCTP_M_AUTH_HL  )

◆ MALLOC_DECLARE() [9/19]

MALLOC_DECLARE ( SCTP_M_AUTH_IF  )

◆ MALLOC_DECLARE() [10/19]

MALLOC_DECLARE ( SCTP_M_STRESET  )

◆ MALLOC_DECLARE() [11/19]

MALLOC_DECLARE ( SCTP_M_CMSG  )

◆ MALLOC_DECLARE() [12/19]

MALLOC_DECLARE ( SCTP_M_COPYAL  )

◆ MALLOC_DECLARE() [13/19]

MALLOC_DECLARE ( SCTP_M_VRF  )

◆ MALLOC_DECLARE() [14/19]

MALLOC_DECLARE ( SCTP_M_IFA  )

◆ MALLOC_DECLARE() [15/19]

MALLOC_DECLARE ( SCTP_M_IFN  )

◆ MALLOC_DECLARE() [16/19]

MALLOC_DECLARE ( SCTP_M_TIMW  )

◆ MALLOC_DECLARE() [17/19]

MALLOC_DECLARE ( SCTP_M_MVRF  )

◆ MALLOC_DECLARE() [18/19]

MALLOC_DECLARE ( SCTP_M_ITER  )

◆ MALLOC_DECLARE() [19/19]

MALLOC_DECLARE ( SCTP_M_SOCKOPT  )

◆ sctp_get_mbuf_for_msg()

struct mbuf* sctp_get_mbuf_for_msg ( unsigned int  space_needed,
int  want_header,
int  how,
int  allonebuf,
int  type 
)

◆ sctp_hashdestroy()

void sctp_hashdestroy ( void vhashtbl,
struct malloc_type type,
u_long  hashmask 
)

◆ sctp_hashfreedestroy()

void sctp_hashfreedestroy ( void vhashtbl,
struct malloc_type type,
u_long  hashmask 
)

◆ sctp_hashinit_flags()

void* sctp_hashinit_flags ( int  elements,
struct malloc_type type,
u_long *  hashmask,
int  flags 
)

◆ sctp_userspace_get_mtu_from_ifn()

int sctp_userspace_get_mtu_from_ifn ( uint32_t  if_index,
int  af 
)

◆ sctp_userspace_ip_output()

void sctp_userspace_ip_output ( int *  result,
struct mbuf o_pak,
sctp_route_t ro,
void stcb,
uint32_t  vrf_id 
)

◆ sctp_userspace_set_threadname()

void sctp_userspace_set_threadname ( const char *  name)

◆ sctp_userspace_thread_create()

int sctp_userspace_thread_create ( userland_thread_t thread,
start_routine_t  start_routine 
)