Lines Matching defs:sopt

3734 sooptcopyin(struct sockopt *sopt, void *buf, size_t len, size_t minlen)
3741 * On success, sopt->sopt_valsize is set to however much we actually
3744 if ((valsize = sopt->sopt_valsize) < minlen)
3747 sopt->sopt_valsize = valsize = len;
3749 if (sopt->sopt_td != NULL)
3750 return (copyin(sopt->sopt_val, buf, valsize));
3752 bcopy(sopt->sopt_val, buf, valsize);
3765 struct sockopt sopt;
3767 sopt.sopt_level = level;
3768 sopt.sopt_name = optname;
3769 sopt.sopt_dir = SOPT_SET;
3770 sopt.sopt_val = optval;
3771 sopt.sopt_valsize = optlen;
3772 sopt.sopt_td = NULL;
3773 return (sosetopt(so, &sopt));
3777 sosetopt(struct socket *so, struct sockopt *sopt)
3790 if (sopt->sopt_level != SOL_SOCKET) {
3792 error = (*so->so_proto->pr_ctloutput)(so, sopt);
3796 switch (sopt->sopt_name) {
3798 error = accept_filt_setopt(so, sopt);
3804 error = sooptcopyin(sopt, &l, sizeof l, sizeof l);
3837 error = sooptcopyin(sopt, &optval, sizeof optval,
3843 so->so_options |= sopt->sopt_name;
3845 so->so_options &= ~sopt->sopt_name;
3850 error = sooptcopyin(sopt, &optval, sizeof optval,
3868 error = sooptcopyin(sopt, &val32, sizeof val32,
3879 error = so->so_proto->pr_setsbopt(so, sopt);
3890 error = sooptcopyin(sopt, &tv32, sizeof tv32,
3896 error = sooptcopyin(sopt, &tv, sizeof tv,
3910 valp = sopt->sopt_name == SO_SNDTIMEO ?
3921 error = sooptcopyin(sopt, &extmac, sizeof extmac,
3925 error = mac_setsockopt_label(sopt->sopt_td->td_ucred,
3933 error = sooptcopyin(sopt, &optval, sizeof optval,
3945 error = sooptcopyin(sopt, &val32, sizeof(val32),
3959 error = sooptcopyin(sopt, &splice32,
3972 error = sooptcopyin(sopt, &splice,
3990 if (!cap_rights_contains(sopt->sopt_rights,
3995 error = getsock(sopt->sopt_td, splice.sp_fd,
4002 fdrop(fp, sopt->sopt_td);
4011 error = hhook_run_socket(so, sopt,
4019 (void)(*so->so_proto->pr_ctloutput)(so, sopt);
4030 sooptcopyout(struct sockopt *sopt, const void *buf, size_t len)
4045 valsize = min(len, sopt->sopt_valsize);
4046 sopt->sopt_valsize = valsize;
4047 if (sopt->sopt_val != NULL) {
4048 if (sopt->sopt_td != NULL)
4049 error = copyout(buf, sopt->sopt_val, valsize);
4051 bcopy(buf, sopt->sopt_val, valsize);
4057 sogetopt(struct socket *so, struct sockopt *sopt)
4068 if (sopt->sopt_level != SOL_SOCKET) {
4070 error = (*so->so_proto->pr_ctloutput)(so, sopt);
4076 switch (sopt->sopt_name) {
4078 error = accept_filt_getopt(so, sopt);
4086 error = sooptcopyout(sopt, &l, sizeof l);
4105 optval = so->so_options & sopt->sopt_name;
4107 error = sooptcopyout(sopt, &optval, sizeof optval);
4165 tv = sbttotv(sopt->sopt_name == SO_SNDTIMEO ?
4177 error = sooptcopyout(sopt, &tv32, sizeof tv32);
4180 error = sooptcopyout(sopt, &tv, sizeof tv);
4185 error = sooptcopyin(sopt, &extmac, sizeof(extmac),
4189 error = mac_getsockopt_label(sopt->sopt_td->td_ucred,
4201 error = sooptcopyin(sopt, &extmac, sizeof(extmac),
4206 sopt->sopt_td->td_ucred, so, &extmac);
4264 error = sooptcopyout(sopt, &n, sizeof(n));
4271 error = hhook_run_socket(so, sopt,
4285 soopt_getm(struct sockopt *sopt, struct mbuf **mp)
4288 int sopt_size = sopt->sopt_valsize;
4290 MGET(m, sopt->sopt_td ? M_WAITOK : M_NOWAIT, MT_DATA);
4294 MCLGET(m, sopt->sopt_td ? M_WAITOK : M_NOWAIT);
4308 MGET(m, sopt->sopt_td ? M_WAITOK : M_NOWAIT, MT_DATA);
4314 MCLGET(m, sopt->sopt_td != NULL ? M_WAITOK :
4333 soopt_mcopyin(struct sockopt *sopt, struct mbuf *m)
4337 if (sopt->sopt_val == NULL)
4339 while (m != NULL && sopt->sopt_valsize >= m->m_len) {
4340 if (sopt->sopt_td != NULL) {
4343 error = copyin(sopt->sopt_val, mtod(m, char *),
4350 bcopy(sopt->sopt_val, mtod(m, char *), m->m_len);
4351 sopt->sopt_valsize -= m->m_len;
4352 sopt->sopt_val = (char *)sopt->sopt_val + m->m_len;
4361 soopt_mcopyout(struct sockopt *sopt, struct mbuf *m)
4366 if (sopt->sopt_val == NULL)
4368 while (m != NULL && sopt->sopt_valsize >= m->m_len) {
4369 if (sopt->sopt_td != NULL) {
4372 error = copyout(mtod(m, char *), sopt->sopt_val,
4379 bcopy(mtod(m, char *), sopt->sopt_val, m->m_len);
4380 sopt->sopt_valsize -= m->m_len;
4381 sopt->sopt_val = (char *)sopt->sopt_val + m->m_len;
4390 sopt->sopt_valsize = valsize;