|
FreeBSD kernel kern code
|
#include <sys/cdefs.h>#include "opt_inet.h"#include "opt_inet6.h"#include "opt_zero.h"#include "opt_compat.h"#include <sys/param.h>#include <sys/systm.h>#include <sys/fcntl.h>#include <sys/limits.h>#include <sys/lock.h>#include <sys/mac.h>#include <sys/malloc.h>#include <sys/mbuf.h>#include <sys/mutex.h>#include <sys/domain.h>#include <sys/file.h>#include <sys/kernel.h>#include <sys/event.h>#include <sys/eventhandler.h>#include <sys/poll.h>#include <sys/proc.h>#include <sys/protosw.h>#include <sys/socket.h>#include <sys/socketvar.h>#include <sys/resourcevar.h>#include <net/route.h>#include <sys/signalvar.h>#include <sys/stat.h>#include <sys/sx.h>#include <sys/sysctl.h>#include <sys/uio.h>#include <sys/jail.h>#include <sys/syslog.h>#include <netinet/in.h>#include <net/vnet.h>#include <security/mac/mac_framework.h>#include <vm/uma.h>
Go to the source code of this file.
Macros | |
| #define | VNET_SO_ASSERT(so) |
| #define | SBLOCKWAIT(f) (((f) & MSG_DONTWAIT) ? 0 : SBL_WAIT) |
Functions | |
| __FBSDID ("$BSDSUniX$") | |
| static int | soreceive_rcvoob (struct socket *so, struct uio *uio, int flags) |
| static void | filt_sordetach (struct knote *kn) |
| static int | filt_soread (struct knote *kn, long hint) |
| static void | filt_sowdetach (struct knote *kn) |
| static int | filt_sowrite (struct knote *kn, long hint) |
| static int | filt_solisten (struct knote *kn, long hint) |
| MALLOC_DEFINE (M_SONAME,"soname","socket name") | |
| MALLOC_DEFINE (M_PCB,"pcb","protocol control block") | |
| static int | sysctl_somaxconn (SYSCTL_HANDLER_ARGS) |
| SYSCTL_PROC (_kern_ipc, KIPC_SOMAXCONN, somaxconn, CTLTYPE_UINT|CTLFLAG_RW, 0, sizeof(int), sysctl_somaxconn,"I","Maximum listen socket pending connection accept queue size") | |
| SYSCTL_INT (_kern_ipc, OID_AUTO, numopensockets, CTLFLAG_RD,&numopensockets, 0,"Number of open sockets") | |
| MTX_SYSINIT (accept_mtx,&accept_mtx,"accept", MTX_DEF) | |
| MTX_SYSINIT (so_global_mtx,&so_global_mtx,"so_glabel", MTX_DEF) | |
| SYSCTL_NODE (_kern, KERN_IPC, ipc, CTLFLAG_RW, 0,"IPC") | |
| static void | socket_zone_change (void *tag) |
| static void | socket_init (void *tag) |
| SYSINIT (socket, SI_SUB_PROTO_DOMAININIT, SI_ORDER_ANY, socket_init, NULL) | |
| static void | init_maxsockets (void *ignored) |
| SYSINIT (param, SI_SUB_TUNABLES, SI_ORDER_ANY, init_maxsockets, NULL) | |
| static int | sysctl_maxsockets (SYSCTL_HANDLER_ARGS) |
| SYSCTL_PROC (_kern_ipc, OID_AUTO, maxsockets, CTLTYPE_INT|CTLFLAG_RW,&maxsockets, 0, sysctl_maxsockets,"IU","Maximum number of sockets avaliable") | |
| static struct socket * | soalloc (struct vnet *vnet) |
| static void | sodealloc (struct socket *so) |
| int | socreate (int dom, struct socket **aso, int type, int proto, struct ucred *cred, struct thread *td) |
| struct socket * | sonewconn (struct socket *head, int connstatus) |
| int | sobind (struct socket *so, struct sockaddr *nam, struct thread *td) |
| int | solisten (struct socket *so, int backlog, struct thread *td) |
| int | solisten_proto_check (struct socket *so) |
| void | solisten_proto (struct socket *so, int backlog) |
| void | sofree (struct socket *so) |
| int | soclose (struct socket *so) |
| void | soabort (struct socket *so) |
| int | soaccept (struct socket *so, struct sockaddr **nam) |
| int | soconnect (struct socket *so, struct sockaddr *nam, struct thread *td) |
| int | soconnect2 (struct socket *so1, struct socket *so2) |
| int | sodisconnect (struct socket *so) |
| int | sosend_dgram (struct socket *so, struct sockaddr *addr, struct uio *uio, struct mbuf *top, struct mbuf *control, int flags, struct thread *td) |
| int | sosend_generic (struct socket *so, struct sockaddr *addr, struct uio *uio, struct mbuf *top, struct mbuf *control, int flags, struct thread *td) |
| int | sosend (struct socket *so, struct sockaddr *addr, struct uio *uio, struct mbuf *top, struct mbuf *control, int flags, struct thread *td) |
| static __inline void | sockbuf_pushsync (struct sockbuf *sb, struct mbuf *nextrecord) |
| int | soreceive_generic (struct socket *so, struct sockaddr **psa, struct uio *uio, struct mbuf **mp0, struct mbuf **controlp, int *flagsp) |
| int | soreceive_stream (struct socket *so, struct sockaddr **psa, struct uio *uio, struct mbuf **mp0, struct mbuf **controlp, int *flagsp) |
| int | soreceive_dgram (struct socket *so, struct sockaddr **psa, struct uio *uio, struct mbuf **mp0, struct mbuf **controlp, int *flagsp) |
| int | soreceive (struct socket *so, struct sockaddr **psa, struct uio *uio, struct mbuf **mp0, struct mbuf **controlp, int *flagsp) |
| int | soshutdown (struct socket *so, int how) |
| void | sorflush (struct socket *so) |
| int | sooptcopyin (struct sockopt *sopt, void *buf, size_t len, size_t minlen) |
| int | so_setsockopt (struct socket *so, int level, int optname, void *optval, size_t optlen) |
| int | sosetopt (struct socket *so, struct sockopt *sopt) |
| int | sooptcopyout (struct sockopt *sopt, const void *buf, size_t len) |
| int | sogetopt (struct socket *so, struct sockopt *sopt) |
| int | soopt_getm (struct sockopt *sopt, struct mbuf **mp) |
| int | soopt_mcopyin (struct sockopt *sopt, struct mbuf *m) |
| int | soopt_mcopyout (struct sockopt *sopt, struct mbuf *m) |
| void | sohasoutofband (struct socket *so) |
| int | sopoll (struct socket *so, int events, struct ucred *active_cred, struct thread *td) |
| int | sopoll_generic (struct socket *so, int events, struct ucred *active_cred, struct thread *td) |
| int | soo_kqfilter (struct file *fp, struct knote *kn) |
| int | pru_accept_notsupp (struct socket *so, struct sockaddr **nam) |
| int | pru_attach_notsupp (struct socket *so, int proto, struct thread *td) |
| int | pru_bind_notsupp (struct socket *so, struct sockaddr *nam, struct thread *td) |
| int | pru_connect_notsupp (struct socket *so, struct sockaddr *nam, struct thread *td) |
| int | pru_connect2_notsupp (struct socket *so1, struct socket *so2) |
| int | pru_control_notsupp (struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp, struct thread *td) |
| int | pru_disconnect_notsupp (struct socket *so) |
| int | pru_listen_notsupp (struct socket *so, int backlog, struct thread *td) |
| int | pru_peeraddr_notsupp (struct socket *so, struct sockaddr **nam) |
| int | pru_rcvd_notsupp (struct socket *so, int flags) |
| int | pru_rcvoob_notsupp (struct socket *so, struct mbuf *m, int flags) |
| int | pru_send_notsupp (struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct thread *td) |
| int | pru_sense_null (struct socket *so, struct stat *sb) |
| int | pru_shutdown_notsupp (struct socket *so) |
| int | pru_sockaddr_notsupp (struct socket *so, struct sockaddr **nam) |
| int | pru_sosend_notsupp (struct socket *so, struct sockaddr *addr, struct uio *uio, struct mbuf *top, struct mbuf *control, int flags, struct thread *td) |
| int | pru_soreceive_notsupp (struct socket *so, struct sockaddr **paddr, struct uio *uio, struct mbuf **mp0, struct mbuf **controlp, int *flagsp) |
| int | pru_sopoll_notsupp (struct socket *so, int events, struct ucred *cred, struct thread *td) |
| int | socheckuid (struct socket *so, uid_t uid) |
| void | soisconnecting (struct socket *so) |
| void | soisconnected (struct socket *so) |
| void | soisdisconnecting (struct socket *so) |
| void | soisdisconnected (struct socket *so) |
| struct sockaddr * | sodupsockaddr (const struct sockaddr *sa, int mflags) |
| void | soupcall_set (struct socket *so, int which, int(*func)(struct socket *, void *, int), void *arg) |
| void | soupcall_clear (struct socket *so, int which) |
| void | sotoxsocket (struct socket *so, struct xsocket *xso) |
| void | so_listeners_apply_all (struct socket *so, void(*func)(struct socket *, void *), void *arg) |
| struct sockbuf * | so_sockbuf_rcv (struct socket *so) |
| struct sockbuf * | so_sockbuf_snd (struct socket *so) |
| int | so_state_get (const struct socket *so) |
| void | so_state_set (struct socket *so, int val) |
| int | so_options_get (const struct socket *so) |
| void | so_options_set (struct socket *so, int val) |
| int | so_error_get (const struct socket *so) |
| void | so_error_set (struct socket *so, int val) |
| int | so_linger_get (const struct socket *so) |
| void | so_linger_set (struct socket *so, int val) |
| struct protosw * | so_protosw_get (const struct socket *so) |
| void | so_protosw_set (struct socket *so, struct protosw *val) |
| void | so_sorwakeup (struct socket *so) |
| void | so_sowwakeup (struct socket *so) |
| void | so_sorwakeup_locked (struct socket *so) |
| void | so_sowwakeup_locked (struct socket *so) |
| void | so_lock (struct socket *so) |
| void | so_unlock (struct socket *so) |
Variables | |
| static struct filterops | solisten_filtops |
| static struct filterops | soread_filtops |
| static struct filterops | sowrite_filtops |
| so_gen_t | so_gencnt |
| static int | somaxconn = SOMAXCONN |
| static int | numopensockets |
| struct mtx | accept_mtx |
| static struct mtx | so_global_mtx |
| uma_zone_t | socket_zone |
| int | maxsockets |
| #define SBLOCKWAIT | ( | f | ) | (((f) & MSG_DONTWAIT) ? 0 : SBL_WAIT) |
Definition at line 1054 of file uipc_socket.c.
Referenced by soreceive_generic(), soreceive_stream(), and sosend_generic().
| #define VNET_SO_ASSERT | ( | so | ) |
Definition at line 183 of file uipc_socket.c.
Referenced by soabort(), sodisconnect(), sofree(), sonewconn(), soreceive_generic(), soreceive_rcvoob(), soreceive_stream(), sorflush(), sosend_dgram(), and sosend_generic().
| __FBSDID | ( | "$BSDSUniX$" | ) |
|
static |
Definition at line 3325 of file uipc_socket.c.
|
static |
Definition at line 3254 of file uipc_socket.c.
References knlist_empty(), and knlist_remove().

