webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
Classes | Macros | Functions | Variables
user_socket.c File Reference
#include <netinet/sctp_os.h>
#include <netinet/sctp_pcb.h>
#include <netinet/sctputil.h>
#include <netinet/sctp_var.h>
#include <netinet/sctp_sysctl.h>
#include <netinet/sctp_input.h>
#include <netinet/sctp_peeloff.h>
#include <arpa/inet.h>

Classes

struct  sctp_generic_sendmsg_args
 
struct  sctp_generic_recvmsg_args
 

Macros

#define MAXLEN_MBUF_CHAIN   32
 
#define copyin(u, k, len)   copy_from_user(k, u, len)
 
#define copyout(k, u, len)   copy_to_user(u, k, len)
 
#define SCTP_SMALL_IOVEC_SIZE   2
 
#define SCTP_STACK_BUF_SIZE   2048
 
#define PREAMBLE_FORMAT   "\n%c %02d:%02d:%02d.%06ld "
 
#define PREAMBLE_LENGTH   19
 
#define HEADER   "0000 "
 
#define TRAILER   "# SCTP_PACKET\n"
 
#define USRSCTP_SYSCTL_SET_DEF(__field)
 
#define USRSCTP_SYSCTL_GET_DEF(__field)
 

Functions

 MALLOC_DEFINE (M_PCB, "sctp_pcb", "sctp pcb")
 
 MALLOC_DEFINE (M_SONAME, "sctp_soname", "sctp soname")
 
int sctp_sosend (struct socket *so, struct sockaddr *addr, struct uio *uio, struct mbuf *top, struct mbuf *control, int flags, struct proc *p)
 
int sctp_attach (struct socket *so, int proto, uint32_t vrf_id)
 
int sctpconn_attach (struct socket *so, int proto, uint32_t vrf_id)
 
void usrsctp_init (uint16_t port, int(*conn_output)(void *addr, void *buffer, size_t length, uint8_t tos, uint8_t set_df), void(*debug_printf)(const char *format,...))
 
void socantrcvmore_locked (struct socket *so)
 
void socantrcvmore (struct socket *so)
 
void socantsendmore_locked (struct socket *so)
 
void socantsendmore (struct socket *so)
 
int sbwait (struct sockbuf *sb)
 
void sofree (struct socket *so)
 
void soabort (struct socket *so)
 
void soisconnecting (struct socket *so)
 
void soisdisconnecting (struct socket *so)
 
void wakeup (void *ident, struct socket *so)
 
void wakeup_one (void *ident)
 
void soisconnected (struct socket *so)
 
struct socketsonewconn (struct socket *head, int connstatus)
 
int copyiniov (struct iovec *iovp, u_int iovcnt, struct iovec **iov, int error)
 
int uiomove (void *cp, int n, struct uio *uio)
 
int getsockaddr (struct sockaddr **namp, caddr_t uaddr, size_t len)
 
int usrsctp_getsockopt (struct socket *so, int level, int option_name, void *option_value, socklen_t *option_len)
 
sctp_assoc_t usrsctp_getassocid (struct socket *sock, struct sockaddr *sa)
 
ssize_t userspace_sctp_sendmsg (struct socket *so, const void *data, size_t len, struct sockaddr *to, socklen_t tolen, u_int32_t ppid, u_int32_t flags, u_int16_t stream_no, u_int32_t timetolive, u_int32_t context)
 
ssize_t usrsctp_sendv (struct socket *so, const void *data, size_t len, struct sockaddr *to, int addrcnt, void *info, socklen_t infolen, unsigned int infotype, int flags)
 
ssize_t userspace_sctp_sendmbuf (struct socket *so, struct mbuf *mbufdata, size_t len, struct sockaddr *to, socklen_t tolen, u_int32_t ppid, u_int32_t flags, u_int16_t stream_no, u_int32_t timetolive, u_int32_t context)
 
ssize_t userspace_sctp_recvmsg (struct socket *so, void *dbuf, size_t len, struct sockaddr *from, socklen_t *fromlenp, struct sctp_sndrcvinfo *sinfo, int *msg_flags)
 
ssize_t usrsctp_recvv (struct socket *so, void *dbuf, size_t len, struct sockaddr *from, socklen_t *fromlenp, void *info, socklen_t *infolen, unsigned int *infotype, int *msg_flags)
 
