Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_usrreq.c
Show First 20 Lines • Show All 2,043 Lines • ▼ Show 20 Lines | case TCP_NOPUSH: | ||||
NET_EPOCH_ENTER(et); | NET_EPOCH_ENTER(et); | ||||
error = tp->t_fb->tfb_tcp_output(tp); | error = tp->t_fb->tfb_tcp_output(tp); | ||||
NET_EPOCH_EXIT(et); | NET_EPOCH_EXIT(et); | ||||
} | } | ||||
} | } | ||||
goto unlock_and_done; | goto unlock_and_done; | ||||
case TCP_REMOTE_UDP_ENCAPS_PORT: | |||||
INP_WUNLOCK(inp); | |||||
error = sooptcopyin(sopt, &optval, sizeof optval, | |||||
sizeof optval); | |||||
if (error) | |||||
return (error); | |||||
if ((optval < TCP_TUNNELING_PORT_MIN) || | |||||
(optval > TCP_TUNNELING_PORT_MAX)) { | |||||
/* Its got to be in range */ | |||||
return (EINVAL); | |||||
} | |||||
if ((V_tcp_udp_tunneling_port == 0) && (optval != 0)) { | |||||
/* You have to have enabled a UDP tunneling port first */ | |||||
return (EINVAL); | |||||
} | |||||
INP_WLOCK_RECHECK(inp); | |||||
if (tp->t_state != TCPS_CLOSED) { | |||||
/* You can't change after you are connected */ | |||||
error = EINVAL; | |||||
} else { | |||||
/* Ok we are all good set the port */ | |||||
tp->t_port = htons(optval); | |||||
} | |||||
goto unlock_and_done; | |||||
case TCP_MAXSEG: | case TCP_MAXSEG: | ||||
INP_WUNLOCK(inp); | INP_WUNLOCK(inp); | ||||
error = sooptcopyin(sopt, &optval, sizeof optval, | error = sooptcopyin(sopt, &optval, sizeof optval, | ||||
sizeof optval); | sizeof optval); | ||||
if (error) | if (error) | ||||
return (error); | return (error); | ||||
INP_WLOCK_RECHECK(inp); | INP_WLOCK_RECHECK(inp); | ||||
▲ Show 20 Lines • Show All 320 Lines • ▼ Show 20 Lines | #endif | ||||
case TCP_NODELAY: | case TCP_NODELAY: | ||||
optval = tp->t_flags & TF_NODELAY; | optval = tp->t_flags & TF_NODELAY; | ||||
INP_WUNLOCK(inp); | INP_WUNLOCK(inp); | ||||
error = sooptcopyout(sopt, &optval, sizeof optval); | error = sooptcopyout(sopt, &optval, sizeof optval); | ||||
break; | break; | ||||
case TCP_MAXSEG: | case TCP_MAXSEG: | ||||
optval = tp->t_maxseg; | optval = tp->t_maxseg; | ||||
INP_WUNLOCK(inp); | |||||
error = sooptcopyout(sopt, &optval, sizeof optval); | |||||
break; | |||||
case TCP_REMOTE_UDP_ENCAPS_PORT: | |||||
optval = ntohs(tp->t_port); | |||||
INP_WUNLOCK(inp); | INP_WUNLOCK(inp); | ||||
error = sooptcopyout(sopt, &optval, sizeof optval); | error = sooptcopyout(sopt, &optval, sizeof optval); | ||||
break; | break; | ||||
case TCP_NOOPT: | case TCP_NOOPT: | ||||
optval = tp->t_flags & TF_NOOPT; | optval = tp->t_flags & TF_NOOPT; | ||||
INP_WUNLOCK(inp); | INP_WUNLOCK(inp); | ||||
error = sooptcopyout(sopt, &optval, sizeof optval); | error = sooptcopyout(sopt, &optval, sizeof optval); | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 571 Lines • Show Last 20 Lines |