sctp: improve consistency

No functional change intended.

MFC after:	3 days
This commit is contained in:
Michael Tuexen 2022-05-14 06:28:19 +02:00
parent 0817c8dc2a
commit 9b2a35b3a9
8 changed files with 50 additions and 57 deletions

View File

@ -541,8 +541,8 @@ sctp_process_asconf_set_primary(struct sockaddr *src,
/* notify upper layer */
sctp_ulp_notify(SCTP_NOTIFY_ASCONF_SET_PRIMARY, stcb, 0, sa, SCTP_SO_NOT_LOCKED);
if ((stcb->asoc.primary_destination->dest_state & SCTP_ADDR_REACHABLE) &&
(!(stcb->asoc.primary_destination->dest_state & SCTP_ADDR_PF)) &&
(stcb->asoc.alternate)) {
((stcb->asoc.primary_destination->dest_state & SCTP_ADDR_PF) == 0) &&
(stcb->asoc.alternate != NULL)) {
sctp_free_remote_addr(stcb->asoc.alternate);
stcb->asoc.alternate = NULL;
}

View File

@ -4157,7 +4157,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack,
* count, this is optional.
*/
net->error_count = 0;
if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) {
/* addr came good */
net->dest_state |= SCTP_ADDR_REACHABLE;
sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb,
@ -4900,7 +4900,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup,
* count, this is optional.
*/
net->error_count = 0;
if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) {
/* addr came good */
net->dest_state |= SCTP_ADDR_REACHABLE;
sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb,

View File

@ -620,7 +620,7 @@ sctp_handle_heartbeat_ack(struct sctp_heartbeat_chunk *cp,
/* Now lets do a RTO with this */
sctp_calculate_rto(stcb, &stcb->asoc, r_net, &tv,
SCTP_RTT_FROM_NON_DATA);
if (!(r_net->dest_state & SCTP_ADDR_REACHABLE)) {
if ((r_net->dest_state & SCTP_ADDR_REACHABLE) == 0) {
r_net->dest_state |= SCTP_ADDR_REACHABLE;
sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb,
0, (void *)r_net, SCTP_SO_NOT_LOCKED);
@ -2235,7 +2235,7 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset,
head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(tag,
SCTP_BASE_INFO(hashasocmark))];
LIST_FOREACH(stcb, head, sctp_asocs) {
if ((stcb->asoc.my_vtag == tag) && (stcb->rport == rport) && (inp == stcb->sctp_ep)) {
if ((stcb->asoc.my_vtag == tag) && (stcb->rport == rport) && (inp == stcb->sctp_ep)) {
-- SEND ABORT - TRY AGAIN --
}
}
@ -3616,7 +3616,7 @@ sctp_handle_str_reset_request_in(struct sctp_tcb *stcb,
seq = ntohl(req->request_seq);
if (asoc->str_reset_seq_in == seq) {
asoc->last_reset_action[1] = asoc->last_reset_action[0];
if (!(asoc->local_strreset_support & SCTP_ENABLE_RESET_STREAM_REQ)) {
if ((asoc->local_strreset_support & SCTP_ENABLE_RESET_STREAM_REQ) == 0) {
asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED;
} else if (trunc) {
/* Can't do it, since they exceeded our buffer size */
@ -3682,7 +3682,7 @@ sctp_handle_str_reset_request_tsn(struct sctp_tcb *stcb,
seq = ntohl(req->request_seq);
if (asoc->str_reset_seq_in == seq) {
asoc->last_reset_action[1] = stcb->asoc.last_reset_action[0];
if (!(asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ)) {
if ((asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ) == 0) {
asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED;
} else {
fwdtsn.ch.chunk_length = htons(sizeof(struct sctp_forward_tsn_chunk));
@ -3754,7 +3754,7 @@ sctp_handle_str_reset_request_out(struct sctp_tcb *stcb,
/* move the reset action back one */
asoc->last_reset_action[1] = asoc->last_reset_action[0];
if (!(asoc->local_strreset_support & SCTP_ENABLE_RESET_STREAM_REQ)) {
if ((asoc->local_strreset_support & SCTP_ENABLE_RESET_STREAM_REQ) == 0) {
asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED;
} else if (trunc) {
asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED;
@ -3825,7 +3825,7 @@ sctp_handle_str_reset_add_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk *ch
if (asoc->str_reset_seq_in == seq) {
num_stream += stcb->asoc.streamincnt;
stcb->asoc.last_reset_action[1] = stcb->asoc.last_reset_action[0];
if (!(asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ)) {
if ((asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ) == 0) {
asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED;
} else if ((num_stream > stcb->asoc.max_inbound_streams) ||
(num_stream > 0xffff)) {
@ -3915,7 +3915,7 @@ sctp_handle_str_reset_add_out_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk
/* Now what would be the new total? */
if (asoc->str_reset_seq_in == seq) {
stcb->asoc.last_reset_action[1] = stcb->asoc.last_reset_action[0];
if (!(asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ)) {
if ((asoc->local_strreset_support & SCTP_ENABLE_CHANGE_ASSOC_REQ) == 0) {
asoc->last_reset_action[0] = SCTP_STREAM_RESET_RESULT_DENIED;
} else if (stcb->asoc.stream_reset_outstanding) {
/* We must reject it we have something pending */
@ -4882,7 +4882,7 @@ sctp_process_control(struct mbuf *m, int iphlen, int *offset, int length,
*/
if ((stcb == NULL) &&
(!SCTP_IS_LISTENING(inp) ||
(!(inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) &&
(((inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) == 0) &&
inp->sctp_socket->sol_qlen >= inp->sctp_socket->sol_qlimit))) {
if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) &&
(SCTP_BASE_SYSCTL(sctp_abort_if_one_2_one_hits_limit))) {

View File

@ -2844,8 +2844,7 @@ sctp_select_nth_preferred_addr_from_ifn_boundall(struct sctp_ifn *ifn,
#ifdef INET6
if (stcb && fam == AF_INET6 &&
sctp_is_mobility_feature_on(stcb->sctp_ep, SCTP_MOBILITY_BASE)) {
if (sctp_v6src_match_nexthop(&sifa->address.sin6, ro)
== 0) {
if (sctp_v6src_match_nexthop(&sifa->address.sin6, ro) == 0) {
continue;
}
}
@ -7869,7 +7868,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp,
net->window_probe = 0;
if ((net != stcb->asoc.alternate) &&
((net->dest_state & SCTP_ADDR_PF) ||
(!(net->dest_state & SCTP_ADDR_REACHABLE)) ||
((net->dest_state & SCTP_ADDR_REACHABLE) == 0) ||
(net->dest_state & SCTP_ADDR_UNCONFIRMED))) {
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) {
sctp_log_cwnd(stcb, net, 1,
@ -10035,7 +10034,7 @@ sctp_chunk_output(struct sctp_inpcb *inp,
#endif
/* Check for bad destinations, if they exist move chunks around. */
TAILQ_FOREACH(net, &asoc->nets, sctp_next) {
if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) {
/*-
* if possible move things off of this address we
* still may send below due to the dormant state but
@ -10496,7 +10495,7 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked)
a_chk->sent = SCTP_DATAGRAM_UNSENT;
a_chk->whoTo = NULL;
if (!(asoc->last_data_chunk_from->dest_state & SCTP_ADDR_REACHABLE)) {
if ((asoc->last_data_chunk_from->dest_state & SCTP_ADDR_REACHABLE) == 0) {
/*-
* Ok, the destination for the SACK is unreachable, lets see if
* we can select an alternate to asoc->last_data_chunk_from

View File

@ -3504,8 +3504,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from)
}
}
inp->sctp_socket = NULL;
if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) !=
SCTP_PCB_FLAGS_UNBOUND) {
if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) == 0) {
/*
* ok, this guy has been bound. It's port is somewhere in
* the SCTP_BASE_INFO(hash table). Remove it!
@ -4265,7 +4264,7 @@ sctp_aloc_assoc_locked(struct sctp_inpcb *inp, struct sockaddr *firstaddr,
(sin->sin_addr.s_addr == INADDR_ANY) ||
(sin->sin_addr.s_addr == INADDR_BROADCAST) ||
IN_MULTICAST(ntohl(sin->sin_addr.s_addr)) ||
(((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) != 0) &&
((inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) &&
(SCTP_IPV6_V6ONLY(inp) != 0))) {
/* Invalid address */
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_PCB, EINVAL);
@ -6687,7 +6686,8 @@ sctp_set_primary_addr(struct sctp_tcb *stcb, struct sockaddr *sa,
return (0);
}
stcb->asoc.primary_destination = net;
if (!(net->dest_state & SCTP_ADDR_PF) && (stcb->asoc.alternate)) {
if (((net->dest_state & SCTP_ADDR_PF) == 0) &&
(stcb->asoc.alternate != NULL)) {
sctp_free_remote_addr(stcb->asoc.alternate);
stcb->asoc.alternate = NULL;
}

View File

@ -107,7 +107,7 @@ sctp_threshold_management(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
}
} else if ((net->pf_threshold < net->failure_threshold) &&
(net->error_count > net->pf_threshold)) {
if (!(net->dest_state & SCTP_ADDR_PF)) {
if ((net->dest_state & SCTP_ADDR_PF) == 0) {
net->dest_state |= SCTP_ADDR_PF;
net->last_active = sctp_get_tick_count();
sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED);
@ -355,7 +355,7 @@ sctp_find_alternate_net(struct sctp_tcb *stcb,
}
if (((alt->dest_state & SCTP_ADDR_REACHABLE) == SCTP_ADDR_REACHABLE) &&
(alt->ro.ro_nh != NULL) &&
(!(alt->dest_state & SCTP_ADDR_UNCONFIRMED)) &&
((alt->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) &&
(alt != net)) {
/* Found an alternate net, which is reachable. */
break;
@ -385,7 +385,7 @@ sctp_find_alternate_net(struct sctp_tcb *stcb,
break;
}
}
if ((!(alt->dest_state & SCTP_ADDR_UNCONFIRMED)) &&
if (((alt->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) &&
(alt != net)) {
/*
* Found an alternate net, which is
@ -931,7 +931,7 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp,
/* Backoff the timer and cwnd */
sctp_backoff_on_timeout(stcb, net, win_probe, num_mk, num_abandoned);
if ((!(net->dest_state & SCTP_ADDR_REACHABLE)) ||
if (((net->dest_state & SCTP_ADDR_REACHABLE) == 0) ||
(net->dest_state & SCTP_ADDR_PF)) {
/* Move all pending over too */
sctp_move_chunks_from_net(stcb, net);
@ -940,7 +940,7 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp,
* Get the address that failed, to force a new src address
* selection and a route allocation.
*/
if (net->ro._s_addr) {
if (net->ro._s_addr != NULL) {
sctp_free_ifa(net->ro._s_addr);
net->ro._s_addr = NULL;
}
@ -958,7 +958,7 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp,
* change-primary then this flag must be cleared
* from any net structures.
*/
if (stcb->asoc.alternate) {
if (stcb->asoc.alternate != NULL) {
sctp_free_remote_addr(stcb->asoc.alternate);
}
stcb->asoc.alternate = alt;
@ -1157,7 +1157,7 @@ sctp_strreset_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb)
atomic_add_int(&alt->ref_count, 1);
}
}
if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) {
/*
* If the address went un-reachable, we need to move to
* alternates for ALL chk's in queue
@ -1253,7 +1253,7 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
chk->sent = SCTP_DATAGRAM_RESEND;
chk->flags |= CHUNK_FLAGS_FRAGMENT_OK;
}
if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
if ((net->dest_state & SCTP_ADDR_REACHABLE) == 0) {
/*
* If the address went un-reachable, we need to move
* to the alternate for ALL chunks in queue
@ -1411,15 +1411,11 @@ int
sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
struct sctp_nets *net)
{
uint8_t net_was_pf;
bool net_was_pf;
if (net->dest_state & SCTP_ADDR_PF) {
net_was_pf = 1;
} else {
net_was_pf = 0;
}
net_was_pf = (net->dest_state & SCTP_ADDR_PF) != 0;
if (net->hb_responded == 0) {
if (net->ro._s_addr) {
if (net->ro._s_addr != NULL) {
/*
* Invalidate the src address if we did not get a
* response last time.
@ -1435,7 +1431,7 @@ sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
}
}
/* Zero PBA, if it needs it */
if (net->partial_bytes_acked) {
if (net->partial_bytes_acked > 0) {
net->partial_bytes_acked = 0;
}
if ((stcb->asoc.total_output_queue_size > 0) &&
@ -1443,11 +1439,11 @@ sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
(TAILQ_EMPTY(&stcb->asoc.sent_queue))) {
sctp_audit_stream_queues_for_size(inp, stcb);
}
if (!(net->dest_state & SCTP_ADDR_NOHB) &&
!((net_was_pf == 0) && (net->dest_state & SCTP_ADDR_PF))) {
if (((net->dest_state & SCTP_ADDR_NOHB) == 0) &&
(net_was_pf || ((net->dest_state & SCTP_ADDR_PF) == 0))) {
/*
* when move to PF during threshold management, a HB has
* been queued in that routine
* When moving to PF during threshold management, a HB has
* been queued in that routine.
*/
uint32_t ms_gone_by;

View File

@ -1422,8 +1422,7 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval,
}
}
#endif /* INET6 */
if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) ==
SCTP_PCB_FLAGS_UNBOUND) {
if (inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) {
/* Bind a ephemeral port */
error = sctp_inpcb_bind(so, NULL, NULL, p);
if (error) {
@ -5327,8 +5326,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
if (net != NULL) {
/************************NET SPECIFIC SET ******************/
if (paddrp->spp_flags & SPP_HB_DISABLE) {
if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED) &&
!(net->dest_state & SCTP_ADDR_NOHB)) {
if (((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) &&
((net->dest_state & SCTP_ADDR_NOHB) == 0)) {
sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net,
SCTP_FROM_SCTP_USRREQ + SCTP_LOC_9);
}
@ -5484,9 +5483,9 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
}
if (paddrp->spp_flags & SPP_HB_DISABLE) {
TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
if (!(net->dest_state & SCTP_ADDR_NOHB)) {
if ((net->dest_state & SCTP_ADDR_NOHB) == 0) {
net->dest_state |= SCTP_ADDR_NOHB;
if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED)) {
if ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) {
sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT,
inp, stcb, net,
SCTP_FROM_SCTP_USRREQ + SCTP_LOC_15);
@ -5800,11 +5799,11 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
if ((stcb != NULL) && (net != NULL)) {
if (net != stcb->asoc.primary_destination) {
if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED)) {
if ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) {
/* Ok we need to set it */
if (sctp_set_primary_addr(stcb, (struct sockaddr *)NULL, net) == 0) {
if ((stcb->asoc.alternate) &&
(!(net->dest_state & SCTP_ADDR_PF)) &&
((net->dest_state & SCTP_ADDR_PF) == 0) &&
(net->dest_state & SCTP_ADDR_REACHABLE)) {
sctp_free_remote_addr(stcb->asoc.alternate);
stcb->asoc.alternate = NULL;
@ -7015,8 +7014,7 @@ sctp_connect(struct socket *so, struct sockaddr *addr, struct thread *p)
goto out_now;
}
#endif
if ((inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) ==
SCTP_PCB_FLAGS_UNBOUND) {
if (inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) {
/* Bind a ephemeral port */
error = sctp_inpcb_bind(so, NULL, NULL, p);
if (error) {

View File

@ -1911,7 +1911,7 @@ sctp_timeout_handler(void *t)
#ifdef SCTP_AUDITING_ENABLED
sctp_auditing(4, inp, stcb, net);
#endif
if (!(net->dest_state & SCTP_ADDR_NOHB)) {
if ((net->dest_state & SCTP_ADDR_NOHB) == 0) {
sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net);
sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_HB_TMR, SCTP_SO_NOT_LOCKED);
did_output = true;
@ -2278,7 +2278,7 @@ sctp_timer_start(int t_type, struct sctp_inpcb *inp, struct sctp_tcb *stcb,
#endif
}
if ((net->dest_state & SCTP_ADDR_NOHB) &&
!(net->dest_state & SCTP_ADDR_UNCONFIRMED)) {
((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0)) {
SCTPDBG(SCTP_DEBUG_TIMER2,
"Timer type %d not started: inp=%p, stcb=%p, net=%p.\n",
t_type, inp, stcb, net);
@ -2300,8 +2300,8 @@ sctp_timer_start(int t_type, struct sctp_inpcb *inp, struct sctp_tcb *stcb,
} else {
to_ticks = UINT32_MAX;
}
if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED) &&
!(net->dest_state & SCTP_ADDR_PF)) {
if (((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) &&
((net->dest_state & SCTP_ADDR_PF) == 0)) {
if (net->heart_beat_delay < (UINT32_MAX - to_ticks)) {
to_ticks += net->heart_beat_delay;
} else {
@ -4887,7 +4887,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp,
}
return;
}
if (!(control->spec_flags & M_NOTIFICATION)) {
if ((control->spec_flags & M_NOTIFICATION) == 0) {
atomic_add_int(&inp->total_recvs, 1);
if (!control->do_not_ref_stcb) {
atomic_add_int(&stcb->total_recvs, 1);
@ -5054,7 +5054,7 @@ sctp_release_pr_sctp_chunk(struct sctp_tcb *stcb, struct sctp_tmit_chunk *tp1,
sid = tp1->rec.data.sid;
mid = tp1->rec.data.mid;
if (sent || !(tp1->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG)) {
if (sent || ((tp1->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0)) {
stcb->asoc.abandoned_sent[0]++;
stcb->asoc.abandoned_sent[PR_SCTP_POLICY(tp1->flags)]++;
stcb->asoc.strmout[sid].abandoned_sent[0]++;