Lines Matching refs:sopt
3716 sooptcopyin(struct sockopt *sopt, void *buf, size_t len, size_t minlen) argument
3726 if ((valsize = sopt->sopt_valsize) < minlen)
3729 sopt->sopt_valsize = valsize = len;
3731 if (sopt->sopt_td != NULL)
3732 return (copyin(sopt->sopt_val, buf, valsize));
3734 bcopy(sopt->sopt_val, buf, valsize);
3747 struct sockopt sopt; local
3749 sopt.sopt_level = level;
3750 sopt.sopt_name = optname;
3751 sopt.sopt_dir = SOPT_SET;
3752 sopt.sopt_val = optval;
3753 sopt.sopt_valsize = optlen;
3754 sopt.sopt_td = NULL;
3755 return (sosetopt(so, &sopt));
3759 sosetopt(struct socket *so, struct sockopt *sopt) argument
3772 if (sopt->sopt_level != SOL_SOCKET) {
3774 error = (*so->so_proto->pr_ctloutput)(so, sopt);
3778 switch (sopt->sopt_name) {
3780 error = accept_filt_setopt(so, sopt);
3786 error = sooptcopyin(sopt, &l, sizeof l, sizeof l);
3819 error = sooptcopyin(sopt, &optval, sizeof optval,
3825 so->so_options |= sopt->sopt_name;
3827 so->so_options &= ~sopt->sopt_name;
3832 error = sooptcopyin(sopt, &optval, sizeof optval,
3850 error = sooptcopyin(sopt, &val32, sizeof val32,
3861 error = so->so_proto->pr_setsbopt(so, sopt);
3872 error = sooptcopyin(sopt, &tv32, sizeof tv32,
3878 error = sooptcopyin(sopt, &tv, sizeof tv,
3892 valp = sopt->sopt_name == SO_SNDTIMEO ?
3903 error = sooptcopyin(sopt, &extmac, sizeof extmac,
3907 error = mac_setsockopt_label(sopt->sopt_td->td_ucred,
3915 error = sooptcopyin(sopt, &optval, sizeof optval,
3927 error = sooptcopyin(sopt, &val32, sizeof(val32),
3941 error = sooptcopyin(sopt, &splice32,
3954 error = sooptcopyin(sopt, &splice,
3972 if (!cap_rights_contains(sopt->sopt_rights,
3977 error = getsock(sopt->sopt_td, splice.sp_fd,
3984 fdrop(fp, sopt->sopt_td);
3992 error = hhook_run_socket(so, sopt,
3999 (void)(*so->so_proto->pr_ctloutput)(so, sopt);
4010 sooptcopyout(struct sockopt *sopt, const void *buf, size_t len) argument
4025 valsize = min(len, sopt->sopt_valsize);
4026 sopt->sopt_valsize = valsize;
4027 if (sopt->sopt_val != NULL) {
4028 if (sopt->sopt_td != NULL)
4029 error = copyout(buf, sopt->sopt_val, valsize);
4031 bcopy(buf, sopt->sopt_val, valsize);
4037 sogetopt(struct socket *so, struct sockopt *sopt) argument
4048 if (sopt->sopt_level != SOL_SOCKET) {
4050 error = (*so->so_proto->pr_ctloutput)(so, sopt);
4056 switch (sopt->sopt_name) {
4058 error = accept_filt_getopt(so, sopt);
4066 error = sooptcopyout(sopt, &l, sizeof l);
4085 optval = so->so_options & sopt->sopt_name;
4087 error = sooptcopyout(sopt, &optval, sizeof optval);
4145 tv = sbttotv(sopt->sopt_name == SO_SNDTIMEO ?
4157 error = sooptcopyout(sopt, &tv32, sizeof tv32);
4160 error = sooptcopyout(sopt, &tv, sizeof tv);
4165 error = sooptcopyin(sopt, &extmac, sizeof(extmac),
4169 error = mac_getsockopt_label(sopt->sopt_td->td_ucred,
4173 error = sooptcopyout(sopt, &extmac, sizeof extmac);
4181 error = sooptcopyin(sopt, &extmac, sizeof(extmac),
4186 sopt->sopt_td->td_ucred, so, &extmac);
4189 error = sooptcopyout(sopt, &extmac, sizeof extmac);
4244 error = sooptcopyout(sopt, &n, sizeof(n));
4250 error = hhook_run_socket(so, sopt,
4263 soopt_getm(struct sockopt *sopt, struct mbuf **mp) argument
4266 int sopt_size = sopt->sopt_valsize;
4268 MGET(m, sopt->sopt_td ? M_WAITOK : M_NOWAIT, MT_DATA);
4272 MCLGET(m, sopt->sopt_td ? M_WAITOK : M_NOWAIT);
4286 MGET(m, sopt->sopt_td ? M_WAITOK : M_NOWAIT, MT_DATA);
4292 MCLGET(m, sopt->sopt_td != NULL ? M_WAITOK :
4311 soopt_mcopyin(struct sockopt *sopt, struct mbuf *m) argument
4315 if (sopt->sopt_val == NULL)
4317 while (m != NULL && sopt->sopt_valsize >= m->m_len) {
4318 if (sopt->sopt_td != NULL) {
4321 error = copyin(sopt->sopt_val, mtod(m, char *),
4328 bcopy(sopt->sopt_val, mtod(m, char *), m->m_len);
4329 sopt->sopt_valsize -= m->m_len;
4330 sopt->sopt_val = (char *)sopt->sopt_val + m->m_len;
4339 soopt_mcopyout(struct sockopt *sopt, struct mbuf *m) argument
4344 if (sopt->sopt_val == NULL)
4346 while (m != NULL && sopt->sopt_valsize >= m->m_len) {
4347 if (sopt->sopt_td != NULL) {
4350 error = copyout(mtod(m, char *), sopt->sopt_val,
4357 bcopy(mtod(m, char *), sopt->sopt_val, m->m_len);
4358 sopt->sopt_valsize -= m->m_len;
4359 sopt->sopt_val = (char *)sopt->sopt_val + m->m_len;
4368 sopt->sopt_valsize = valsize;