Home | History | Annotate | Download | only in kern

Lines Matching defs:sopt

1743 sosetopt1(struct socket *so, const struct sockopt *sopt)
1750 opt = sopt->sopt_name;
1755 error = accept_filt_setopt(so, sopt);
1760 error = sockopt_get(sopt, &l, sizeof(l));
1787 error = sockopt_getint(sopt, &optval);
1801 error = sockopt_getint(sopt, &optval);
1857 error = sockopt_get(sopt, &tv, sizeof(tv));
1886 (opt, so, sopt), enosys(), error);
1898 sosetopt(struct socket *so, struct sockopt *sopt)
1902 if (sopt->sopt_level == SOL_SOCKET) {
1903 error = sosetopt1(so, sopt);
1913 prerr = (*so->so_proto->pr_ctloutput)(PRCO_SETOPT, so, sopt);
1930 struct sockopt sopt;
1935 sockopt_init(&sopt, level, name, valsize);
1936 sockopt_set(&sopt, val, valsize);
1938 error = sosetopt(so, &sopt);
1940 sockopt_destroy(&sopt);
1949 sogetopt1(struct socket *so, struct sockopt *sopt)
1955 switch ((opt = sopt->sopt_name)) {
1958 error = accept_filt_getopt(so, sopt);
1965 error = sockopt_set(sopt, &l, sizeof(l));
1980 error = sockopt_setint(sopt
1984 error = sockopt_setint(sopt, so->so_type);
1992 error = sockopt_setint(sopt, so->so_error);
1997 error = sockopt_setint(sopt, so->so_snd.sb_hiwat);
2001 error = sockopt_setint(sopt, so->so_rcv.sb_hiwat);
2005 error = sockopt_setint(sopt, so->so_snd.sb_lowat);
2009 error = sockopt_setint(sopt, so->so_rcv.sb_lowat);
2021 error = sockopt_set(sopt, &tv, sizeof(tv));
2025 error = sockopt_setint(sopt, so->so_rcv.sb_overflowed);
2030 (opt, so, sopt), enosys(), error);
2040 sogetopt(struct socket *so, struct sockopt *sopt)
2045 if (sopt->sopt_level != SOL_SOCKET) {
2048 (PRCO_GETOPT, so, sopt));
2052 error = sogetopt1(so, sopt);
2063 sockopt_alloc(struct sockopt *sopt, size_t len, km_flag_t kmflag)
2067 KASSERT(sopt->sopt_size == 0);
2069 if (len > sizeof(sopt->sopt_buf)) {
2073 sopt->sopt_data = data;
2075 sopt->sopt_data = sopt->sopt_buf;
2077 sopt->sopt_size = len;
2086 sockopt_init(struct sockopt *sopt, int level, int name, size_t size)
2089 memset(sopt, 0, sizeof(*sopt));
2091 sopt->sopt_level = level;
2092 sopt->sopt_name = name;
2093 (void)sockopt_alloc(sopt, size, KM_SLEEP);
2101 sockopt_destroy(struct sockopt *sopt)
2104 if (sopt->sopt_data != sopt->sopt_buf)
2105 kmem_free(sopt->sopt_data, sopt->sopt_size);
2107 memset(sopt, 0, sizeof(*sopt));
2116 sockopt_set(struct sockopt *sopt, const void *buf, size_t len)
2120 if (sopt->sopt_size == 0) {
2121 error = sockopt_alloc(sopt, len, KM_NOSLEEP);
2126 sopt->sopt_retsize = MIN(sopt->sopt_size, len);
2127 if (sopt->sopt_retsize > 0) {
2128 memcpy(sopt->sopt_data, buf, sopt->sopt_retsize);
2138 sockopt_setint(struct sockopt *sopt, int val)
2141 return sockopt_set(sopt, &val, sizeof(int));
2149 sockopt_get(const struct sockopt *sopt, void *buf, size_t len)
2152 if (sopt->sopt_size != len)
2155 memcpy(buf, sopt->sopt_data, len);
2163 sockopt_getint(const struct sockopt *sopt, int *valp)
2166 return sockopt_get(sopt, valp, sizeof(int));
2176 sockopt_setmbuf(struct sockopt *sopt, struct mbuf *m)
2183 if (sopt->sopt_size == 0) {
2184 error = sockopt_alloc(sopt, len, KM_NOSLEEP);
2189 sopt->sopt_retsize = MIN(sopt->sopt_size, len);
2190 m_copydata(m, 0, sopt->sopt_retsize, sopt->sopt_data);
2203 sockopt_getmbuf(const struct sockopt *sopt)
2207 if (sopt->sopt_size > MCLBYTES)
2214 if (sopt->sopt_size > MLEN) {
2222 memcpy(mtod(m, void *), sopt->sopt_data, sopt->sopt_size);
2223 m->m_len = sopt->sopt_size;