|
static |
Definition at line 3267 of file uipc_socket.c.
|
static |
Definition at line 3288 of file uipc_socket.c.
References knlist_empty(), and knlist_remove().

|
static |
Definition at line 3301 of file uipc_socket.c.
|
static |
Definition at line 281 of file uipc_socket.c.
References maxfiles.
| MALLOC_DEFINE | ( | M_SONAME | , |
| "soname" | , | ||
| "socket name" | |||
| ) |
| MALLOC_DEFINE | ( | M_PCB | , |
| "pcb" | , | ||
| "protocol control block" | |||
| ) |
| MTX_SYSINIT | ( | accept_mtx | , |
| & | accept_mtx, | ||
| "accept" | , | ||
| MTX_DEF | |||
| ) |
| MTX_SYSINIT | ( | so_global_mtx | , |
| & | so_global_mtx, | ||
| "so_glabel" | , | ||
| MTX_DEF | |||
| ) |
| int pru_accept_notsupp | ( | struct socket * | so, |
| struct sockaddr ** | nam | ||
| ) |
Definition at line 3118 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_attach_notsupp | ( | struct socket * | so, |
| int | proto, | ||
| struct thread * | td | ||
| ) |
Definition at line 3125 of file uipc_socket.c.
Referenced by socreate().