int socreate (int dom, struct socket **aso, int type, int proto, struct ucred *cred, struct thread *td)
 
struct socketuserspace_socket (int domain, int type, int protocol)
 
struct socketusrsctp_socket (int domain, int type, int protocol, int(*receive_cb)(struct socket *sock, union sctp_sockstore addr, void *data, size_t datalen, struct sctp_rcvinfo, int flags, void *ulp_info), int(*send_cb)(struct socket *sock, uint32_t sb_free), uint32_t sb_threshold, void *ulp_info)
 
int sbreserve_locked (struct sockbuf *sb, u_long cc, struct socket *so)
 
int soreserve (struct socket *so, u_long sndcc, u_long rcvcc)
 
void sowakeup (struct socket *so, struct sockbuf *sb)
 
int sobind (struct socket *so, struct sockaddr *nam)
 
int usrsctp_bind (struct socket *so, struct sockaddr *name, int namelen)
 
int userspace_bind (struct socket *so, struct sockaddr *name, int namelen)
 
int solisten (struct socket *so, int backlog)
 
int solisten_proto_check (struct socket *so)
 
void solisten_proto (struct socket *so, int backlog)
 
int usrsctp_listen (struct socket *so, int backlog)
 
int userspace_listen (struct socket *so, int backlog)
 
int soaccept (struct socket *so, struct sockaddr **nam)
 
int user_accept (struct socket *head, struct sockaddr **name, socklen_t *namelen, struct socket **ptr_accept_ret_sock)
 
struct socketusrsctp_accept (struct socket *so, struct sockaddr *aname, socklen_t *anamelen)
 
struct socketuserspace_accept (struct socket *so, struct sockaddr *aname, socklen_t *anamelen)
 
struct socketusrsctp_peeloff (struct socket *head, sctp_assoc_t id)
 
int sodisconnect (struct socket *so)
 
int usrsctp_set_non_blocking (struct socket *so, int onoff)
 
int usrsctp_get_non_blocking (struct socket *so)
 
int soconnect (struct socket *so, struct sockaddr *nam)
 
int user_connect (struct socket *so, struct sockaddr *sa)
 
int usrsctp_connect (struct socket *so, struct sockaddr *name, int namelen)
 
int userspace_connect (struct socket *so, struct sockaddr *name, int namelen)
 
void usrsctp_close (struct socket *so)
 
void userspace_close (struct socket *so)
 
int usrsctp_shutdown (struct socket *so, int how)
 
int userspace_shutdown (struct socket *so, int how)
 
int usrsctp_finish (void)
 
int userspace_finish (void)
 
int sctp_setopt (struct socket *so, int optname, void *optval, size_t optsize, void *p)
 
int usrsctp_setsockopt (struct socket *so, int level, int option_name, const void *option_value, socklen_t option_len)
 
int userspace_setsockopt (struct socket *so, int level, int option_name, const void *option_value, socklen_t option_len)
 
int sctp_getopt (struct socket *so, int optname, void *optval, size_t *optsize, void *p)
 
int userspace_getsockopt (struct socket *so, int level, int option_name, void *option_value, socklen_t *option_len)
 
int usrsctp_set_ulpinfo (struct socket *so, void *ulp_info)
 
int usrsctp_bindx (struct socket *so, struct sockaddr *addrs, int addrcnt, int flags)
 
int usrsctp_connectx (struct socket *so, const struct sockaddr *addrs, int addrcnt, sctp_assoc_t *id)
 
int usrsctp_getpaddrs (struct socket *so, sctp_assoc_t id, struct sockaddr **raddrs)
 
void usrsctp_freepaddrs (struct sockaddr *addrs)
 
int usrsctp_getladdrs (struct socket *so, sctp_assoc_t id, struct sockaddr **raddrs)
 
void usrsctp_freeladdrs (struct sockaddr *addrs)
 
void usrsctp_register_address (void *addr)
 
void usrsctp_deregister_address (void *addr)
 
char * usrsctp_dumppacket (const void *buf, size_t len, int outbound)
 
void usrsctp_freedumpbuffer (char *buf)
 
void usrsctp_conninput (void *addr, const void *buffer, size_t length, uint8_t ecn_bits)
 
void usrsctp_get_stat (struct sctpstat *stat)
 

Variables

