Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/ip6_output.c
| Show First 20 Lines • Show All 1,642 Lines • ▼ Show 20 Lines | #define IPV6_PKTOPTIONS_MBUF_LIMIT ((u_long)nmbclusters * MCLBYTES / 4) | ||||
| if (level != IPPROTO_IPV6) { | if (level != IPPROTO_IPV6) { | ||||
| error = EINVAL; | error = EINVAL; | ||||
| if (sopt->sopt_level == SOL_SOCKET && | if (sopt->sopt_level == SOL_SOCKET && | ||||
| sopt->sopt_dir == SOPT_SET) { | sopt->sopt_dir == SOPT_SET) { | ||||
| switch (sopt->sopt_name) { | switch (sopt->sopt_name) { | ||||
| case SO_SETFIB: | case SO_SETFIB: | ||||
| error = sooptcopyin(sopt, &optval, | |||||
| sizeof(optval), sizeof(optval)); | |||||
| if (error != 0) | |||||
| break; | |||||
| INP_WLOCK(inp); | INP_WLOCK(inp); | ||||
| inp->inp_inc.inc_fibnum = so->so_fibnum; | if ((inp->inp_flags & INP_BOUNDFIB) != 0 && | ||||
| optval != so->so_fibnum) { | |||||
| INP_WUNLOCK(inp); | INP_WUNLOCK(inp); | ||||
| error = 0; | error = EISCONN; | ||||
| break; | |||||
| } | |||||
| error = sosetfib(inp->inp_socket, optval); | |||||
| if (error == 0) | |||||
| inp->inp_inc.inc_fibnum = optval; | |||||
| INP_WUNLOCK(inp); | |||||
| break; | break; | ||||
| case SO_MAX_PACING_RATE: | case SO_MAX_PACING_RATE: | ||||
| #ifdef RATELIMIT | #ifdef RATELIMIT | ||||
| INP_WLOCK(inp); | INP_WLOCK(inp); | ||||
| inp->inp_flags2 |= INP_RATE_LIMIT_CHANGED; | inp->inp_flags2 |= INP_RATE_LIMIT_CHANGED; | ||||
| INP_WUNLOCK(inp); | INP_WUNLOCK(inp); | ||||
| error = 0; | error = 0; | ||||
| #else | #else | ||||
| ▲ Show 20 Lines • Show All 1,706 Lines • Show Last 20 Lines | |||||