Lines Matching refs:sopt

145 sooptcopyin_timeval(struct sockopt *sopt, struct timeval * tv_p);
148 sooptcopyout_timeval(struct sockopt *sopt, const struct timeval * tv_p);
2877 sooptcopyin(struct sockopt *sopt, void *buf, size_t len, size_t minlen)
2884 * wants, we return EINVAL. On success, sopt->sopt_valsize
2887 if ((valsize = sopt->sopt_valsize) < minlen)
2890 sopt->sopt_valsize = valsize = len;
2892 if (sopt->sopt_p != kernproc)
2893 return (copyin(sopt->sopt_val, buf, valsize));
2895 bcopy(CAST_DOWN(caddr_t, sopt->sopt_val), buf, valsize);
2907 sooptcopyin_timeval(struct sockopt *sopt, struct timeval * tv_p)
2911 if (proc_is64bit(sopt->sopt_p)) {
2914 if (sopt->sopt_valsize < sizeof(tv64)) {
2917 sopt->sopt_valsize = sizeof(tv64);
2918 if (sopt->sopt_p != kernproc) {
2919 error = copyin(sopt->sopt_val, &tv64, sizeof(tv64));
2923 bcopy(CAST_DOWN(caddr_t, sopt->sopt_val), &tv64,
2935 if (sopt->sopt_valsize < sizeof(tv32)) {
2938 sopt->sopt_valsize = sizeof(tv32);
2939 if (sopt->sopt_p != kernproc) {
2940 error = copyin(sopt->sopt_val, &tv32, sizeof(tv32));
2945 bcopy(CAST_DOWN(caddr_t, sopt->sopt_val), &tv32,
2981 sosetopt(struct socket *so, struct sockopt *sopt)
3000 if (sopt->sopt_dir != SOPT_SET) {
3001 sopt->sopt_dir = SOPT_SET;
3004 error = sflt_setsockopt(so, sopt);
3012 if (sopt->sopt_level != SOL_SOCKET) {
3014 error = (*so->so_proto->pr_ctloutput)(so, sopt);
3020 switch (sopt->sopt_name) {
3023 error = sooptcopyin(sopt, &l, sizeof (l), sizeof (l));
3027 so->so_linger = (sopt->sopt_name == SO_LINGER) ?
3050 error = sooptcopyin(sopt, &optval, sizeof (optval),
3055 so->so_options |= sopt->sopt_name;
3057 so->so_options &= ~sopt->sopt_name;
3064 error = sooptcopyin(sopt, &optval, sizeof (optval),
3078 switch (sopt->sopt_name) {
3082 struct sockbuf *sb = (sopt->sopt_name == SO_SNDBUF) ?
3113 error = sooptcopyin_timeval(sopt, &tv);
3117 switch (sopt->sopt_name) {
3131 error = sooptcopyin(sopt, &nke, sizeof (nke),
3141 error = sooptcopyin(sopt, &optval, sizeof (optval),
3153 error = sooptcopyin(sopt, &optval, sizeof (optval),
3165 error = sooptcopyin(sopt, &optval, sizeof (optval),
3180 error = sooptcopyin(sopt, &optval, sizeof (optval),
3195 error = sooptcopyin(sopt, &optval, sizeof (optval),
3205 if ((error = sooptcopyin(sopt, &extmac, sizeof (extmac),
3209 error = mac_setsockopt_label(proc_ucred(sopt->sopt_p),
3218 error = sooptcopyin(sopt, &optval, sizeof (optval),
3230 error = sooptcopyin(sopt, &optval, sizeof (optval),
3243 error = sooptcopyin(sopt, &sonpx, sizeof(sonpx), sizeof(sonpx));
3263 error = sooptcopyin(sopt, &optval, sizeof (optval),
3274 error = sooptcopyin(sopt, &optval, sizeof (optval),
3288 error = sooptcopyin(sopt, &so_tcdbg,
3303 error = sooptcopyin(sopt, &optval, sizeof (optval),
3314 error = sooptcopyin(sopt, &optval, sizeof (optval),
3349 error = sooptcopyin(sopt, &optval, sizeof (optval),
3361 error = sooptcopyin(sopt, &optval, sizeof (optval),
3372 (void) ((*so->so_proto->pr_ctloutput)(so, sopt));
3382 sooptcopyout(struct sockopt *sopt, void *buf, size_t len)
3398 valsize = min(len, sopt->sopt_valsize);
3399 sopt->sopt_valsize = valsize;
3400 if (sopt->sopt_val != USER_ADDR_NULL) {
3401 if (sopt->sopt_p != kernproc)
3402 error = copyout(buf, sopt->sopt_val, valsize);
3404 bcopy(buf, CAST_DOWN(caddr_t, sopt->sopt_val), valsize);
3410 sooptcopyout_timeval(struct sockopt *sopt, const struct timeval * tv_p)
3420 if (proc_is64bit(sopt->sopt_p)) {
3431 valsize = min(len, sopt->sopt_valsize);
3432 sopt->sopt_valsize = valsize;
3433 if (sopt->sopt_val != USER_ADDR_NULL) {
3434 if (sopt->sopt_p != kernproc)
3435 error = copyout(val, sopt->sopt_val, valsize);
3437 bcopy(val, CAST_DOWN(caddr_t, sopt->sopt_val), valsize);
3450 sogetopt(struct socket *so, struct sockopt *sopt)
3459 if (sopt->sopt_dir != SOPT_GET) {
3460 sopt->sopt_dir = SOPT_GET;
3465 error = sflt_getsockopt(so, sopt);
3474 if (sopt->sopt_level != SOL_SOCKET) {
3476 error = (*so->so_proto->pr_ctloutput)(so, sopt);
3484 switch (sopt->sopt_name) {
3488 l.l_linger = (sopt->sopt_name == SO_LINGER) ?
3490 error = sooptcopyout(sopt, &l, sizeof (l));
3508 optval = so->so_options & sopt->sopt_name;
3510 error = sooptcopyout(sopt, &optval, sizeof (optval));
3564 tv = (sopt->sopt_name == SO_SNDTIMEO ?
3567 error = sooptcopyout_timeval(sopt, &tv);
3594 if ((error = sooptcopyin(sopt, &extmac, sizeof (extmac),
3597 sopt->sopt_p), so, &extmac)) != 0)
3600 error = sooptcopyout(sopt, &extmac, sizeof (extmac));
3608 if ((error = sooptcopyin(sopt, &extmac, sizeof (extmac),
3611 sopt->sopt_p), so, &extmac)) != 0)
3614 error = sooptcopyout(sopt, &extmac, sizeof (extmac));
3635 error = sooptcopyout(sopt, &sonpx, sizeof(struct so_np_extensions));
3648 error = sooptcopyout(sopt, &so->so_tc_stats, sizeof(so->so_tc_stats));
3652 error = sogetopt_tcdbg(so, sopt);
3693 soopt_getm(struct sockopt *sopt, struct mbuf **mp)
3696 int sopt_size = sopt->sopt_valsize;
3702 how = sopt->sopt_p != kernproc ? M_WAIT : M_DONTWAIT;
3744 /* copyin sopt data into mbuf chain */
3746 soopt_mcopyin(struct sockopt *sopt, struct mbuf *m)
3750 if (sopt->sopt_val == USER_ADDR_NULL)
3752 while (m != NULL && sopt->sopt_valsize >= m->m_len) {
3753 if (sopt->sopt_p != kernproc) {
3756 error = copyin(sopt->sopt_val, mtod(m, char *),
3763 bcopy(CAST_DOWN(caddr_t, sopt->sopt_val),
3766 sopt->sopt_valsize -= m->m_len;
3767 sopt->sopt_val += m->m_len;
3777 soopt_mcopyout(struct sockopt *sopt, struct mbuf *m)
3782 if (sopt->sopt_val == USER_ADDR_NULL)
3784 while (m != NULL && sopt->sopt_valsize >= m->m_len) {
3785 if (sopt->sopt_p != kernproc) {
3788 error = copyout(mtod(m, char *), sopt->sopt_val,
3796 CAST_DOWN(caddr_t, sopt->sopt_val), m->m_len);
3798 sopt->sopt_valsize -= m->m_len;
3799 sopt->sopt_val += m->m_len;
3808 sopt->sopt_valsize = valsize;