Lines Matching refs:mpo

454 	struct mptopt *mpo;
456 mpo = (how == M_WAITOK) ? zalloc(mptopt_zone) :
458 if (mpo != NULL) {
459 bzero(mpo, mptopt_zone_size);
462 return (mpo);
469 mptcp_sopt_free(struct mptopt *mpo)
471 VERIFY(!(mpo->mpo_flags & MPOF_ATTACHED));
473 zfree(mptopt_zone, mpo);
480 mptcp_sopt_insert(struct mptses *mpte, struct mptopt *mpo)
483 VERIFY(!(mpo->mpo_flags & MPOF_ATTACHED));
484 mpo->mpo_flags |= MPOF_ATTACHED;
485 TAILQ_INSERT_TAIL(&mpte->mpte_sopts, mpo, mpo_entry);
492 mptcp_sopt_remove(struct mptses *mpte, struct mptopt *mpo)
495 VERIFY(mpo->mpo_flags & MPOF_ATTACHED);
496 mpo->mpo_flags &= ~MPOF_ATTACHED;
497 TAILQ_REMOVE(&mpte->mpte_sopts, mpo, mpo_entry);
506 struct mptopt *mpo;
510 TAILQ_FOREACH(mpo, &mpte->mpte_sopts, mpo_entry) {
511 if (mpo->mpo_level == sopt->sopt_level &&
512 mpo->mpo_name == sopt->sopt_name)
515 VERIFY(mpo == NULL || sopt->sopt_valsize == sizeof (int));
517 return (mpo);
526 struct mptopt *mpo, *tmpo;
530 TAILQ_FOREACH_SAFE(mpo, &mpte->mpte_sopts, mpo_entry, tmpo) {
531 mptcp_sopt_remove(mpte, mpo);
532 mptcp_sopt_free(mpo);
591 struct mptopt smpo, *mpo, *tmpo;
669 TAILQ_FOREACH_SAFE(mpo, &mpte->mpte_sopts, mpo_entry, tmpo) {
672 if (!(mpo->mpo_flags & MPOF_SUBFLOW_OK))
680 if (mpo->mpo_level == SOL_SOCKET &&
681 (mpo->mpo_name == SO_NOSIGPIPE ||
682 mpo->mpo_name == SO_NOADDRERR ||
683 mpo->mpo_name == SO_KEEPALIVE))
686 interim = (mpo->mpo_flags & MPOF_INTERIM);
687 if (mptcp_subflow_sosetopt(mpte, *so, mpo) != 0 && interim) {
692 mptcp_sopt2str(mpo->mpo_level, mpo->mpo_name,
693 buf, sizeof (buf)), mpo->mpo_intval));
694 mptcp_sopt_remove(mpte, mpo);
695 mptcp_sopt_free(mpo);
2868 struct mptopt *mpo)
2875 VERIFY(mpo->mpo_flags & MPOF_SUBFLOW_OK);
2876 mpo->mpo_flags &= ~MPOF_INTERIM;
2883 sopt.sopt_level = mpo->mpo_level;
2884 sopt.sopt_name = mpo->mpo_name;
2885 sopt.sopt_val = CAST_USER_ADDR_T(&mpo->mpo_intval);
2894 mptcp_sopt2str(mpo->mpo_level, mpo->mpo_name,
2895 buf, sizeof (buf)), mpo->mpo_intval));
2900 mptcp_sopt2str(mpo->mpo_level, mpo->mpo_name,
2901 buf, sizeof (buf)), mpo->mpo_intval, error));
2913 struct mptopt *mpo)
2920 VERIFY(mpo->mpo_flags & MPOF_SUBFLOW_OK);
2926 sopt.sopt_level = mpo->mpo_level;
2927 sopt.sopt_name = mpo->mpo_name;
2928 sopt.sopt_val = CAST_USER_ADDR_T(&mpo->mpo_intval);
2937 mptcp_sopt2str(mpo->mpo_level, mpo->mpo_name,
2938 buf, sizeof (buf)), mpo->mpo_intval));
2942 mptcp_sopt2str(mpo->mpo_level,
2943 mpo->mpo_name, buf, sizeof (buf)), error));