Lines Matching defs:sopt
1740 sosetopt1(struct socket *so, const struct sockopt *sopt)
1747 opt = sopt->sopt_name;
1752 error = accept_filt_setopt(so, sopt);
1757 error = sockopt_get(sopt, &l, sizeof(l));
1784 error = sockopt_getint(sopt, &optval);
1798 error = sockopt_getint(sopt, &optval);
1854 error = sockopt_get(sopt, &tv, sizeof(tv));
1883 (opt, so, sopt), enosys(), error);
1895 sosetopt(struct socket *so, struct sockopt *sopt)
1899 if (sopt->sopt_level == SOL_SOCKET) {
1900 error = sosetopt1(so, sopt);
1910 prerr = (*so->so_proto->pr_ctloutput)(PRCO_SETOPT, so, sopt);
1927 struct sockopt sopt;
1932 sockopt_init(&sopt, level, name, valsize);
1933 sockopt_set(&sopt, val, valsize);
1935 error = sosetopt(so, &sopt);
1937 sockopt_destroy(&sopt);
1946 sogetopt1(struct socket *so, struct sockopt *sopt)
1952 switch ((opt = sopt->sopt_name)) {
1955 error = accept_filt_getopt(so, sopt);
1962 error = sockopt_set(sopt, &l, sizeof(l));
1977 error = sockopt_setint(sopt, (so->so_options & opt) ? 1 : 0);
1981 error = sockopt_setint(sopt, so->so_type);
1989 error = sockopt_setint(sopt, so->so_error);
1994 error = sockopt_setint(sopt, so->so_snd.sb_hiwat);
1998 error = sockopt_setint(sopt, so->so_rcv.sb_hiwat);
2002 error = sockopt_setint(sopt, so->so_snd.sb_lowat);
2006 error = sockopt_setint(sopt, so->so_rcv.sb_lowat);
2018 error = sockopt_set(sopt, &tv, sizeof(tv));
2022 error = sockopt_setint(sopt, so->so_rcv.sb_overflowed);
2027 (opt, so, sopt), enosys(), error);
2037 sogetopt(struct socket *so, struct sockopt *sopt)
2042 if (sopt->sopt_level != SOL_SOCKET) {
2045 (PRCO_GETOPT, so, sopt));
2049 error = sogetopt1(so, sopt);
2060 sockopt_alloc(struct sockopt *sopt, size_t len, km_flag_t kmflag)
2064 KASSERT(sopt->sopt_size == 0);
2066 if (len > sizeof(sopt->sopt_buf)) {
2070 sopt->sopt_data = data;
2072 sopt->sopt_data = sopt->sopt_buf;
2074 sopt->sopt_size = len;
2083 sockopt_init(struct sockopt *sopt, int level, int name, size_t size)
2086 memset(sopt, 0, sizeof(*sopt));
2088 sopt->sopt_level = level;
2089 sopt->sopt_name = name;
2090 (void)sockopt_alloc(sopt, size, KM_SLEEP);
2098 sockopt_destroy(struct sockopt *sopt)
2101 if (sopt->sopt_data != sopt->sopt_buf)
2102 kmem_free(sopt->sopt_data, sopt->sopt_size);
2104 memset(sopt, 0, sizeof(*sopt));
2113 sockopt_set(struct sockopt *sopt, const void *buf, size_t len)
2117 if (sopt->sopt_size == 0) {
2118 error = sockopt_alloc(sopt, len, KM_NOSLEEP);
2123 sopt->sopt_retsize = MIN(sopt->sopt_size, len);
2124 if (sopt->sopt_retsize > 0) {
2125 memcpy(sopt->sopt_data, buf, sopt->sopt_retsize);
2135 sockopt_setint(struct sockopt *sopt, int val)
2138 return sockopt_set(sopt, &val, sizeof(int));
2146 sockopt_get(const struct sockopt *sopt, void *buf, size_t len)
2149 if (sopt->sopt_size != len)
2152 memcpy(buf, sopt->sopt_data, len);
2160 sockopt_getint(const struct sockopt *sopt, int *valp)
2163 return sockopt_get(sopt, valp, sizeof(int));
2173 sockopt_setmbuf(struct sockopt *sopt, struct mbuf *m)
2180 if (sopt->sopt_size == 0) {
2181 error = sockopt_alloc(sopt, len, KM_NOSLEEP);
2186 sopt->sopt_retsize = MIN(sopt->sopt_size, len);
2187 m_copydata(m, 0, sopt->sopt_retsize, sopt->sopt_data);
2200 sockopt_getmbuf(const struct sockopt *sopt)
2204 if (sopt->sopt_size > MCLBYTES)
2211 if (sopt->sopt_size > MLEN) {
2219 memcpy(mtod(m, void *), sopt->sopt_data, sopt->sopt_size);
2220 m->m_len = sopt->sopt_size;