userland_mutex_t accept_mtx
 
userland_cond_t accept_cond
 
u_long sb_max = SB_MAX
 
u_long sb_max_adj
 

Macro Definition Documentation

◆ copyin

#define copyin (   u,
  k,
  len 
)    copy_from_user(k, u, len)

◆ copyout

#define copyout (   k,
  u,
  len 
)    copy_to_user(u, k, len)

◆ HEADER

#define HEADER   "0000 "

◆ MAXLEN_MBUF_CHAIN

#define MAXLEN_MBUF_CHAIN   32

◆ PREAMBLE_FORMAT

#define PREAMBLE_FORMAT   "\n%c %02d:%02d:%02d.%06ld "

◆ PREAMBLE_LENGTH

#define PREAMBLE_LENGTH   19

◆ SCTP_SMALL_IOVEC_SIZE

#define SCTP_SMALL_IOVEC_SIZE   2

◆ SCTP_STACK_BUF_SIZE

#define SCTP_STACK_BUF_SIZE   2048

◆ TRAILER

#define TRAILER   "# SCTP_PACKET\n"

◆ USRSCTP_SYSCTL_GET_DEF

#define USRSCTP_SYSCTL_GET_DEF (   __field)
Value:
uint32_t usrsctp_sysctl_get_ ## __field(void) { \
return SCTP_BASE_SYSCTL(__field); \
}
unsigned int uint32_t
Definition: ptypes.h:105
#define SCTP_BASE_SYSCTL(__m)
Definition: sctp_os_userspace.h:606

◆ USRSCTP_SYSCTL_SET_DEF

#define USRSCTP_SYSCTL_SET_DEF (   __field)
Value:
void usrsctp_sysctl_set_ ## __field(uint32_t value) { \
SCTP_BASE_SYSCTL(__field) = value; \
}
unsigned int uint32_t
Definition: ptypes.h:105
EGLAttrib * value
Definition: eglext.h:120

Function Documentation

◆ copyiniov()

int copyiniov ( struct iovec *  iovp,
u_int  iovcnt,
struct iovec **  iov,
int  error 
)

◆ getsockaddr()

int getsockaddr ( struct sockaddr **  namp,
caddr_t  uaddr,
size_t  len 
)

◆ MALLOC_DEFINE() [1/2]

MALLOC_DEFINE ( M_PCB  ,
"sctp_pcb"  ,
"sctp pcb"   
)

◆ MALLOC_DEFINE() [2/2]

MALLOC_DEFINE ( M_SONAME  ,
"sctp_soname"  ,
"sctp soname"   
)

◆ sbreserve_locked()

int sbreserve_locked ( struct sockbuf *  sb,
u_long  cc,
struct socket so 
)

◆ sbwait()

int sbwait ( struct sockbuf *  sb)

◆ sctp_attach()

int sctp_attach ( struct socket so,
int  proto,
uint32_t  vrf_id 
)

◆ sctp_getopt()

int sctp_getopt ( struct socket so,
int  optname,
void optval,
size_t optsize,
void p 
)

◆ sctp_setopt()

int sctp_setopt ( struct socket so,
int  optname,
void optval,
size_t  optsize,
void p 
)

◆ sctp_sosend()

int sctp_sosend ( struct socket so,
struct sockaddr *  addr,
struct uio uio,
struct mbuf top,
struct mbuf control,
int  flags,
struct proc p 
)

◆ sctpconn_attach()

int sctpconn_attach ( struct socket so,
int  proto,
uint32_t  vrf_id 
)

◆ soabort()

void soabort ( struct socket so)

◆ soaccept()

int soaccept ( struct socket so,
struct sockaddr **  nam 
)

◆ sobind()

int sobind ( struct socket so,
struct sockaddr *  nam 
)

◆ socantrcvmore()

void socantrcvmore ( struct socket so)

◆ socantrcvmore_locked()

void socantrcvmore_locked ( struct socket so)

◆ socantsendmore()

void socantsendmore ( struct socket so)

◆ socantsendmore_locked()

void socantsendmore_locked ( struct socket so)

◆ soconnect()

int soconnect ( struct socket so,
struct sockaddr *  nam 
)

◆ socreate()

int socreate ( int  dom,
struct socket **  aso,
int  type,
int  proto,
struct ucred *  cred,
struct thread *  td 
)