| int pru_bind_notsupp | ( | struct socket * | so, |
| struct sockaddr * | nam, | ||
| struct thread * | td | ||
| ) |
Definition at line 3132 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_connect2_notsupp | ( | struct socket * | so1, |
| struct socket * | so2 | ||
| ) |
Definition at line 3146 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_connect_notsupp | ( | struct socket * | so, |
| struct sockaddr * | nam, | ||
| struct thread * | td | ||
| ) |
Definition at line 3139 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_control_notsupp | ( | struct socket * | so, |
| u_long | cmd, | ||
| caddr_t | data, | ||
| struct ifnet * | ifp, | ||
| struct thread * | td | ||
| ) |
Definition at line 3153 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_disconnect_notsupp | ( | struct socket * | so | ) |
Definition at line 3161 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_listen_notsupp | ( | struct socket * | so, |
| int | backlog, | ||
| struct thread * | td | ||
| ) |
Definition at line 3168 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_peeraddr_notsupp | ( | struct socket * | so, |
| struct sockaddr ** | nam | ||
| ) |
Definition at line 3175 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_rcvd_notsupp | ( | struct socket * | so, |
| int | flags | ||
| ) |
Definition at line 3182 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_rcvoob_notsupp | ( | struct socket * | so, |
| struct mbuf * | m, | ||
| int | flags | ||
| ) |
Definition at line 3189 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_send_notsupp | ( | struct socket * | so, |
| int | flags, | ||
| struct mbuf * | m, | ||
| struct sockaddr * | addr, | ||
| struct mbuf * | control, | ||
| struct thread * | td | ||
| ) |
Definition at line 3196 of file uipc_socket.c.
| int pru_sense_null | ( | struct socket * | so, |
| struct stat * | sb | ||
| ) |
Definition at line 3208 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_shutdown_notsupp | ( | struct socket * | so | ) |
Definition at line 3216 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_sockaddr_notsupp | ( | struct socket * | so, |
| struct sockaddr ** | nam | ||
| ) |
Definition at line 3223 of file uipc_socket.c.
Referenced by protosw_init().

