Improve compilation on windows 64-bit (for the userland stack).
MFC after: 1 week
This commit is contained in:
parent
dae532b324
commit
1af093855e
@ -68,6 +68,8 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
/* Largest length of a chunk */
|
||||
#define SCTP_MAX_CHUNK_LENGTH 0xffff
|
||||
/* Largest length of an error cause */
|
||||
#define SCTP_MAX_CAUSE_LENGTH 0xffff
|
||||
/* Number of addresses where we just skip the counting */
|
||||
#define SCTP_COUNT_LIMIT 40
|
||||
|
||||
|
@ -2495,7 +2495,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length,
|
||||
if (op_err != NULL) {
|
||||
cause = mtod(op_err, struct sctp_gen_error_cause *);
|
||||
cause->code = htons(SCTP_CAUSE_UNRECOG_CHUNK);
|
||||
cause->length = htons(chk_length + sizeof(struct sctp_gen_error_cause));
|
||||
cause->length = htons((uint16_t) (chk_length + sizeof(struct sctp_gen_error_cause)));
|
||||
SCTP_BUF_LEN(op_err) = sizeof(struct sctp_gen_error_cause);
|
||||
SCTP_BUF_NEXT(op_err) = SCTP_M_COPYM(m, *offset, chk_length, M_NOWAIT);
|
||||
if (SCTP_BUF_NEXT(op_err) != NULL) {
|
||||
@ -2688,7 +2688,7 @@ sctp_process_segment_range(struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_GAP,
|
||||
tp1->whoTo->flight_size,
|
||||
tp1->book_size,
|
||||
(uintptr_t) tp1->whoTo,
|
||||
(uint32_t) (uintptr_t) tp1->whoTo,
|
||||
tp1->rec.data.TSN_seq);
|
||||
}
|
||||
sctp_flight_size_decrease(tp1);
|
||||
@ -2897,7 +2897,7 @@ sctp_check_for_revoked(struct sctp_tcb *stcb,
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_UP_REVOKE,
|
||||
tp1->whoTo->flight_size,
|
||||
tp1->book_size,
|
||||
(uintptr_t) tp1->whoTo,
|
||||
(uint32_t) (uintptr_t) tp1->whoTo,
|
||||
tp1->rec.data.TSN_seq);
|
||||
}
|
||||
sctp_flight_size_increase(tp1);
|
||||
@ -3211,7 +3211,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc,
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_RSND,
|
||||
(tp1->whoTo ? (tp1->whoTo->flight_size) : 0),
|
||||
tp1->book_size,
|
||||
(uintptr_t) tp1->whoTo,
|
||||
(uint32_t) (uintptr_t) tp1->whoTo,
|
||||
tp1->rec.data.TSN_seq);
|
||||
}
|
||||
if (tp1->whoTo) {
|
||||
@ -3523,7 +3523,7 @@ sctp_window_probe_recovery(struct sctp_tcb *stcb,
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_DWN_WP_FWD,
|
||||
tp1->whoTo ? tp1->whoTo->flight_size : 0,
|
||||
tp1->book_size,
|
||||
(uintptr_t) tp1->whoTo,
|
||||
(uint32_t) (uintptr_t) tp1->whoTo,
|
||||
tp1->rec.data.TSN_seq);
|
||||
return;
|
||||
}
|
||||
@ -3542,7 +3542,7 @@ sctp_window_probe_recovery(struct sctp_tcb *stcb,
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_WP,
|
||||
tp1->whoTo->flight_size,
|
||||
tp1->book_size,
|
||||
(uintptr_t) tp1->whoTo,
|
||||
(uint32_t) (uintptr_t) tp1->whoTo,
|
||||
tp1->rec.data.TSN_seq);
|
||||
}
|
||||
}
|
||||
@ -3661,7 +3661,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack,
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_CA,
|
||||
tp1->whoTo->flight_size,
|
||||
tp1->book_size,
|
||||
(uintptr_t) tp1->whoTo,
|
||||
(uint32_t) (uintptr_t) tp1->whoTo,
|
||||
tp1->rec.data.TSN_seq);
|
||||
}
|
||||
sctp_flight_size_decrease(tp1);
|
||||
@ -4302,7 +4302,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup,
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_CA,
|
||||
tp1->whoTo->flight_size,
|
||||
tp1->book_size,
|
||||
(uintptr_t) tp1->whoTo,
|
||||
(uint32_t) (uintptr_t) tp1->whoTo,
|
||||
tp1->rec.data.TSN_seq);
|
||||
}
|
||||
sctp_flight_size_decrease(tp1);
|
||||
@ -4575,7 +4575,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup,
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_UP_REVOKE,
|
||||
tp1->whoTo->flight_size,
|
||||
tp1->book_size,
|
||||
(uintptr_t) tp1->whoTo,
|
||||
(uint32_t) (uintptr_t) tp1->whoTo,
|
||||
tp1->rec.data.TSN_seq);
|
||||
}
|
||||
sctp_flight_size_increase(tp1);
|
||||
|
@ -2358,7 +2358,7 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset,
|
||||
SCTP_RTT_FROM_NON_DATA);
|
||||
#if defined(INET) || defined(INET6)
|
||||
if (((*netp)->port == 0) && (port != 0)) {
|
||||
sctp_pathmtu_adjustment(stcb, (*netp)->mtu - sizeof(struct udphdr));
|
||||
sctp_pathmtu_adjustment(stcb, (uint16_t) ((*netp)->mtu - sizeof(struct udphdr)));
|
||||
}
|
||||
(*netp)->port = port;
|
||||
#endif
|
||||
@ -3339,7 +3339,7 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc,
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_PDRP,
|
||||
tp1->whoTo->flight_size,
|
||||
tp1->book_size,
|
||||
(uintptr_t) stcb,
|
||||
(uint32_t) (uintptr_t) stcb,
|
||||
tp1->rec.data.TSN_seq);
|
||||
}
|
||||
if (tp1->sent < SCTP_DATAGRAM_RESEND) {
|
||||
@ -5596,7 +5596,7 @@ process_control_chunks:
|
||||
len = min(SCTP_SIZE32(chk_length), (uint32_t) (length - *offset));
|
||||
cause = mtod(op_err, struct sctp_gen_error_cause *);
|
||||
cause->code = htons(SCTP_CAUSE_UNRECOG_CHUNK);
|
||||
cause->length = htons(len + sizeof(struct sctp_gen_error_cause));
|
||||
cause->length = htons((uint16_t) (len + sizeof(struct sctp_gen_error_cause)));
|
||||
SCTP_BUF_LEN(op_err) = sizeof(struct sctp_gen_error_cause);
|
||||
SCTP_BUF_NEXT(op_err) = SCTP_M_COPYM(m, *offset, len, M_NOWAIT);
|
||||
if (SCTP_BUF_NEXT(op_err) != NULL) {
|
||||
|
@ -3508,7 +3508,7 @@ sctp_find_cmsg(int c_type, void *data, struct mbuf *control, size_t cpsize)
|
||||
return (found);
|
||||
}
|
||||
/* It is exactly what we want. Copy it out. */
|
||||
m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), cpsize, (caddr_t)data);
|
||||
m_copydata(control, at + CMSG_ALIGN(sizeof(cmh)), (int)cpsize, (caddr_t)data);
|
||||
return (1);
|
||||
} else {
|
||||
struct sctp_sndrcvinfo *sndrcvinfo;
|
||||
@ -4186,7 +4186,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp,
|
||||
udp = (struct udphdr *)((caddr_t)ip + sizeof(struct ip));
|
||||
udp->uh_sport = htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port));
|
||||
udp->uh_dport = port;
|
||||
udp->uh_ulen = htons(packet_length - sizeof(struct ip));
|
||||
udp->uh_ulen = htons((uint16_t) (packet_length - sizeof(struct ip)));
|
||||
if (V_udp_cksum) {
|
||||
udp->uh_sum = in_pseudo(ip->ip_src.s_addr, ip->ip_dst.s_addr, udp->uh_ulen + htons(IPPROTO_UDP));
|
||||
} else {
|
||||
@ -4414,7 +4414,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp,
|
||||
} else {
|
||||
ip6h->ip6_nxt = IPPROTO_SCTP;
|
||||
}
|
||||
ip6h->ip6_plen = (packet_length - sizeof(struct ip6_hdr));
|
||||
ip6h->ip6_plen = (uint16_t) (packet_length - sizeof(struct ip6_hdr));
|
||||
ip6h->ip6_dst = sin6->sin6_addr;
|
||||
|
||||
/*
|
||||
@ -4533,7 +4533,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp,
|
||||
udp = (struct udphdr *)((caddr_t)ip6h + sizeof(struct ip6_hdr));
|
||||
udp->uh_sport = htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port));
|
||||
udp->uh_dport = port;
|
||||
udp->uh_ulen = htons(packet_length - sizeof(struct ip6_hdr));
|
||||
udp->uh_ulen = htons((uint16_t) (packet_length - sizeof(struct ip6_hdr)));
|
||||
udp->uh_sum = 0;
|
||||
sctphdr = (struct sctphdr *)((caddr_t)udp + sizeof(struct udphdr));
|
||||
} else {
|
||||
@ -6479,10 +6479,10 @@ error_out:
|
||||
}
|
||||
}
|
||||
/* get the new end of length */
|
||||
len = M_TRAILINGSPACE(*endofchain);
|
||||
len = (int)M_TRAILINGSPACE(*endofchain);
|
||||
} else {
|
||||
/* how much is left at the end? */
|
||||
len = M_TRAILINGSPACE(*endofchain);
|
||||
len = (int)M_TRAILINGSPACE(*endofchain);
|
||||
}
|
||||
/* Find the end of the data, for appending */
|
||||
cp = (mtod((*endofchain), caddr_t)+SCTP_BUF_LEN((*endofchain)));
|
||||
@ -6636,7 +6636,7 @@ sctp_sendall_iterator(struct sctp_inpcb *inp, struct sctp_tcb *stcb, void *ptr,
|
||||
|
||||
ph = mtod(m, struct sctp_paramhdr *);
|
||||
ph->param_type = htons(SCTP_CAUSE_USER_INITIATED_ABT);
|
||||
ph->param_length = htons(sizeof(struct sctp_paramhdr) + ca->sndlen);
|
||||
ph->param_length = htons((uint16_t) (sizeof(struct sctp_paramhdr) + ca->sndlen));
|
||||
}
|
||||
/*
|
||||
* We add one here to keep the assoc from dis-appearing on
|
||||
@ -6814,7 +6814,7 @@ sctp_copy_out_all(struct uio *uio, int len)
|
||||
left = len;
|
||||
SCTP_BUF_LEN(ret) = 0;
|
||||
/* save space for the data chunk header */
|
||||
cancpy = M_TRAILINGSPACE(ret);
|
||||
cancpy = (int)M_TRAILINGSPACE(ret);
|
||||
willcpy = min(cancpy, left);
|
||||
at = ret;
|
||||
while (left > 0) {
|
||||
@ -6835,7 +6835,7 @@ sctp_copy_out_all(struct uio *uio, int len)
|
||||
}
|
||||
at = SCTP_BUF_NEXT(at);
|
||||
SCTP_BUF_LEN(at) = 0;
|
||||
cancpy = M_TRAILINGSPACE(at);
|
||||
cancpy = (int)M_TRAILINGSPACE(at);
|
||||
willcpy = min(cancpy, left);
|
||||
}
|
||||
}
|
||||
@ -6869,7 +6869,7 @@ sctp_sendall(struct sctp_inpcb *inp, struct uio *uio, struct mbuf *m,
|
||||
ca->sndrcv.sinfo_flags &= ~SCTP_SENDALL;
|
||||
/* get length and mbuf chain */
|
||||
if (uio) {
|
||||
ca->sndlen = uio->uio_resid;
|
||||
ca->sndlen = (int)uio->uio_resid;
|
||||
ca->m = sctp_copy_out_all(uio, ca->sndlen);
|
||||
if (ca->m == NULL) {
|
||||
SCTP_FREE(ca, SCTP_M_COPYAL);
|
||||
@ -7019,7 +7019,7 @@ all_done:
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_UP,
|
||||
data_list[i]->whoTo->flight_size,
|
||||
data_list[i]->book_size,
|
||||
(uintptr_t) data_list[i]->whoTo,
|
||||
(uint32_t) (uintptr_t) data_list[i]->whoTo,
|
||||
data_list[i]->rec.data.TSN_seq);
|
||||
}
|
||||
sctp_flight_size_increase(data_list[i]);
|
||||
@ -7516,7 +7516,7 @@ dont_do_it:
|
||||
goto out_of;
|
||||
}
|
||||
sctp_snd_sb_alloc(stcb, sizeof(struct sctp_data_chunk));
|
||||
chk->book_size = chk->send_size = (to_move + sizeof(struct sctp_data_chunk));
|
||||
chk->book_size = chk->send_size = (uint16_t) (to_move + sizeof(struct sctp_data_chunk));
|
||||
chk->book_size_scale = 0;
|
||||
chk->sent = SCTP_DATAGRAM_UNSENT;
|
||||
|
||||
@ -7551,7 +7551,7 @@ dont_do_it:
|
||||
chk->rec.data.TSN_seq = atomic_fetchadd_int(&asoc->sending_seq, 1);
|
||||
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_LOG_AT_SEND_2_OUTQ) {
|
||||
sctp_misc_ints(SCTP_STRMOUT_LOG_SEND,
|
||||
(uintptr_t) stcb, sp->length,
|
||||
(uint32_t) (uintptr_t) stcb, sp->length,
|
||||
(uint32_t) ((chk->rec.data.stream_number << 16) | chk->rec.data.stream_seq),
|
||||
chk->rec.data.TSN_seq);
|
||||
}
|
||||
@ -9827,7 +9827,7 @@ one_chunk_around:
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_UP_RSND,
|
||||
data_list[i]->whoTo->flight_size,
|
||||
data_list[i]->book_size,
|
||||
(uintptr_t) data_list[i]->whoTo,
|
||||
(uint32_t) (uintptr_t) data_list[i]->whoTo,
|
||||
data_list[i]->rec.data.TSN_seq);
|
||||
}
|
||||
sctp_flight_size_increase(data_list[i]);
|
||||
@ -10288,7 +10288,7 @@ sctp_fill_in_rest:
|
||||
space_needed = (sizeof(struct sctp_forward_tsn_chunk) +
|
||||
(cnt_of_skipped * sizeof(struct sctp_strseq)));
|
||||
|
||||
cnt_of_space = M_TRAILINGSPACE(chk->data);
|
||||
cnt_of_space = (unsigned int)M_TRAILINGSPACE(chk->data);
|
||||
|
||||
if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) {
|
||||
ovh = SCTP_MIN_OVERHEAD;
|
||||
@ -10546,7 +10546,7 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked
|
||||
}
|
||||
/* ok, lets go through and fill it in */
|
||||
SCTP_BUF_RESV_UF(a_chk->data, SCTP_MIN_OVERHEAD);
|
||||
space = M_TRAILINGSPACE(a_chk->data);
|
||||
space = (unsigned int)M_TRAILINGSPACE(a_chk->data);
|
||||
if (space > (a_chk->whoTo->mtu - SCTP_MIN_OVERHEAD)) {
|
||||
space = (a_chk->whoTo->mtu - SCTP_MIN_OVERHEAD);
|
||||
}
|
||||
@ -10760,9 +10760,9 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked
|
||||
* queue.
|
||||
*/
|
||||
if (type == SCTP_SELECTIVE_ACK) {
|
||||
a_chk->send_size = sizeof(struct sctp_sack_chunk) +
|
||||
a_chk->send_size = (uint16_t) (sizeof(struct sctp_sack_chunk) +
|
||||
(num_gap_blocks + num_nr_gap_blocks) * sizeof(struct sctp_gap_ack_block) +
|
||||
num_dups * sizeof(int32_t);
|
||||
num_dups * sizeof(int32_t));
|
||||
SCTP_BUF_LEN(a_chk->data) = a_chk->send_size;
|
||||
sack->sack.cum_tsn_ack = htonl(asoc->cumulative_tsn);
|
||||
sack->sack.a_rwnd = htonl(asoc->my_rwnd);
|
||||
@ -10772,9 +10772,9 @@ sctp_send_sack(struct sctp_tcb *stcb, int so_locked
|
||||
sack->ch.chunk_flags = flags;
|
||||
sack->ch.chunk_length = htons(a_chk->send_size);
|
||||
} else {
|
||||
a_chk->send_size = sizeof(struct sctp_nr_sack_chunk) +
|
||||
a_chk->send_size = (uint16_t) (sizeof(struct sctp_nr_sack_chunk) +
|
||||
(num_gap_blocks + num_nr_gap_blocks) * sizeof(struct sctp_gap_ack_block) +
|
||||
num_dups * sizeof(int32_t);
|
||||
num_dups * sizeof(int32_t));
|
||||
SCTP_BUF_LEN(a_chk->data) = a_chk->send_size;
|
||||
nr_sack->nr_sack.cum_tsn_ack = htonl(asoc->cumulative_tsn);
|
||||
nr_sack->nr_sack.a_rwnd = htonl(asoc->my_rwnd);
|
||||
@ -11082,10 +11082,10 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst,
|
||||
udp->uh_sport = htons(SCTP_BASE_SYSCTL(sctp_udp_tunneling_port));
|
||||
udp->uh_dport = port;
|
||||
udp->uh_sum = 0;
|
||||
udp->uh_ulen = htons(sizeof(struct udphdr) +
|
||||
udp->uh_ulen = htons((uint16_t) (sizeof(struct udphdr) +
|
||||
sizeof(struct sctphdr) +
|
||||
sizeof(struct sctp_chunkhdr) +
|
||||
cause_len + padding_len);
|
||||
cause_len + padding_len));
|
||||
len += sizeof(struct udphdr);
|
||||
shout = (struct sctphdr *)((caddr_t)shout + sizeof(struct udphdr));
|
||||
} else {
|
||||
@ -11108,7 +11108,7 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst,
|
||||
} else {
|
||||
ch->chunk_flags = SCTP_HAD_NO_TCB;
|
||||
}
|
||||
ch->chunk_length = htons(sizeof(struct sctp_chunkhdr) + cause_len);
|
||||
ch->chunk_length = htons((uint16_t) (sizeof(struct sctp_chunkhdr) + cause_len));
|
||||
len += sizeof(struct sctp_chunkhdr);
|
||||
len += cause_len + padding_len;
|
||||
|
||||
@ -11157,7 +11157,7 @@ sctp_send_resp_msg(struct sockaddr *src, struct sockaddr *dst,
|
||||
#endif
|
||||
#ifdef INET6
|
||||
case AF_INET6:
|
||||
ip6->ip6_plen = len - sizeof(struct ip6_hdr);
|
||||
ip6->ip6_plen = (uint16_t) (len - sizeof(struct ip6_hdr));
|
||||
if (port) {
|
||||
#if defined(SCTP_WITH_NO_CSUM)
|
||||
SCTP_STAT_INCR(sctps_sendnocrc);
|
||||
@ -11484,7 +11484,7 @@ jump_out:
|
||||
* Len is already adjusted to size minus overhead above take
|
||||
* out the pkt_drop chunk itself from it.
|
||||
*/
|
||||
chk->send_size = len - sizeof(struct sctp_pktdrop_chunk);
|
||||
chk->send_size = (uint16_t) (len - sizeof(struct sctp_pktdrop_chunk));
|
||||
len = chk->send_size;
|
||||
} else {
|
||||
/* no truncation needed */
|
||||
@ -11624,7 +11624,7 @@ sctp_add_stream_reset_out(struct sctp_tcb *stcb, struct sctp_tmit_chunk *chk,
|
||||
if (number_entries > SCTP_MAX_STREAMS_AT_ONCE_RESET) {
|
||||
number_entries = SCTP_MAX_STREAMS_AT_ONCE_RESET;
|
||||
}
|
||||
len = (sizeof(struct sctp_stream_reset_out_request) + (sizeof(uint16_t) * number_entries));
|
||||
len = (uint16_t) (sizeof(struct sctp_stream_reset_out_request) + (sizeof(uint16_t) * number_entries));
|
||||
req_out->ph.param_type = htons(SCTP_STR_RESET_OUT_REQUEST);
|
||||
req_out->ph.param_length = htons(len);
|
||||
req_out->request_seq = htonl(seq);
|
||||
@ -11681,7 +11681,7 @@ sctp_add_stream_reset_in(struct sctp_tmit_chunk *chk,
|
||||
/* get to new offset for the param. */
|
||||
req_in = (struct sctp_stream_reset_in_request *)((caddr_t)ch + len);
|
||||
/* now how long will this param be? */
|
||||
len = (sizeof(struct sctp_stream_reset_in_request) + (sizeof(uint16_t) * number_entries));
|
||||
len = (uint16_t) (sizeof(struct sctp_stream_reset_in_request) + (sizeof(uint16_t) * number_entries));
|
||||
req_in->ph.param_type = htons(SCTP_STR_RESET_IN_REQUEST);
|
||||
req_in->ph.param_length = htons(len);
|
||||
req_in->request_seq = htonl(seq);
|
||||
@ -12313,7 +12313,7 @@ sctp_copy_it_in(struct sctp_tcb *stcb,
|
||||
(void)SCTP_GETTIME_TIMEVAL(&sp->ts);
|
||||
|
||||
sp->stream = srcv->sinfo_stream;
|
||||
sp->length = min(uio->uio_resid, max_send_len);
|
||||
sp->length = (uint32_t) min(uio->uio_resid, max_send_len);
|
||||
if ((sp->length == (uint32_t) uio->uio_resid) &&
|
||||
((user_marks_eor == 0) ||
|
||||
(srcv->sinfo_flags & SCTP_EOF) ||
|
||||
@ -12472,7 +12472,7 @@ sctp_lower_sosend(struct socket *so,
|
||||
SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, EINVAL);
|
||||
return (EINVAL);
|
||||
}
|
||||
sndlen = uio->uio_resid;
|
||||
sndlen = (unsigned int)uio->uio_resid;
|
||||
} else {
|
||||
top = SCTP_HEADER_TO_CHAIN(i_pak);
|
||||
sndlen = SCTP_HEADER_LEN(i_pak);
|
||||
@ -12871,7 +12871,7 @@ sctp_lower_sosend(struct socket *so,
|
||||
/* now move forward the data pointer */
|
||||
ph = mtod(mm, struct sctp_paramhdr *);
|
||||
ph->param_type = htons(SCTP_CAUSE_USER_INITIATED_ABT);
|
||||
ph->param_length = htons(sizeof(struct sctp_paramhdr) + tot_out);
|
||||
ph->param_length = htons((uint16_t) (sizeof(struct sctp_paramhdr) + tot_out));
|
||||
ph++;
|
||||
SCTP_BUF_LEN(mm) = tot_out + sizeof(struct sctp_paramhdr);
|
||||
if (top == NULL) {
|
||||
@ -13291,7 +13291,7 @@ skip_preblock:
|
||||
min(SCTP_BASE_SYSCTL(sctp_add_more_threshold), SCTP_SB_LIMIT_SND(so)))) {
|
||||
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_BLK_LOGGING_ENABLE) {
|
||||
sctp_log_block(SCTP_BLOCK_LOG_INTO_BLK,
|
||||
asoc, uio->uio_resid);
|
||||
asoc, (size_t)uio->uio_resid);
|
||||
}
|
||||
be.error = 0;
|
||||
stcb->block_entry = &be;
|
||||
|
@ -662,7 +662,7 @@ start_again:
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_RSND_TO,
|
||||
chk->whoTo->flight_size,
|
||||
chk->book_size,
|
||||
(uintptr_t) chk->whoTo,
|
||||
(uint32_t) (uintptr_t) chk->whoTo,
|
||||
chk->rec.data.TSN_seq);
|
||||
}
|
||||
sctp_flight_size_decrease(chk);
|
||||
@ -790,7 +790,7 @@ start_again:
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_UP,
|
||||
chk->whoTo->flight_size,
|
||||
chk->book_size,
|
||||
(uintptr_t) chk->whoTo,
|
||||
(uint32_t) (uintptr_t) chk->whoTo,
|
||||
chk->rec.data.TSN_seq);
|
||||
}
|
||||
sctp_flight_size_increase(chk);
|
||||
|
@ -132,7 +132,7 @@ sctp_pathmtu_adjustment(struct sctp_tcb *stcb, uint16_t nxtsz)
|
||||
sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_PMTU,
|
||||
chk->whoTo->flight_size,
|
||||
chk->book_size,
|
||||
(uintptr_t) chk->whoTo,
|
||||
(uint32_t) (uintptr_t) chk->whoTo,
|
||||
chk->rec.data.TSN_seq);
|
||||
}
|
||||
/* Clear any time so NO RTT is being done */
|
||||
@ -1413,7 +1413,7 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval,
|
||||
int creat_lock_on = 0;
|
||||
struct sctp_tcb *stcb = NULL;
|
||||
struct sockaddr *sa;
|
||||
int num_v6 = 0, num_v4 = 0, *totaddrp, totaddr;
|
||||
unsigned int num_v6 = 0, num_v4 = 0, *totaddrp, totaddr;
|
||||
uint32_t vrf_id;
|
||||
int bad_addresses = 0;
|
||||
sctp_assoc_t *a_id;
|
||||
@ -1449,10 +1449,10 @@ sctp_do_connect_x(struct socket *so, struct sctp_inpcb *inp, void *optval,
|
||||
error = EFAULT;
|
||||
goto out_now;
|
||||
}
|
||||
totaddrp = (int *)optval;
|
||||
totaddrp = (unsigned int *)optval;
|
||||
totaddr = *totaddrp;
|
||||
sa = (struct sockaddr *)(totaddrp + 1);
|
||||
stcb = sctp_connectx_helper_find(inp, sa, &totaddr, &num_v4, &num_v6, &error, (optsize - sizeof(int)), &bad_addresses);
|
||||
stcb = sctp_connectx_helper_find(inp, sa, &totaddr, &num_v4, &num_v6, &error, (unsigned int)(optsize - sizeof(int)), &bad_addresses);
|
||||
if ((stcb != NULL) || bad_addresses) {
|
||||
/* Already have or am bring up an association */
|
||||
SCTP_ASOC_CREATE_UNLOCK(inp);
|
||||
@ -1903,7 +1903,8 @@ flags_out:
|
||||
case SCTP_GET_ASSOC_ID_LIST:
|
||||
{
|
||||
struct sctp_assoc_ids *ids;
|
||||
unsigned int at, limit;
|
||||
uint32_t at;
|
||||
size_t limit;
|
||||
|
||||
SCTP_CHECK_AND_CAST(ids, optval, struct sctp_assoc_ids, *optsize);
|
||||
SCTP_INP_RLOCK(inp);
|
||||
@ -1919,6 +1920,11 @@ flags_out:
|
||||
LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) {
|
||||
if (at < limit) {
|
||||
ids->gaids_assoc_id[at++] = sctp_get_associd(stcb);
|
||||
if (at == 0) {
|
||||
error = EINVAL;
|
||||
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
error = EINVAL;
|
||||
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error);
|
||||
|
@ -503,7 +503,7 @@ sctp_wakeup_log(struct sctp_tcb *stcb, uint32_t wake_cnt, int from)
|
||||
}
|
||||
|
||||
void
|
||||
sctp_log_block(uint8_t from, struct sctp_association *asoc, int sendlen)
|
||||
sctp_log_block(uint8_t from, struct sctp_association *asoc, size_t sendlen)
|
||||
{
|
||||
struct sctp_cwnd_log sctp_clog;
|
||||
|
||||
@ -513,7 +513,7 @@ sctp_log_block(uint8_t from, struct sctp_association *asoc, int sendlen)
|
||||
sctp_clog.x.blk.stream_qcnt = (uint16_t) asoc->stream_queue_cnt;
|
||||
sctp_clog.x.blk.chunks_on_oque = (uint16_t) asoc->chunks_on_out_queue;
|
||||
sctp_clog.x.blk.flight_size = (uint16_t) (asoc->total_flight / 1024);
|
||||
sctp_clog.x.blk.sndlen = sendlen;
|
||||
sctp_clog.x.blk.sndlen = (uint32_t) sendlen;
|
||||
SCTP_CTR6(KTR_SCTP, "SCTP:%d[%d]:%x-%x-%x-%x",
|
||||
SCTP_LOG_EVENT_BLOCK,
|
||||
from,
|
||||
@ -2679,7 +2679,8 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb,
|
||||
struct mbuf *m_notify;
|
||||
struct sctp_assoc_change *sac;
|
||||
struct sctp_queued_to_read *control;
|
||||
size_t notif_len, abort_len;
|
||||
unsigned int notif_len;
|
||||
uint16_t abort_len;
|
||||
unsigned int i;
|
||||
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
@ -2691,7 +2692,7 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb,
|
||||
return;
|
||||
}
|
||||
if (sctp_stcb_is_feature_on(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVASSOCEVNT)) {
|
||||
notif_len = sizeof(struct sctp_assoc_change);
|
||||
notif_len = (unsigned int)sizeof(struct sctp_assoc_change);
|
||||
if (abort != NULL) {
|
||||
abort_len = ntohs(abort->ch.chunk_length);
|
||||
} else {
|
||||
@ -2705,7 +2706,7 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb,
|
||||
m_notify = sctp_get_mbuf_for_msg(notif_len, 0, M_NOWAIT, 1, MT_DATA);
|
||||
if (m_notify == NULL) {
|
||||
/* Retry with smaller value. */
|
||||
notif_len = sizeof(struct sctp_assoc_change);
|
||||
notif_len = (unsigned int)sizeof(struct sctp_assoc_change);
|
||||
m_notify = sctp_get_mbuf_for_msg(notif_len, 0, M_NOWAIT, 1, MT_DATA);
|
||||
if (m_notify == NULL) {
|
||||
goto set_error;
|
||||
@ -3570,7 +3571,8 @@ sctp_notify_remote_error(struct sctp_tcb *stcb, uint16_t error, struct sctp_erro
|
||||
struct mbuf *m_notify;
|
||||
struct sctp_remote_error *sre;
|
||||
struct sctp_queued_to_read *control;
|
||||
size_t notif_len, chunk_len;
|
||||
unsigned int notif_len;
|
||||
uint16_t chunk_len;
|
||||
|
||||
if ((stcb == NULL) ||
|
||||
sctp_stcb_is_feature_off(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_RECVPEERERR)) {
|
||||
@ -3581,11 +3583,11 @@ sctp_notify_remote_error(struct sctp_tcb *stcb, uint16_t error, struct sctp_erro
|
||||
} else {
|
||||
chunk_len = 0;
|
||||
}
|
||||
notif_len = sizeof(struct sctp_remote_error) + chunk_len;
|
||||
notif_len = (unsigned int)(sizeof(struct sctp_remote_error) + chunk_len);
|
||||
m_notify = sctp_get_mbuf_for_msg(notif_len, 0, M_NOWAIT, 1, MT_DATA);
|
||||
if (m_notify == NULL) {
|
||||
/* Retry with smaller value. */
|
||||
notif_len = sizeof(struct sctp_remote_error);
|
||||
notif_len = (unsigned int)sizeof(struct sctp_remote_error);
|
||||
m_notify = sctp_get_mbuf_for_msg(notif_len, 0, M_NOWAIT, 1, MT_DATA);
|
||||
if (m_notify == NULL) {
|
||||
return;
|
||||
@ -4739,19 +4741,23 @@ sctp_generate_cause(uint16_t code, char *info)
|
||||
{
|
||||
struct mbuf *m;
|
||||
struct sctp_gen_error_cause *cause;
|
||||
size_t info_len, len;
|
||||
size_t info_len;
|
||||
uint16_t len;
|
||||
|
||||
if ((code == 0) || (info == NULL)) {
|
||||
return (NULL);
|
||||
}
|
||||
info_len = strlen(info);
|
||||
len = sizeof(struct sctp_paramhdr) + info_len;
|
||||
if (info_len > (SCTP_MAX_CAUSE_LENGTH - sizeof(struct sctp_paramhdr))) {
|
||||
return (NULL);
|
||||
}
|
||||
len = (uint16_t) (sizeof(struct sctp_paramhdr) + info_len);
|
||||
m = sctp_get_mbuf_for_msg(len, 0, M_NOWAIT, 1, MT_DATA);
|
||||
if (m != NULL) {
|
||||
SCTP_BUF_LEN(m) = len;
|
||||
cause = mtod(m, struct sctp_gen_error_cause *);
|
||||
cause->code = htons(code);
|
||||
cause->length = htons((uint16_t) len);
|
||||
cause->length = htons(len);
|
||||
memcpy(cause->info, info, info_len);
|
||||
}
|
||||
return (m);
|
||||
@ -4762,15 +4768,15 @@ sctp_generate_no_user_data_cause(uint32_t tsn)
|
||||
{
|
||||
struct mbuf *m;
|
||||
struct sctp_error_no_user_data *no_user_data_cause;
|
||||
size_t len;
|
||||
uint16_t len;
|
||||
|
||||
len = sizeof(struct sctp_error_no_user_data);
|
||||
len = (uint16_t) sizeof(struct sctp_error_no_user_data);
|
||||
m = sctp_get_mbuf_for_msg(len, 0, M_NOWAIT, 1, MT_DATA);
|
||||
if (m != NULL) {
|
||||
SCTP_BUF_LEN(m) = len;
|
||||
no_user_data_cause = mtod(m, struct sctp_error_no_user_data *);
|
||||
no_user_data_cause->cause.code = htons(SCTP_CAUSE_NO_USER_DATA);
|
||||
no_user_data_cause->cause.length = htons((uint16_t) len);
|
||||
no_user_data_cause->cause.length = htons(len);
|
||||
no_user_data_cause->tsn = tsn; /* tsn is passed in as NBO */
|
||||
}
|
||||
return (m);
|
||||
@ -5295,7 +5301,7 @@ sctp_sorecvmsg(struct socket *so,
|
||||
uint32_t rwnd_req = 0;
|
||||
int hold_sblock = 0;
|
||||
int hold_rlock = 0;
|
||||
int slen = 0;
|
||||
ssize_t slen = 0;
|
||||
uint32_t held_length = 0;
|
||||
int sockbuf_lock = 0;
|
||||
|
||||
@ -5340,11 +5346,11 @@ sctp_sorecvmsg(struct socket *so,
|
||||
in_eeor_mode = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR);
|
||||
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_RECV_RWND_LOGGING_ENABLE) {
|
||||
sctp_misc_ints(SCTP_SORECV_ENTER,
|
||||
rwnd_req, in_eeor_mode, so->so_rcv.sb_cc, uio->uio_resid);
|
||||
rwnd_req, in_eeor_mode, so->so_rcv.sb_cc, (uint32_t) uio->uio_resid);
|
||||
}
|
||||
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_RECV_RWND_LOGGING_ENABLE) {
|
||||
sctp_misc_ints(SCTP_SORECV_ENTERPL,
|
||||
rwnd_req, block_allowed, so->so_rcv.sb_cc, uio->uio_resid);
|
||||
rwnd_req, block_allowed, so->so_rcv.sb_cc, (uint32_t) uio->uio_resid);
|
||||
}
|
||||
error = sblock(&so->so_rcv, (block_allowed ? SBL_WAIT : 0));
|
||||
if (error) {
|
||||
@ -6219,13 +6225,13 @@ out:
|
||||
if (stcb) {
|
||||
sctp_misc_ints(SCTP_SORECV_DONE,
|
||||
freed_so_far,
|
||||
((uio) ? (slen - uio->uio_resid) : slen),
|
||||
(uint32_t) ((uio) ? (slen - uio->uio_resid) : slen),
|
||||
stcb->asoc.my_rwnd,
|
||||
so->so_rcv.sb_cc);
|
||||
} else {
|
||||
sctp_misc_ints(SCTP_SORECV_DONE,
|
||||
freed_so_far,
|
||||
((uio) ? (slen - uio->uio_resid) : slen),
|
||||
(uint32_t) ((uio) ? (slen - uio->uio_resid) : slen),
|
||||
0,
|
||||
so->so_rcv.sb_cc);
|
||||
}
|
||||
@ -6452,30 +6458,30 @@ out_now:
|
||||
|
||||
struct sctp_tcb *
|
||||
sctp_connectx_helper_find(struct sctp_inpcb *inp, struct sockaddr *addr,
|
||||
int *totaddr, int *num_v4, int *num_v6, int *error,
|
||||
int limit, int *bad_addr)
|
||||
unsigned int *totaddr,
|
||||
unsigned int *num_v4, unsigned int *num_v6, int *error,
|
||||
unsigned int limit, int *bad_addr)
|
||||
{
|
||||
struct sockaddr *sa;
|
||||
struct sctp_tcb *stcb = NULL;
|
||||
size_t incr, at, i;
|
||||
unsigned int incr, at, i;
|
||||
|
||||
at = incr = 0;
|
||||
sa = addr;
|
||||
|
||||
*error = *num_v6 = *num_v4 = 0;
|
||||
/* account and validate addresses */
|
||||
for (i = 0; i < (size_t)*totaddr; i++) {
|
||||
for (i = 0; i < *totaddr; i++) {
|
||||
switch (sa->sa_family) {
|
||||
#ifdef INET
|
||||
case AF_INET:
|
||||
(*num_v4) += 1;
|
||||
incr = sizeof(struct sockaddr_in);
|
||||
if (sa->sa_len != incr) {
|
||||
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL);
|
||||
*error = EINVAL;
|
||||
*bad_addr = 1;
|
||||
return (NULL);
|
||||
}
|
||||
(*num_v4) += 1;
|
||||
incr = (unsigned int)sizeof(struct sockaddr_in);
|
||||
break;
|
||||
#endif
|
||||
#ifdef INET6
|
||||
@ -6491,14 +6497,14 @@ sctp_connectx_helper_find(struct sctp_inpcb *inp, struct sockaddr *addr,
|
||||
*bad_addr = 1;
|
||||
return (NULL);
|
||||
}
|
||||
(*num_v6) += 1;
|
||||
incr = sizeof(struct sockaddr_in6);
|
||||
if (sa->sa_len != incr) {
|
||||
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTPUTIL, EINVAL);
|
||||
*error = EINVAL;
|
||||
*bad_addr = 1;
|
||||
return (NULL);
|
||||
}
|
||||
(*num_v6) += 1;
|
||||
incr = (unsigned int)sizeof(struct sockaddr_in6);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
@ -6507,7 +6513,7 @@ sctp_connectx_helper_find(struct sctp_inpcb *inp, struct sockaddr *addr,
|
||||
/* we are done */
|
||||
break;
|
||||
}
|
||||
if (i == (size_t)*totaddr) {
|
||||
if (i == *totaddr) {
|
||||
break;
|
||||
}
|
||||
SCTP_INP_INCR_REF(inp);
|
||||
@ -6518,7 +6524,7 @@ sctp_connectx_helper_find(struct sctp_inpcb *inp, struct sockaddr *addr,
|
||||
} else {
|
||||
SCTP_INP_DECR_REF(inp);
|
||||
}
|
||||
if ((at + incr) > (size_t)limit) {
|
||||
if ((at + incr) > limit) {
|
||||
*totaddr = i;
|
||||
break;
|
||||
}
|
||||
|
@ -220,7 +220,8 @@ sctp_connectx_helper_add(struct sctp_tcb *stcb, struct sockaddr *addr,
|
||||
|
||||
struct sctp_tcb *
|
||||
sctp_connectx_helper_find(struct sctp_inpcb *inp, struct sockaddr *addr,
|
||||
int *totaddr, int *num_v4, int *num_v6, int *error, int limit, int *bad_addr);
|
||||
unsigned int *totaddr, unsigned int *num_v4, unsigned int *num_v6,
|
||||
int *error, unsigned int limit, int *bad_addr);
|
||||
|
||||
int sctp_is_there_an_abort_here(struct mbuf *, int, uint32_t *);
|
||||
|
||||
@ -376,7 +377,7 @@ void sctp_log_closing(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int16_t loc
|
||||
|
||||
void sctp_log_lock(struct sctp_inpcb *inp, struct sctp_tcb *stcb, uint8_t from);
|
||||
void sctp_log_maxburst(struct sctp_tcb *stcb, struct sctp_nets *, int, int, uint8_t);
|
||||
void sctp_log_block(uint8_t, struct sctp_association *, int);
|
||||
void sctp_log_block(uint8_t, struct sctp_association *, size_t);
|
||||
void sctp_log_rwnd(uint8_t, uint32_t, uint32_t, uint32_t);
|
||||
void sctp_log_rwnd_set(uint8_t, uint32_t, uint32_t, uint32_t, uint32_t);
|
||||
int sctp_fill_stat_log(void *, size_t *);
|
||||
|
Loading…
x
Reference in New Issue
Block a user