Lines Matching refs:net
102 struct sctp_nets *net, uint16_t threshold) in sctp_threshold_management() argument
104 if (net) { in sctp_threshold_management()
105 net->error_count++; in sctp_threshold_management()
107 (void *)net, net->error_count, in sctp_threshold_management()
108 net->failure_threshold); in sctp_threshold_management()
109 if (net->error_count > net->failure_threshold) { in sctp_threshold_management()
111 if (net->dest_state & SCTP_ADDR_REACHABLE) { in sctp_threshold_management()
112 net->dest_state &= ~SCTP_ADDR_REACHABLE; in sctp_threshold_management()
113 net->dest_state &= ~SCTP_ADDR_REQ_PRIMARY; in sctp_threshold_management()
114 net->dest_state &= ~SCTP_ADDR_PF; in sctp_threshold_management()
117 (void *)net, SCTP_SO_NOT_LOCKED); in sctp_threshold_management()
119 } else if ((net->pf_threshold < net->failure_threshold) && in sctp_threshold_management()
120 (net->error_count > net->pf_threshold)) { in sctp_threshold_management()
121 if (!(net->dest_state & SCTP_ADDR_PF)) { in sctp_threshold_management()
122 net->dest_state |= SCTP_ADDR_PF; in sctp_threshold_management()
123 net->last_active = sctp_get_tick_count(); in sctp_threshold_management()
124 sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); in sctp_threshold_management()
126 inp, stcb, net, in sctp_threshold_management()
128 sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net); in sctp_threshold_management()
135 if (net) { in sctp_threshold_management()
136 if ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) { in sctp_threshold_management()
159 ((net == NULL) ? (uint32_t) 0 : (uint32_t) net->dest_state)); in sctp_threshold_management()
183 struct sctp_nets *net, argument
224 if (mnet == net) {
284 return (net);
330 mnet = net;
379 mnet = net;
396 (alt != net)) {
404 return (net);
411 struct sctp_nets *net, argument
415 if (net->RTO == 0) {
416 if (net->RTO_measured) {
417 net->RTO = stcb->asoc.minrto;
419 net->RTO = stcb->asoc.initial_rto;
422 net->RTO <<= 1;
423 if (net->RTO > stcb->asoc.maxrto) {
424 net->RTO = stcb->asoc.maxrto;
429 stcb->asoc.cc_functions.sctp_cwnd_update_after_timeout(stcb, net);
482 struct sctp_nets *net, argument
516 cur_rto = (net->lastsa >> SCTP_RTT_SHIFT) + net->lastsv;
523 sctp_log_fr(net->flight_size, 0, 0, SCTP_FR_CWND_REPORT);
524 sctp_log_fr(net->flight_size, net->cwnd, stcb->asoc.total_flight, SCTP_FR_CWND_REPORT);
551 orig_flight = net->flight_size;
554 net->fast_retran_ip = 0;
580 if ((chk->whoTo == net) && (chk->sent < SCTP_DATAGRAM_ACKED)) {
672 net->marked_retrans++;
700 if (alt != net) {
728 if ((orig_flight - net->flight_size) != (orig_tf - stcb->asoc.total_flight)) {
755 if ((chk->whoTo == net) &&
788 (void *)net);
821 struct sctp_nets *net) argument
833 if (net == lnet) {
842 (stcb->asoc.total_flight < net->mtu)) {
851 if (sctp_threshold_management(inp, stcb, net,
856 if (net != stcb->asoc.primary_destination) {
862 if (net->last_sent_time.tv_sec) {
863 ms_goneby = (now.tv_sec - net->last_sent_time.tv_sec) * 1000;
867 if ((net->dest_state & SCTP_ADDR_PF) == 0) {
868 if ((ms_goneby > net->RTO) || (net->RTO == 0)) {
873 sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED);
892 if (net->pf_threshold < net->failure_threshold) {
893 alt = sctp_find_alternate_net(stcb, net, 2);
900 alt = sctp_find_alternate_net(stcb, net, 1);
908 net->find_pseudo_cumack = 1;
909 net->find_rtx_pseudo_cumack = 1;
912 alt = sctp_find_alternate_net(stcb, net, 0);
917 (void)sctp_mark_all_for_resend(stcb, net, alt, win_probe,
923 net->fast_retran_loss_recovery = 0;
925 (net->flight_size == 0)) {
926 (*stcb->asoc.cc_functions.sctp_cwnd_new_transmission_begins)(stcb, net);
936 sctp_backoff_on_timeout(stcb, net, win_probe, num_mk, num_abandoned);
937 if ((!(net->dest_state & SCTP_ADDR_REACHABLE)) ||
938 (net->dest_state & SCTP_ADDR_PF)) {
940 sctp_move_chunks_from_net(stcb, net);
946 if (net->ro._s_addr) {
947 sctp_free_ifa(net->ro._s_addr);
948 net->ro._s_addr = NULL;
950 net->src_addr_selected = 0;
954 RO_NHFREE(&net->ro);
956 if (net->ro.ro_rt) {
957 RTFREE(net->ro.ro_rt);
958 net->ro.ro_rt = NULL;
963 if ((stcb->asoc.primary_destination == net) && (alt != net)) {
987 sctp_timer_start(SCTP_TIMER_TYPE_SEND, inp, stcb, net);
1009 sctp_log_cwnd(stcb, net, net->cwnd, SCTP_CWND_LOG_FROM_RTX);
1017 struct sctp_nets *net) argument
1032 if (sctp_threshold_management(inp, stcb, net,
1039 if (stcb->asoc.initial_init_rto_max < net->RTO) {
1040 net->RTO = stcb->asoc.initial_init_rto_max;
1065 struct sctp_nets *net SCTP_UNUSED)
1130 struct sctp_nets *alt, *net; local
1141 net = strrst->whoTo;
1143 if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) {
1151 sctp_backoff_on_timeout(stcb, net, 1, 0, 0);
1152 alt = sctp_find_alternate_net(stcb, net, 0);
1158 if ((chk->whoTo == net) &&
1170 if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
1175 sctp_move_chunks_from_net(stcb, net);
1177 sctp_free_remote_addr(net);
1192 struct sctp_nets *net) argument
1200 sctp_send_asconf(stcb, net, SCTP_ADDR_NOT_LOCKED);
1211 net = asconf->whoTo;
1213 if (sctp_threshold_management(inp, stcb, net,
1233 sctp_backoff_on_timeout(stcb, net, 1, 0, 0);
1234 alt = sctp_find_alternate_net(stcb, net, 0);
1242 if ((chk->whoTo == net) &&
1265 if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
1270 sctp_move_chunks_from_net(stcb, net);
1272 sctp_free_remote_addr(net);
1311 struct sctp_nets *net) argument
1316 if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) {
1320 sctp_backoff_on_timeout(stcb, net, 1, 0, 0);
1322 alt = sctp_find_alternate_net(stcb, net, 0);
1334 struct sctp_nets *net) argument
1339 if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) {
1343 sctp_backoff_on_timeout(stcb, net, 1, 0, 0);
1345 alt = sctp_find_alternate_net(stcb, net, 0);
1421 struct sctp_nets *net) argument
1425 if (net->dest_state & SCTP_ADDR_PF) {
1430 if (net->hb_responded == 0) {
1431 if (net->ro._s_addr) {
1435 sctp_free_ifa(net->ro._s_addr);
1436 net->ro._s_addr = NULL;
1437 net->src_addr_selected = 0;
1439 sctp_backoff_on_timeout(stcb, net, 1, 0, 0);
1440 if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) {
1446 if (net->partial_bytes_acked) {
1447 net->partial_bytes_acked = 0;
1454 if (!(net->dest_state & SCTP_ADDR_NOHB) &&
1455 !((net_was_pf == 0) && (net->dest_state & SCTP_ADDR_PF))) {
1460 if ((net->last_sent_time.tv_sec > 0) ||
1461 (net->last_sent_time.tv_usec > 0)) {
1466 timevalsub(&diff, &net->last_sent_time);
1471 timersub(&now, &net->last_sent_time, &diff);
1478 if ((ms_gone_by >= net->heart_beat_delay) ||
1479 (net->dest_state & SCTP_ADDR_PF)) {
1480 sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED);
1489 struct sctp_nets *net) argument
1493 next_mtu = sctp_get_next_mtu(net->mtu);
1495 if ((next_mtu > net->mtu) && (net->port == 0)) {
1496 if ((net->src_addr_selected == 0) ||
1497 (net->ro._s_addr == NULL) ||
1498 (net->ro._s_addr->localifa_flags & SCTP_BEING_DELETED)) {
1499 if ((net->ro._s_addr != NULL) && (net->ro._s_addr->localifa_flags & SCTP_BEING_DELETED)) {
1500 sctp_free_ifa(net->ro._s_addr);
1501 net->ro._s_addr = NULL;
1502 net->src_addr_selected = 0;
1503 } else if (net->ro._s_addr == NULL) {
1505 if (net->ro._l_addr.sa.sa_family == AF_INET6) {
1506 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&net->ro._l_addr;
1522 net->ro._s_addr = sctp_source_address_selection(inp,
1524 (sctp_route_t *)&net->ro,
1525 net, 0, stcb->asoc.vrf_id);
1527 if (net->ro._l_addr.sa.sa_family == AF_INET6) {
1528 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&net->ro._l_addr;
1537 if (net->ro._s_addr)
1538 net->src_addr_selected = 1;
1540 if (net->ro._s_addr) {
1542 mtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._s_addr.sa, net->ro.ro_nh);
1544 mtu = SCTP_GATHER_MTU_FROM_ROUTE(net->ro._s_addr, &net->ro._s_addr.sa, net->ro.ro_rt);
1547 if (net->port) {
1552 net->mtu = next_mtu;
1554 net->mtu = mtu;
1559 sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net);
1601 struct sctp_nets *net; local
1610 net = stcb->asoc.alternate;
1612 net = stcb->asoc.primary_destination;
1614 sctp_send_shutdown(stcb, net);
1616 stcb->sctp_ep, stcb, net);