◆ sodisconnect()

int sodisconnect ( struct socket so)

◆ sofree()

void sofree ( struct socket so)

◆ soisconnected()

void soisconnected ( struct socket so)

◆ soisconnecting()

void soisconnecting ( struct socket so)

◆ soisdisconnecting()

void soisdisconnecting ( struct socket so)

◆ solisten()

int solisten ( struct socket so,
int  backlog 
)

◆ solisten_proto()

void solisten_proto ( struct socket so,
int  backlog 
)

◆ solisten_proto_check()

int solisten_proto_check ( struct socket so)

◆ sonewconn()

struct socket* sonewconn ( struct socket head,
int  connstatus 
)

◆ soreserve()

int soreserve ( struct socket so,
u_long  sndcc,
u_long  rcvcc 
)

◆ sowakeup()

void sowakeup ( struct socket so,
struct sockbuf *  sb 
)

◆ uiomove()

int uiomove ( void cp,
int  n,
struct uio uio 
)

◆ user_accept()

int user_accept ( struct socket head,
struct sockaddr **  name,
socklen_t *  namelen,
struct socket **  ptr_accept_ret_sock 
)

◆ user_connect()

int user_connect ( struct socket so,
struct sockaddr *  sa 
)

◆ userspace_accept()

struct socket* userspace_accept ( struct socket so,
struct sockaddr *  aname,
socklen_t *  anamelen 
)

◆ userspace_bind()

int userspace_bind ( struct socket so,
struct sockaddr *  name,
int  namelen 
)

◆ userspace_close()

void userspace_close ( struct socket so)

◆ userspace_connect()

int userspace_connect ( struct socket so,
struct sockaddr *  name,
int  namelen 
)

◆ userspace_finish()

int userspace_finish ( void  )

◆ userspace_getsockopt()

int userspace_getsockopt ( struct socket so,
int  level,
int  option_name,
void option_value,
socklen_t *  option_len 
)

◆ userspace_listen()

int userspace_listen ( struct socket so,
int  backlog 
)

◆ userspace_sctp_recvmsg()

ssize_t userspace_sctp_recvmsg ( struct socket so,
void dbuf,
size_t  len,
struct sockaddr *  from,
socklen_t *  fromlenp,
struct sctp_sndrcvinfo sinfo,
int *  msg_flags 
)

◆ userspace_sctp_sendmbuf()

ssize_t userspace_sctp_sendmbuf ( struct socket so,
struct mbuf mbufdata,
size_t  len,
struct sockaddr *  to,
socklen_t  tolen,
u_int32_t  ppid,
u_int32_t  flags,
u_int16_t  stream_no,
u_int32_t  timetolive,
u_int32_t  context 
)

◆ userspace_sctp_sendmsg()

ssize_t userspace_sctp_sendmsg ( struct socket so,
const void data,
size_t  len,
struct sockaddr *  to,
socklen_t  tolen,
u_int32_t  ppid,
u_int32_t  flags,
u_int16_t  stream_no,
u_int32_t  timetolive,
u_int32_t  context 
)

◆ userspace_setsockopt()

int userspace_setsockopt ( struct socket so,
int  level,
int  option_name,
const void option_value,
socklen_t  option_len 
)

◆ userspace_shutdown()

int userspace_shutdown ( struct socket so,
int  how 
)

◆ userspace_socket()

struct socket* userspace_socket ( int  domain,
int  type,
int  protocol 
)

◆ usrsctp_accept()

struct socket* usrsctp_accept ( struct socket so,
struct sockaddr *  aname,
socklen_t *  anamelen 
)

◆ usrsctp_bind()

int usrsctp_bind ( struct socket so,
struct sockaddr *  name,
int  namelen 
)

◆ usrsctp_bindx()

int usrsctp_bindx ( struct socket so,
struct sockaddr *  addrs,
int  addrcnt,
int  flags 
)

◆ usrsctp_close()

void usrsctp_close ( struct socket so)

◆ usrsctp_connect()

int usrsctp_connect ( struct socket so,
struct sockaddr *  name,
int  namelen 
)

◆ usrsctp_connectx()

int usrsctp_connectx ( struct socket so,
const struct sockaddr *  addrs,
int  addrcnt,
sctp_assoc_t id 
)

◆ usrsctp_conninput()

