* return 0 on success, error-num on failure */
| 14833 | * return 0 on success, error-num on failure |
| 14834 | */ |
| 14835 | static int |
| 14836 | bbr_ctloutput(struct socket *so, struct sockopt *sopt, struct inpcb *inp, struct tcpcb *tp) |
| 14837 | { |
| 14838 | int32_t error = EINVAL; |
| 14839 | struct tcp_bbr *bbr; |
| 14840 | |
| 14841 | bbr = (struct tcp_bbr *)tp->t_fb_ptr; |
| 14842 | if (bbr == NULL) { |
| 14843 | /* Huh? */ |
| 14844 | goto out; |
| 14845 | } |
| 14846 | if (sopt->sopt_dir == SOPT_SET) { |
| 14847 | return (bbr_set_sockopt(so, sopt, inp, tp, bbr)); |
| 14848 | } else if (sopt->sopt_dir == SOPT_GET) { |
| 14849 | return (bbr_get_sockopt(so, sopt, inp, tp, bbr)); |
| 14850 | } |
| 14851 | out: |
| 14852 | INP_WUNLOCK(inp); |
| 14853 | return (error); |
| 14854 | } |
| 14855 | |
| 14856 | static int |
| 14857 | bbr_pru_options(struct tcpcb *tp, int flags) |
nothing calls this directly
no test coverage detected