| int pru_sopoll_notsupp | ( | struct socket * | so, |
| int | events, | ||
| struct ucred * | cred, | ||
| struct thread * | td | ||
| ) |
Definition at line 3246 of file uipc_socket.c.
| int pru_soreceive_notsupp | ( | struct socket * | so, |
| struct sockaddr ** | paddr, | ||
| struct uio * | uio, | ||
| struct mbuf ** | mp0, | ||
| struct mbuf ** | controlp, | ||
| int * | flagsp | ||
| ) |
Definition at line 3238 of file uipc_socket.c.
| int pru_sosend_notsupp | ( | struct socket * | so, |
| struct sockaddr * | addr, | ||
| struct uio * | uio, | ||
| struct mbuf * | top, | ||
| struct mbuf * | control, | ||
| int | flags, | ||
| struct thread * | td | ||
| ) |
Definition at line 3230 of file uipc_socket.c.
| int so_error_get | ( | const struct socket * | so | ) |
Definition at line 3628 of file uipc_socket.c.
| void so_error_set | ( | struct socket * | so, |
| int | val | ||
| ) |
Definition at line 3635 of file uipc_socket.c.
| int so_linger_get | ( | const struct socket * | so | ) |
Definition at line 3642 of file uipc_socket.c.
| void so_linger_set | ( | struct socket * | so, |
| int | val | ||
| ) |
Definition at line 3649 of file uipc_socket.c.
| void so_listeners_apply_all | ( | struct socket * | so, |
| void(*)(struct socket *, void *) | func, | ||
| void * | arg | ||
| ) |
Definition at line 3578 of file uipc_socket.c.
| void so_lock | ( | struct socket * | so | ) |
Definition at line 3698 of file uipc_socket.c.
| int so_options_get | ( | const struct socket * | so | ) |
Definition at line 3614 of file uipc_socket.c.
| void so_options_set | ( | struct socket * | so, |
| int | val | ||
| ) |
Definition at line 3621 of file uipc_socket.c.
| struct protosw* so_protosw_get | ( | const struct socket * | so | ) |
Definition at line 3656 of file uipc_socket.c.
| void so_protosw_set | ( | struct socket * | so, |
| struct protosw * | val | ||
| ) |
Definition at line 3663 of file uipc_socket.c.
| int so_setsockopt | ( | struct socket * | so, |
| int | level, | ||
| int | optname, | ||
| void * | optval, | ||
| size_t | optlen | ||
| ) |
Definition at line 2494 of file uipc_socket.c.
References level, and sosetopt().

