Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/uipc_socket.c
| Show First 20 Lines • Show All 3,693 Lines • ▼ Show 20 Lines | if (error != 0) { | ||||
| return; | return; | ||||
| } | } | ||||
| sbrelease(so, SO_RCV); | sbrelease(so, SO_RCV); | ||||
| SOCK_IO_RECV_UNLOCK(so); | SOCK_IO_RECV_UNLOCK(so); | ||||
| } | } | ||||
| int | |||||
| sosetfib(struct socket *so, int fibnum) | |||||
| { | |||||
| if (fibnum < 0 || fibnum >= rt_numfibs) | |||||
| return (EINVAL); | |||||
| SOCK_LOCK(so); | |||||
| so->so_fibnum = fibnum; | |||||
| SOCK_UNLOCK(so); | |||||
| return (0); | |||||
| } | |||||
| #ifdef SOCKET_HHOOK | #ifdef SOCKET_HHOOK | ||||
| /* | /* | ||||
| * Wrapper for Socket established helper hook. | * Wrapper for Socket established helper hook. | ||||
| * Parameters: socket, context of the hook point, hook id. | * Parameters: socket, context of the hook point, hook id. | ||||
| */ | */ | ||||
| static inline int | static inline int | ||||
| hhook_run_socket(struct socket *so, void *hctx, int32_t h_id) | hhook_run_socket(struct socket *so, void *hctx, int32_t h_id) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 132 Lines • ▼ Show 20 Lines | case SO_RERROR: | ||||
| if (optval) | if (optval) | ||||
| so->so_options |= sopt->sopt_name; | so->so_options |= sopt->sopt_name; | ||||
| else | else | ||||
| so->so_options &= ~sopt->sopt_name; | so->so_options &= ~sopt->sopt_name; | ||||
| SOCK_UNLOCK(so); | SOCK_UNLOCK(so); | ||||
| break; | break; | ||||
| case SO_SETFIB: | case SO_SETFIB: | ||||
| error = sooptcopyin(sopt, &optval, sizeof optval, | error = so->so_proto->pr_ctloutput(so, sopt); | ||||
| sizeof optval); | |||||
| if (error) | |||||
| goto bad; | |||||
| if (optval < 0 || optval >= rt_numfibs) { | |||||
| error = EINVAL; | |||||
| goto bad; | |||||
| } | |||||
| if (((so->so_proto->pr_domain->dom_family == PF_INET) || | |||||
| (so->so_proto->pr_domain->dom_family == PF_INET6) || | |||||
| (so->so_proto->pr_domain->dom_family == PF_ROUTE))) | |||||
| so->so_fibnum = optval; | |||||
| else | |||||
| so->so_fibnum = 0; | |||||
| break; | break; | ||||
| case SO_USER_COOKIE: | case SO_USER_COOKIE: | ||||
| error = sooptcopyin(sopt, &val32, sizeof val32, | error = sooptcopyin(sopt, &val32, sizeof val32, | ||||
| sizeof val32); | sizeof val32); | ||||
| if (error) | if (error) | ||||
| goto bad; | goto bad; | ||||
| so->so_user_cookie = val32; | so->so_user_cookie = val32; | ||||
| ▲ Show 20 Lines • Show All 1,223 Lines • Show Last 20 Lines | |||||