Lines Matching refs:dsn_opt
516 #define DO_FIN(dsn_opt) { \ in mptcp_setup_opts() argument
518 sndfin = mptcp_ok_to_fin(tp, dsn_opt.mdss_dsn, len); \ in mptcp_setup_opts()
520 dsn_opt.mdss_copt.mdss_flags |= MDSS_F; \ in mptcp_setup_opts()
521 dsn_opt.mdss_data_len += 1; \ in mptcp_setup_opts()
609 struct mptcp_dsn_opt dsn_opt; in mptcp_setup_opts() local
619 bzero(&dsn_opt, sizeof(dsn_opt)); in mptcp_setup_opts()
620 dsn_opt.mdss_copt.mdss_kind = TCPOPT_MULTIPATH; in mptcp_setup_opts()
621 dsn_opt.mdss_copt.mdss_subtype = MPO_DSS; in mptcp_setup_opts()
622 dsn_opt.mdss_copt.mdss_len = dssoptlen; in mptcp_setup_opts()
623 dsn_opt.mdss_copt.mdss_flags |= MDSS_M; in mptcp_setup_opts()
627 mptcp_output_getm_dsnmap32(so, off, &dsn_opt.mdss_dsn, in mptcp_setup_opts()
628 &dsn_opt.mdss_subflow_seqn, in mptcp_setup_opts()
629 &dsn_opt.mdss_data_len, in mptcp_setup_opts()
632 if ((dsn_opt.mdss_data_len == 0) || in mptcp_setup_opts()
633 (dsn_opt.mdss_dsn == 0)) { in mptcp_setup_opts()
638 DO_FIN(dsn_opt); in mptcp_setup_opts()
641 dsn_opt.mdss_dsn = htonl(dsn_opt.mdss_dsn); in mptcp_setup_opts()
642 dsn_opt.mdss_subflow_seqn = htonl(dsn_opt.mdss_subflow_seqn); in mptcp_setup_opts()
643 dsn_opt.mdss_data_len = htons(dsn_opt.mdss_data_len); in mptcp_setup_opts()
644 memcpy(opt + optlen, &dsn_opt, sizeof(dsn_opt)); in mptcp_setup_opts()
646 *((uint16_t *)(void *)(opt + optlen + sizeof(dsn_opt))) = dss_csum; in mptcp_setup_opts()