| struct sockbuf* so_sockbuf_rcv | ( | struct socket * | so | ) |
Definition at line 3586 of file uipc_socket.c.
| struct sockbuf* so_sockbuf_snd | ( | struct socket * | so | ) |
Definition at line 3593 of file uipc_socket.c.
| void so_sorwakeup | ( | struct socket * | so | ) |
Definition at line 3670 of file uipc_socket.c.
| void so_sorwakeup_locked | ( | struct socket * | so | ) |
Definition at line 3684 of file uipc_socket.c.
| void so_sowwakeup | ( | struct socket * | so | ) |
Definition at line 3677 of file uipc_socket.c.
| void so_sowwakeup_locked | ( | struct socket * | so | ) |
Definition at line 3691 of file uipc_socket.c.
| int so_state_get | ( | const struct socket * | so | ) |
Definition at line 3600 of file uipc_socket.c.
| void so_state_set | ( | struct socket * | so, |
| int | val | ||
| ) |
Definition at line 3607 of file uipc_socket.c.
| void so_unlock | ( | struct socket * | so | ) |
Definition at line 3704 of file uipc_socket.c.
| void soabort | ( | struct socket * | so | ) |
Definition at line 852 of file uipc_socket.c.
References sofree(), and VNET_SO_ASSERT.
Referenced by soclose(), and sonewconn().


| int soaccept | ( | struct socket * | so, |
| struct sockaddr ** | nam | ||
| ) |
Definition at line 876 of file uipc_socket.c.
Referenced by kern_accept().

|
static |
Definition at line 329 of file uipc_socket.c.
References numopensockets, so_gencnt, and so_global_mtx.
Referenced by socreate(), and sonewconn().

| int sobind | ( | struct socket * | so, |
| struct sockaddr * | nam, | ||
| struct thread * | td | ||
| ) |
Definition at line 609 of file uipc_socket.c.
Referenced by kern_bind().

| int socheckuid | ( | struct socket * | so, |
| uid_t | uid | ||
| ) |
Definition at line 3334 of file uipc_socket.c.
|
static |
Definition at line 1483 of file uipc_socket.c.
Referenced by soreceive_dgram(), and soreceive_generic().

|
static |
Definition at line 265 of file uipc_socket.c.
References socket_zone_change().

|
static |
Definition at line 258 of file uipc_socket.c.
Referenced by socket_init().

| int soclose | ( | struct socket * | so | ) |
Definition at line 765 of file uipc_socket.c.
References funsetown(), hz, soabort(), and sodisconnect().
Referenced by kern_socketpair(), and soo_close().


| int soconnect | ( | struct socket * | so, |
| struct sockaddr * | nam, | ||
| struct thread * | td | ||
| ) |
Definition at line 892 of file uipc_socket.c.
References sodisconnect().
Referenced by kern_connect().


| int soconnect2 | ( | struct socket * | so1, |
| struct socket * | so2 | ||
| ) |
Definition at line 923 of file uipc_socket.c.
Referenced by kern_socketpair().

| int socreate | ( | int | dom, |
| struct socket ** | aso, | ||
| int | type, | ||
| int | proto, | ||
| struct ucred * | cred, | ||
| struct thread * | td | ||
| ) |
Definition at line 408 of file uipc_socket.c.
References crhold(), knlist_init_mtx(), pffindproto(), pffindtype(), prison_check_af(), pru_attach_notsupp(), soalloc(), sodealloc(), and type.
Referenced by kern_socketpair(), and sys_socket().


|
static |
Definition at line 366 of file uipc_socket.c.
References chgsbsize(), crfree(), do_setopt_accept_filter(), numopensockets, so_gencnt, so_global_mtx, and sx_destroy().
Referenced by socreate(), sofree(), and sonewconn().


| int sodisconnect | ( | struct socket * | so | ) |
Definition at line 934 of file uipc_socket.c.
References VNET_SO_ASSERT.
Referenced by soclose(), and soconnect().

