Lines Matching defs:net

882 	struct sctp_nets *net;
1054 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
1055 if (net->ro._l_addr.sa.sa_family != from->sa_family) {
1065 sin = (struct sockaddr_in *)&net->ro._l_addr;
1071 *netp = net;
1089 sin6 = (struct sockaddr_in6 *)&net->ro._l_addr;
1095 *netp = net;
1135 struct sctp_nets *net;
1212 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
1214 if (net == (TAILQ_NEXT(net, sctp_next))) {
1215 panic("Corrupt net list");
1218 if (net->ro._l_addr.sa.sa_family !=
1231 &net->ro._l_addr;
1237 *netp = net;
1261 sin6 = (struct sockaddr_in6 *)&net->ro._l_addr;
1267 *netp = net;
1313 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
1315 if (net == (TAILQ_NEXT(net, sctp_next))) {
1316 panic("Corrupt net list");
1319 if (net->ro._l_addr.sa.sa_family !=
1332 &net->ro._l_addr;
1338 *netp = net;
1362 &net->ro._l_addr;
1368 *netp = net;
1992 struct sctp_nets *net;
2056 net = sctp_findnet(stcb, from);
2057 if (net) {
2059 *netp = net;
2484 struct sctp_nets *net;
2559 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
2561 stcb, net);
2627 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
2628 if (net->pmtu_timer.ep == old_inp) {
2630 net->pmtu_timer.ep = new_inp;
2633 if (net->hb_timer.ep == old_inp) {
2635 net->hb_timer.ep = new_inp;
2638 if (net->rxt_timer.ep == old_inp) {
2640 net->rxt_timer.ep = new_inp;
3490 * no need to free the net count, since at this point all
3559 struct sctp_nets *net;
3562 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
3563 if (sctp_cmpaddr(addr, (struct sockaddr *)&net->ro._l_addr))
3564 return (net);
3596 struct sctp_nets *net, *netfirst;
3714 net = SCTP_ZONE_GET(SCTP_BASE_INFO(ipi_zone_net), struct sctp_nets);
3715 if (net == NULL) {
3719 memset(net, 0, sizeof(struct sctp_nets));
3720 (void)SCTP_GETTIME_TIMEVAL(&net->start_time);
3721 memcpy(&net->ro._l_addr, newaddr, newaddr->sa_len);
3725 ((struct sockaddr_in *)&net->ro._l_addr)->sin_port = stcb->rport;
3730 ((struct sockaddr_in6 *)&net->ro._l_addr)->sin6_port = stcb->rport;
3736 net->addr_is_local = sctp_is_address_on_local_host(newaddr, stcb->asoc.vrf_id);
3737 if (net->addr_is_local && ((set_scope || (from == SCTP_ADDR_IS_CONFIRMED)))) {
3744 net->failure_threshold = stcb->asoc.def_net_failure;
3745 net->pf_threshold = stcb->asoc.def_net_pf_threshold;
3747 net->dest_state = (SCTP_ADDR_REACHABLE |
3752 net->dest_state = SCTP_ADDR_REACHABLE;
3754 net->dest_state = SCTP_ADDR_REACHABLE |
3761 net->rto_needed = 1;
3762 net->RTO = 0;
3763 net->RTO_measured = 0;
3765 net->ref_count = 1;
3766 net->cwr_window_tsn = net->last_cwr_tsn = stcb->asoc.sending_seq - 1;
3767 net->port = port;
3768 net->dscp = stcb->asoc.default_dscp;
3770 net->flowlabel = stcb->asoc.default_flowlabel;
3773 net->dest_state |= SCTP_ADDR_NOHB;
3775 net->dest_state &= ~SCTP_ADDR_NOHB;
3778 net->dest_state |= SCTP_ADDR_NO_PMTUD;
3780 net->dest_state &= ~SCTP_ADDR_NO_PMTUD;
3782 net->heart_beat_delay = stcb->asoc.heart_beat_delay;
3784 SCTP_OS_TIMER_INIT(&net->rxt_timer.timer);
3785 SCTP_OS_TIMER_INIT(&net->pmtu_timer.timer);
3786 SCTP_OS_TIMER_INIT(&net->hb_timer.timer);
3794 sin6 = (struct sockaddr_in6 *)&net->ro._l_addr;
3799 SCTP_RTALLOC((sctp_route_t *)&net->ro,
3803 net->src_addr_selected = 0;
3804 if (SCTP_ROUTE_HAS_VALID_IFN(&net->ro)) {
3806 net->ro._s_addr = sctp_source_address_selection(stcb->sctp_ep,
3808 (sctp_route_t *)&net->ro,
3809 net,
3813 net->mtu = stcb->asoc.default_mtu;
3814 switch (net->ro._l_addr.sa.sa_family) {
3817 net->mtu += SCTP_MIN_V4_OVERHEAD;
3822 net->mtu += SCTP_MIN_OVERHEAD;
3829 if (net->port) {
3830 net->mtu += (uint32_t)sizeof(struct udphdr);
3833 } else if (net->ro._s_addr != NULL) {
3836 net->src_addr_selected = 1;
3838 if (net->ro._s_addr->ifn_p != NULL) {
3841 * net->ro._s_addr->ifn_p->ifn_mtu
3843 imtu = SCTP_GATHER_MTU_FROM_IFN_INFO(net->ro._s_addr->ifn_p->ifn_p,
3844 net->ro._s_addr->ifn_p->ifn_index);
3848 rmtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._l_addr.sa, net->ro.ro_nh);
3849 hcmtu = sctp_hc_get_mtu(&net->ro._l_addr, stcb->sctp_ep->fibnum);
3850 net->mtu = sctp_min_mtu(hcmtu, rmtu, imtu);
3853 if (net->mtu == 0) {
3855 net->mtu = stcb->asoc.default_mtu;
3856 switch (net->ro._l_addr.sa.sa_family) {
3859 net->mtu += SCTP_MIN_V4_OVERHEAD;
3864 net->mtu += SCTP_MIN_OVERHEAD;
3871 if (net->port) {
3872 net->mtu += (uint32_t)sizeof(struct udphdr);
3879 net->mtu = SCTP_DEFAULT_MTU;
3884 net->mtu = 1280;
3893 if (net->port) {
3894 net->mtu -= (uint32_t)sizeof(struct udphdr);
3898 stcb->asoc.smallest_mtu = net->mtu;
3900 if (stcb->asoc.smallest_mtu > net->mtu) {
3901 sctp_pathmtu_adjustment(stcb, net->mtu, true);
3907 sin6 = (struct sockaddr_in6 *)&net->ro._l_addr;
3914 (*stcb->asoc.cc_functions.sctp_set_initial_cc_param) (stcb, net);
3920 net->find_pseudo_cumack = 1;
3921 net->find_rtx_pseudo_cumack = 1;
3923 net->flowid = stcb->asoc.my_vtag ^
3926 net->flowtype = M_HASHTYPE_OPAQUE_HASH;
3928 *netp = net;
3931 if (net->ro.ro_nh == NULL) {
3933 TAILQ_INSERT_TAIL(&stcb->asoc.nets, net, sctp_next);
3936 TAILQ_INSERT_HEAD(&stcb->asoc.nets, net, sctp_next);
3942 TAILQ_INSERT_HEAD(&stcb->asoc.nets, net, sctp_next);
3943 } else if (net->ro.ro_nh->nh_ifp != netfirst->ro.ro_nh->nh_ifp) {
3948 TAILQ_INSERT_HEAD(&stcb->asoc.nets, net, sctp_next);
3962 TAILQ_INSERT_TAIL(&stcb->asoc.nets, net, sctp_next);
3966 TAILQ_INSERT_BEFORE(netfirst, net, sctp_next);
3968 } else if (netlook->ro.ro_nh->nh_ifp != net->ro.ro_nh->nh_ifp) {
3970 net, sctp_next);
3980 stcb->asoc.primary_destination = net;
3982 (net->ro.ro_nh) &&
3983 ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0)) {
3985 stcb->asoc.primary_destination = net;
3988 net = TAILQ_FIRST(&stcb->asoc.nets);
3989 if ((net != stcb->asoc.primary_destination) &&
4311 sctp_remove_net(struct sctp_tcb *stcb, struct sctp_nets *net)
4319 TAILQ_REMOVE(&asoc->nets, net, sctp_next);
4320 if (net == asoc->primary_destination) {
4339 asoc->deleted_primary = net;
4340 atomic_add_int(&net->ref_count, 1);
4341 memset(&net->lastsa, 0, sizeof(net->lastsa));
4342 memset(&net->lastsv, 0, sizeof(net->lastsv));
4352 if (net == asoc->last_data_chunk_from) {
4356 if (net == asoc->last_control_chunk_from) {
4357 /* Clear net */
4360 if (net == asoc->last_net_cmt_send_started) {
4361 /* Clear net */
4364 if (net == stcb->asoc.alternate) {
4368 sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net,
4370 sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net,
4372 net->dest_state |= SCTP_ADDR_BEING_DELETED;
4373 sctp_free_remote_addr(net);
4391 struct sctp_nets *net, *nnet;
4396 TAILQ_FOREACH_SAFE(net, &asoc->nets, sctp_next, nnet) {
4397 if (net->ro._l_addr.sa.sa_family != remaddr->sa_family) {
4400 if (sctp_cmpaddr((struct sockaddr *)&net->ro._l_addr,
4407 sctp_remove_net(stcb, net);
4535 * We don't free the address here since all the net's were
4557 struct sctp_nets *net, *nnet;
4809 if (sp->net) {
4810 sctp_free_remote_addr(sp->net);
4811 sp->net = NULL;
4967 TAILQ_FOREACH_SAFE(net, &asoc->nets, sctp_next, nnet) {
4970 panic("no net's left alloc'ed, or list points to itself");
4973 TAILQ_REMOVE(&asoc->nets, net, sctp_next);
4974 sctp_free_remote_addr(net);
5221 * select a new (hopefully reachable) destination net (should only be used
5223 * the destination net)
5228 struct sctp_nets *net;
5230 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
5232 if (net->dest_state & SCTP_ADDR_UNCONFIRMED)
5235 (struct sockaddr *)&net->ro._l_addr)) {
5237 stcb->asoc.primary_destination = net;
5284 struct sctp_nets *net;
5294 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
5295 if (net->ro._s_addr == laddr->ifa) {
5297 RO_NHFREE(&net->ro);
5298 sctp_free_ifa(net->ro._s_addr);
5299 net->ro._s_addr = NULL;
5300 net->src_addr_selected = 0;
5594 TUNABLE_INT_FETCH("net.inet.sctp.tcbhashsize", &SCTP_BASE_SYSCTL(sctp_hashtblsize));
5595 TUNABLE_INT_FETCH("net.inet.sctp.pcbhashsize", &SCTP_BASE_SYSCTL(sctp_pcbtblsize));
5596 TUNABLE_INT_FETCH("net.inet.sctp.chunkscale", &SCTP_BASE_SYSCTL(sctp_chunkscale));
5867 struct sctp_nets *net, *nnet, *net_tmp;
5929 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
5931 net->dest_state |= SCTP_ADDR_NOT_IN_ASSOC;
6019 stcb_tmp = sctp_findassociation_ep_addr(&inp, sa, &net,
6048 if (net != NULL) {
6050 net->dest_state &=
6118 stcb_tmp = sctp_findassociation_ep_addr(&inp, sa, &net,
6148 if (net != NULL) {
6150 net->dest_state &=
6448 TAILQ_FOREACH_SAFE(net, &stcb->asoc.nets, sctp_next, nnet) {
6449 if ((net->dest_state & SCTP_ADDR_NOT_IN_ASSOC) ==
6454 TAILQ_REMOVE(&stcb->asoc.nets, net, sctp_next);
6455 if (net == stcb->asoc.alternate) {
6459 if (net == stcb->asoc.primary_destination) {
6463 sctp_free_remote_addr(net);
6554 struct sctp_nets *net)
6557 if (net == NULL && sa)
6558 net = sctp_findnet(stcb, sa);
6560 if (net == NULL) {
6565 if (net->dest_state & SCTP_ADDR_UNCONFIRMED) {
6567 net->dest_state |= SCTP_ADDR_REQ_PRIMARY;
6570 stcb->asoc.primary_destination = net;
6571 if (((net->dest_state & SCTP_ADDR_PF) == 0) &&
6576 net = TAILQ_FIRST(&stcb->asoc.nets);
6577 if (net != stcb->asoc.primary_destination) {