void usrsctp_conninput ( void addr,
const void buffer,
size_t  length,
uint8_t  ecn_bits 
)

◆ usrsctp_deregister_address()

void usrsctp_deregister_address ( void addr)

◆ usrsctp_dumppacket()

char* usrsctp_dumppacket ( const void buf,
size_t  len,
int  outbound 
)

◆ usrsctp_finish()

int usrsctp_finish ( void  )

◆ usrsctp_freedumpbuffer()

void usrsctp_freedumpbuffer ( char *  buf)

◆ usrsctp_freeladdrs()

void usrsctp_freeladdrs ( struct sockaddr *  addrs)

◆ usrsctp_freepaddrs()

void usrsctp_freepaddrs ( struct sockaddr *  addrs)

◆ usrsctp_get_non_blocking()

int usrsctp_get_non_blocking ( struct socket so)

◆ usrsctp_get_stat()

void usrsctp_get_stat ( struct sctpstat stat)

◆ usrsctp_getassocid()

sctp_assoc_t usrsctp_getassocid ( struct socket sock,
struct sockaddr *  sa 
)

◆ usrsctp_getladdrs()

int usrsctp_getladdrs ( struct socket so,
sctp_assoc_t  id,
struct sockaddr **  raddrs 
)

◆ usrsctp_getpaddrs()

int usrsctp_getpaddrs ( struct socket so,
sctp_assoc_t  id,
struct sockaddr **  raddrs 
)

◆ usrsctp_getsockopt()

int usrsctp_getsockopt ( struct socket so,
int  level,
int  option_name,
void option_value,
socklen_t *  option_len 
)

◆ usrsctp_init()

void usrsctp_init ( uint16_t  port,
int(*)(void *addr, void *buffer, size_t length, uint8_t tos, uint8_t set_df)  conn_output,
void(*)(const char *format,...)  debug_printf 
)

◆ usrsctp_listen()

int usrsctp_listen ( struct socket so,
int  backlog 
)

◆ usrsctp_peeloff()

struct socket* usrsctp_peeloff ( struct socket head,
sctp_assoc_t  id 
)

◆ usrsctp_recvv()

ssize_t usrsctp_recvv ( struct socket so,
void dbuf,
size_t  len,
struct sockaddr *  from,
socklen_t *  fromlenp,
void info,
socklen_t *  infolen,
unsigned int *  infotype,
int *  msg_flags 
)

◆ usrsctp_register_address()

void usrsctp_register_address ( void addr)

◆ usrsctp_sendv()

ssize_t usrsctp_sendv ( struct socket so,
const void data,
size_t  len,
struct sockaddr *  to,
int  addrcnt,
void info,
socklen_t  infolen,
unsigned int  infotype,
int  flags 
)

◆ usrsctp_set_non_blocking()

int usrsctp_set_non_blocking ( struct socket so,
int  onoff 
)

◆ usrsctp_set_ulpinfo()

int usrsctp_set_ulpinfo ( struct socket so,
void ulp_info 
)

◆ usrsctp_setsockopt()

int usrsctp_setsockopt ( struct socket so,
int  level,
int  option_name,
const void option_value,
socklen_t  option_len 
)

◆ usrsctp_shutdown()

int usrsctp_shutdown ( struct socket so,
int  how 
)

◆ usrsctp_socket()

struct socket* usrsctp_socket ( int  domain,
int  type,
int  protocol,
int(*)(struct socket *sock, union sctp_sockstore addr, void *data, size_t datalen, struct sctp_rcvinfo, int flags, void *ulp_info)  receive_cb,
int(*)(struct socket *sock, uint32_t sb_free)  send_cb,
uint32_t  sb_threshold,
void ulp_info 
)

◆ wakeup()

void wakeup ( void ident,
struct socket so 
)

◆ wakeup_one()

void wakeup_one ( void ident)

Variable Documentation

◆ accept_cond

userland_cond_t accept_cond

◆ accept_mtx

userland_mutex_t accept_mtx

◆ sb_max

u_long sb_max = SB_MAX

◆ sb_max_adj

u_long sb_max_adj
Initial value:
=
#define SB_MAX
Definition: user_socketvar.h:196
#define MCLBYTES
Definition: user_mbuf.h:51
#define MSIZE
Definition: user_mbuf.h:47