| struct sockaddr* sodupsockaddr | ( | const struct sockaddr * | sa, |
| int | mflags | ||
| ) |
Definition at line 3476 of file uipc_socket.c.
References malloc().
Referenced by soreceive_dgram(), soreceive_generic(), and uipc_bind().


| void sofree | ( | struct socket * | so | ) |
Definition at line 687 of file uipc_socket.c.
References knlist_destroy(), pr, sbdestroy(), seldrain(), sodealloc(), and VNET_SO_ASSERT.
Referenced by soabort(), and sonewconn().


| int sogetopt | ( | struct socket * | so, |
| struct sockopt * | sopt | ||
| ) |
Definition at line 2744 of file uipc_socket.c.
References do_getopt_accept_filter(), hz, sooptcopyin(), sooptcopyout(), and tick.
Referenced by kern_getsockopt().


| void sohasoutofband | ( | struct socket * | so | ) |
Definition at line 3018 of file uipc_socket.c.
References pgsigio(), and selwakeuppri().

| void soisconnected | ( | struct socket * | so | ) |
Definition at line 3387 of file uipc_socket.c.
References soupcall_clear(), soupcall_set(), wakeup(), and wakeup_one().
Referenced by sowakeup(), and unp_connect2().


| void soisconnecting | ( | struct socket * | so | ) |
Definition at line 3377 of file uipc_socket.c.
Referenced by unp_connect2().

| void soisdisconnected | ( | struct socket * | so | ) |
Definition at line 3453 of file uipc_socket.c.
References sbdrop_locked(), and wakeup().
Referenced by unp_disconnect().


| void soisdisconnecting | ( | struct socket * | so | ) |
Definition at line 3434 of file uipc_socket.c.
References wakeup().

| int solisten | ( | struct socket * | so, |
| int | backlog, | ||
| struct thread * | td | ||
| ) |
Definition at line 632 of file uipc_socket.c.
Referenced by sys_listen().

| void solisten_proto | ( | struct socket * | so, |
| int | backlog | ||
| ) |
Definition at line 655 of file uipc_socket.c.
References somaxconn.
Referenced by uipc_listen().

| int solisten_proto_check | ( | struct socket * | so | ) |
Definition at line 643 of file uipc_socket.c.
Referenced by uipc_listen().

| struct socket* sonewconn | ( | struct socket * | head, |
| int | connstatus | ||
| ) |
Definition at line 484 of file uipc_socket.c.
References crhold(), knlist_init_mtx(), log(), ratecheck(), soabort(), soalloc(), sodealloc(), sofree(), soreserve(), VNET_SO_ASSERT, and wakeup_one().
Referenced by sys_sctp_peeloff(), and unp_connect().


| int soo_kqfilter | ( | struct file * | fp, |
| struct knote * | kn | ||
| ) |
Definition at line 3085 of file uipc_socket.c.
References knlist_add(), solisten_filtops, soread_filtops, and sowrite_filtops.

| int soopt_getm | ( | struct sockopt * | sopt, |
| struct mbuf ** | mp | ||
| ) |
Definition at line 2902 of file uipc_socket.c.
References m_freem().

| int soopt_mcopyin | ( | struct sockopt * | sopt, |
| struct mbuf * | m | ||
| ) |
Definition at line 2951 of file uipc_socket.c.
References m_freem(), and panic().

| int soopt_mcopyout | ( | struct sockopt * | sopt, |
| struct mbuf * | m | ||
| ) |
Definition at line 2980 of file uipc_socket.c.
References m_freem().

| int sooptcopyin | ( | struct sockopt * | sopt, |
| void * | buf, | ||
| size_t | len, | ||
| size_t | minlen | ||
| ) |
Definition at line 2466 of file uipc_socket.c.
Referenced by do_setopt_accept_filter(), sogetopt(), sosetopt(), and uipc_ctloutput().

| int sooptcopyout | ( | struct sockopt * | sopt, |
| const void * | buf, | ||
| size_t | len | ||
| ) |
Definition at line 2717 of file uipc_socket.c.
Referenced by do_getopt_accept_filter(), sogetopt(), and uipc_ctloutput().

| int sopoll | ( | struct socket * | so, |
| int | events, | ||
| struct ucred * | active_cred, | ||
| struct thread * | td | ||
| ) |
Definition at line 3027 of file uipc_socket.c.
Referenced by selsocket(), and soo_poll().

| int sopoll_generic | ( | struct socket * | so, |
| int | events, | ||
| struct ucred * | active_cred, | ||
| struct thread * | td | ||
| ) |
Definition at line 3040 of file uipc_socket.c.
References selrecord().
Referenced by protosw_init().


| int soreceive | ( | struct socket * | so, |
| struct sockaddr ** | psa, | ||
| struct uio * | uio, | ||
| struct mbuf ** | mp0, | ||
| struct mbuf ** | controlp, | ||
| int * | flagsp | ||
| ) |
Definition at line 2373 of file uipc_socket.c.
Referenced by kern_recvit(), and soo_read().

| int soreceive_dgram | ( | struct socket * | so, |
| struct sockaddr ** | psa, | ||
| struct uio * | uio, | ||
| struct mbuf ** | mp0, | ||
| struct mbuf ** | controlp, | ||
| int * | flagsp | ||
| ) |
Definition at line 2191 of file uipc_socket.c.
References m_freem(), pr, sbwait(), sockbuf_pushsync(), sodupsockaddr(), soreceive_generic(), and uiomove().

| int soreceive_generic | ( | struct socket * | so, |
| struct sockaddr ** | psa, | ||
| struct uio * | uio, | ||
| struct mbuf ** | mp0, | ||
| struct mbuf ** | controlp, | ||
| int * | flagsp | ||
| ) |
Definition at line 1527 of file uipc_socket.c.
References m_copym(), m_freem(), pr, sbdroprecord_locked(), sblock(), SBLOCKWAIT, sbunlock(), sbwait(), sockbuf_pushsync(), sodupsockaddr(), soreceive_rcvoob(), type, uiomove(), and VNET_SO_ASSERT.
Referenced by protosw_init(), and soreceive_dgram().


|
static |
Definition at line 1435 of file uipc_socket.c.
References m_freem(), pr, uiomove(), and VNET_SO_ASSERT.
Referenced by soreceive_generic(), and soreceive_stream().


| int soreceive_stream | ( | struct socket * | so, |
| struct sockaddr ** | psa, | ||
| struct uio * | uio, | ||
| struct mbuf ** | mp0, | ||
| struct mbuf ** | controlp, | ||
| int * | flagsp | ||
| ) |
Definition at line 1990 of file uipc_socket.c.
References m_cat(), m_copym(), m_mbuftouio(), sbdrop_locked(), sblock(), SBLOCKWAIT, sbunlock(), sbwait(), soreceive_rcvoob(), and VNET_SO_ASSERT.

| void sorflush | ( | struct socket * | so | ) |
Definition at line 2412 of file uipc_socket.c.
References pr, sblock(), sbrelease_internal(), sbunlock(), socantrcvmore(), and VNET_SO_ASSERT.
Referenced by soshutdown(), and unp_gc().


| int sosend | ( | struct socket * | so, |
| struct sockaddr * | addr, | ||
| struct uio * | uio, | ||
| struct mbuf * | top, | ||
| struct mbuf * | control, | ||
| int | flags, | ||
| struct thread * | td | ||
| ) |
Definition at line 1414 of file uipc_socket.c.
Referenced by kern_sendit(), and soo_write().

| int sosend_dgram | ( | struct socket * | so, |
| struct sockaddr * | addr, | ||
| struct uio * | uio, | ||
| struct mbuf * | top, | ||
| struct mbuf * | control, | ||
| int | flags, | ||
| struct thread * | td | ||
| ) |
Definition at line 1057 of file uipc_socket.c.
References m_freem(), m_uiotombuf(), max_hdr, and VNET_SO_ASSERT.

| int sosend_generic | ( | struct socket * | so, |
| struct sockaddr * | addr, | ||
| struct uio * | uio, | ||
| struct mbuf * | top, | ||
| struct mbuf * | control, | ||
| int | flags, | ||
| struct thread * | td | ||
| ) |
Definition at line 1230 of file uipc_socket.c.
References m_freem(), m_uiotombuf(), max_hdr, sblock(), SBLOCKWAIT, sbunlock(), sbwait(), and VNET_SO_ASSERT.
Referenced by protosw_init().


| int sosetopt | ( | struct socket * | so, |
| struct sockopt * | sopt | ||
| ) |
Definition at line 2509 of file uipc_socket.c.
References do_setopt_accept_filter(), sbreserve(), sooptcopyin(), and tvtohz().
Referenced by kern_setsockopt(), and so_setsockopt().


| int soshutdown | ( | struct socket * | so, |
| int | how | ||
| ) |
Definition at line 2386 of file uipc_socket.c.
References pr, sorflush(), and wakeup().
Referenced by sys_shutdown().


| void sotoxsocket | ( | struct socket * | so, |
| struct xsocket * | xso | ||
| ) |
Definition at line 3546 of file uipc_socket.c.
References sbtoxsockbuf().
Referenced by unp_pcblist().


| void soupcall_clear | ( | struct socket * | so, |
| int | which | ||
| ) |
Definition at line 3516 of file uipc_socket.c.
References panic().
Referenced by soisconnected(), and sowakeup().


| void soupcall_set | ( | struct socket * | so, |
| int | which, | ||
| int(*)(struct socket *, void *, int) | func, | ||
| void * | arg | ||
| ) |
Definition at line 3490 of file uipc_socket.c.
References panic().
Referenced by soisconnected().


| SYSCTL_INT | ( | _kern_ipc | , |
| OID_AUTO | , | ||
| numopensockets | , | ||
| CTLFLAG_RD | , | ||
| & | numopensockets, | ||
| 0 | , | ||
| "Number of open sockets" | |||
| ) |
|
static |
Definition at line 294 of file uipc_socket.c.
References maxfiles, maxsockets, and sysctl_handle_int().

| SYSCTL_NODE | ( | _kern | , |
| KERN_IPC | , | ||
| ipc | , | ||
| CTLFLAG_RW | , | ||
| 0 | , | ||
| "IPC" | |||
| ) |
| SYSCTL_PROC | ( | _kern_ipc | , |
| KIPC_SOMAXCONN | , | ||
| somaxconn | , | ||
| CTLTYPE_UINT| | CTLFLAG_RW, | ||
| 0 | , | ||
| sizeof(int) | , | ||
| sysctl_somaxconn | , | ||
| "I" | , | ||
| "Maximum listen socket pending connection accept queue size" | |||
| ) |
| SYSCTL_PROC | ( | _kern_ipc | , |
| OID_AUTO | , | ||
| maxsockets | , | ||
| CTLTYPE_INT| | CTLFLAG_RW, | ||
| & | maxsockets, | ||
| 0 | , | ||
| sysctl_maxsockets | , | ||
| "IU" | , | ||
| "Maximum number of sockets avaliable" | |||
| ) |
|
static |
Definition at line 194 of file uipc_socket.c.
References somaxconn, and sysctl_handle_int().

| SYSINIT | ( | socket | , |
| SI_SUB_PROTO_DOMAININIT | , | ||
| SI_ORDER_ANY | , | ||
| socket_init | , | ||
| NULL | |||
| ) |
| SYSINIT | ( | param | , |
| SI_SUB_TUNABLES | , | ||
| SI_ORDER_ANY | , | ||
| init_maxsockets | , | ||
| NULL | |||
| ) |
| struct mtx accept_mtx |
Definition at line 234 of file uipc_socket.c.
Referenced by kern_accept().
| int maxsockets |
Definition at line 255 of file uipc_socket.c.
Referenced by sysctl_maxsockets(), unp_init(), and unp_zone_change().
|
static |
Definition at line 214 of file uipc_socket.c.
Referenced by soalloc(), and sodealloc().
| so_gen_t so_gencnt |
Definition at line 178 of file uipc_socket.c.
Referenced by soalloc(), sodealloc(), and unp_pcblist().
|
static |
Definition at line 241 of file uipc_socket.c.
Referenced by soalloc(), and sodealloc().
| uma_zone_t socket_zone |
Definition at line 254 of file uipc_socket.c.
|
static |
Definition at line 162 of file uipc_socket.c.
Referenced by soo_kqfilter().
|
static |
Definition at line 191 of file uipc_socket.c.
Referenced by solisten_proto(), and sysctl_somaxconn().
|
static |
Definition at line 167 of file uipc_socket.c.
Referenced by soo_kqfilter().
|
static |
Definition at line 172 of file uipc_socket.c.
Referenced by soo_kqfilter().