mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-15 08:26:59 +08:00
Update to FreeBSD head 2016-12-10
Git mirror commit 80c55f08a05ab3b26a73b226ccb56adc3122a55c.
This commit is contained in:
@@ -163,10 +163,8 @@ sctp_handle_init(struct mbuf *m, int iphlen, int offset,
|
||||
*abort_no_unlock = 1;
|
||||
goto outnow;
|
||||
}
|
||||
/*
|
||||
* We are only accepting if we have a socket with positive
|
||||
* so_qlimit.
|
||||
*/
|
||||
/* We are only accepting if we have a socket with positive
|
||||
* so_qlimit. */
|
||||
if ((stcb == NULL) &&
|
||||
((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) ||
|
||||
(inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) ||
|
||||
@@ -322,14 +320,14 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb)
|
||||
/* abandon the upper streams */
|
||||
newcnt = ntohs(init->num_inbound_streams);
|
||||
TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, nchk) {
|
||||
if (chk->rec.data.stream_number >= newcnt) {
|
||||
if (chk->rec.data.sid >= newcnt) {
|
||||
TAILQ_REMOVE(&asoc->send_queue, chk, sctp_next);
|
||||
asoc->send_queue_cnt--;
|
||||
if (asoc->strmout[chk->rec.data.stream_number].chunks_on_queues > 0) {
|
||||
asoc->strmout[chk->rec.data.stream_number].chunks_on_queues--;
|
||||
if (asoc->strmout[chk->rec.data.sid].chunks_on_queues > 0) {
|
||||
asoc->strmout[chk->rec.data.sid].chunks_on_queues--;
|
||||
#ifdef INVARIANTS
|
||||
} else {
|
||||
panic("No chunks on the queues for sid %u.", chk->rec.data.stream_number);
|
||||
panic("No chunks on the queues for sid %u.", chk->rec.data.sid);
|
||||
#endif
|
||||
}
|
||||
if (chk->data != NULL) {
|
||||
@@ -414,8 +412,8 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb)
|
||||
return (-1);
|
||||
}
|
||||
for (i = 0; i < asoc->streamincnt; i++) {
|
||||
asoc->strmin[i].stream_no = i;
|
||||
asoc->strmin[i].last_sequence_delivered = 0xffffffff;
|
||||
asoc->strmin[i].sid = i;
|
||||
asoc->strmin[i].last_mid_delivered = 0xffffffff;
|
||||
TAILQ_INIT(&asoc->strmin[i].inqueue);
|
||||
TAILQ_INIT(&asoc->strmin[i].uno_inqueue);
|
||||
asoc->strmin[i].pd_api_started = 0;
|
||||
@@ -711,10 +709,8 @@ sctp_handle_nat_colliding_state(struct sctp_tcb *stcb)
|
||||
LIST_REMOVE(stcb, sctp_asocs);
|
||||
stcb->asoc.my_vtag = sctp_select_a_tag(stcb->sctp_ep, stcb->sctp_ep->sctp_lport, stcb->rport, 1);
|
||||
head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(stcb->asoc.my_vtag, SCTP_BASE_INFO(hashasocmark))];
|
||||
/*
|
||||
* put it in the bucket in the vtag hash of assoc's for the
|
||||
* system
|
||||
*/
|
||||
/* put it in the bucket in the vtag hash of assoc's for the
|
||||
* system */
|
||||
LIST_INSERT_HEAD(head, stcb, sctp_asocs);
|
||||
sctp_send_initiate(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED);
|
||||
return (1);
|
||||
@@ -732,10 +728,8 @@ sctp_handle_nat_colliding_state(struct sctp_tcb *stcb)
|
||||
sctp_toss_old_cookies(stcb, &stcb->asoc);
|
||||
stcb->asoc.my_vtag = sctp_select_a_tag(stcb->sctp_ep, stcb->sctp_ep->sctp_lport, stcb->rport, 1);
|
||||
head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(stcb->asoc.my_vtag, SCTP_BASE_INFO(hashasocmark))];
|
||||
/*
|
||||
* put it in the bucket in the vtag hash of assoc's for the
|
||||
* system
|
||||
*/
|
||||
/* put it in the bucket in the vtag hash of assoc's for the
|
||||
* system */
|
||||
LIST_INSERT_HEAD(head, stcb, sctp_asocs);
|
||||
sctp_send_initiate(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED);
|
||||
return (1);
|
||||
@@ -766,7 +760,6 @@ sctp_handle_abort(struct sctp_abort_chunk *abort,
|
||||
{
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
#endif
|
||||
uint16_t len;
|
||||
uint16_t error;
|
||||
@@ -868,10 +861,8 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp,
|
||||
struct sctp_association *asoc;
|
||||
int some_on_streamwheel;
|
||||
int old_state;
|
||||
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
#endif
|
||||
|
||||
SCTPDBG(SCTP_DEBUG_INPUT2,
|
||||
@@ -948,10 +939,8 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp,
|
||||
(SCTP_GET_STATE(asoc) != SCTP_STATE_SHUTDOWN_SENT)) {
|
||||
SCTP_SET_STATE(asoc, SCTP_STATE_SHUTDOWN_RECEIVED);
|
||||
SCTP_CLEAR_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
|
||||
/*
|
||||
* notify upper layer that peer has initiated a
|
||||
* shutdown
|
||||
*/
|
||||
/* notify upper layer that peer has initiated a
|
||||
* shutdown */
|
||||
sctp_ulp_notify(SCTP_NOTIFY_PEER_SHUTDOWN, stcb, 0, NULL, SCTP_SO_NOT_LOCKED);
|
||||
|
||||
/* reset time */
|
||||
@@ -1001,7 +990,6 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED,
|
||||
struct sctp_nets *net)
|
||||
{
|
||||
struct sctp_association *asoc;
|
||||
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
@@ -1171,10 +1159,8 @@ sctp_handle_error(struct sctp_chunkhdr *ch,
|
||||
uint16_t error_len;
|
||||
struct sctp_association *asoc;
|
||||
int adjust;
|
||||
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
#endif
|
||||
|
||||
/* parse through all of the errors and process */
|
||||
@@ -1494,10 +1480,8 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
|
||||
int retval;
|
||||
int spec_flag = 0;
|
||||
uint32_t how_indx;
|
||||
|
||||
#if defined(SCTP_DETAILED_STR_STATS)
|
||||
int j;
|
||||
|
||||
#endif
|
||||
|
||||
net = *netp;
|
||||
@@ -1621,7 +1605,6 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
|
||||
) {
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
#endif
|
||||
/*
|
||||
* Here is where collision would go if we
|
||||
@@ -1822,7 +1805,6 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
|
||||
(inp->sctp_socket->so_qlimit == 0)) {
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
#endif
|
||||
stcb->sctp_ep->sctp_flags |=
|
||||
SCTP_PCB_FLAGS_CONNECTED;
|
||||
@@ -1882,10 +1864,8 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
|
||||
cookie->tie_tag_peer_vtag == asoc->peer_vtag_nonce &&
|
||||
cookie->tie_tag_peer_vtag != 0) {
|
||||
struct sctpasochead *head;
|
||||
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
#endif
|
||||
|
||||
if (asoc->peer_supports_nat) {
|
||||
@@ -1977,7 +1957,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
|
||||
asoc->strmout[i].abandoned_sent[0] = 0;
|
||||
asoc->strmout[i].abandoned_unsent[0] = 0;
|
||||
#endif
|
||||
stcb->asoc.strmout[i].stream_no = i;
|
||||
stcb->asoc.strmout[i].sid = i;
|
||||
stcb->asoc.strmout[i].next_mid_ordered = 0;
|
||||
stcb->asoc.strmout[i].next_mid_unordered = 0;
|
||||
stcb->asoc.strmout[i].last_msg_incomplete = 0;
|
||||
@@ -2069,7 +2049,6 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset,
|
||||
int retval;
|
||||
int error = 0;
|
||||
uint8_t auth_chunk_buf[SCTP_PARAM_BUFFER_SIZE];
|
||||
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
@@ -2444,14 +2423,11 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset,
|
||||
struct sctp_nets *netl;
|
||||
int had_a_existing_tcb = 0;
|
||||
int send_int_conf = 0;
|
||||
|
||||
#ifdef INET
|
||||
struct sockaddr_in sin;
|
||||
|
||||
#endif
|
||||
#ifdef INET6
|
||||
struct sockaddr_in6 sin6;
|
||||
|
||||
#endif
|
||||
|
||||
SCTPDBG(SCTP_DEBUG_INPUT2,
|
||||
@@ -2773,10 +2749,8 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset,
|
||||
|
||||
if (so == NULL) {
|
||||
struct mbuf *op_err;
|
||||
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *pcb_so;
|
||||
|
||||
#endif
|
||||
/* Too many sockets */
|
||||
SCTPDBG(SCTP_DEBUG_INPUT1, "process_cookie_new: no room for another socket!\n");
|
||||
@@ -2889,10 +2863,8 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset,
|
||||
sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_CONFIRMED,
|
||||
(*stcb), 0, (void *)netl, SCTP_SO_NOT_LOCKED);
|
||||
}
|
||||
/*
|
||||
* Pull it from the incomplete queue and wake the
|
||||
* guy
|
||||
*/
|
||||
/* Pull it from the incomplete queue and wake the
|
||||
* guy */
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
atomic_add_int(&(*stcb)->asoc.refcnt, 1);
|
||||
SCTP_TCB_UNLOCK((*stcb));
|
||||
@@ -3057,18 +3029,18 @@ sctp_handle_ecn_echo(struct sctp_ecne_chunk *cp,
|
||||
if (lchk == NULL) {
|
||||
window_data_tsn = stcb->asoc.sending_seq - 1;
|
||||
} else {
|
||||
window_data_tsn = lchk->rec.data.TSN_seq;
|
||||
window_data_tsn = lchk->rec.data.tsn;
|
||||
}
|
||||
|
||||
/* Find where it was sent to if possible. */
|
||||
net = NULL;
|
||||
TAILQ_FOREACH(lchk, &stcb->asoc.sent_queue, sctp_next) {
|
||||
if (lchk->rec.data.TSN_seq == tsn) {
|
||||
if (lchk->rec.data.tsn == tsn) {
|
||||
net = lchk->whoTo;
|
||||
net->ecn_prev_cwnd = lchk->rec.data.cwnd_at_send;
|
||||
break;
|
||||
}
|
||||
if (SCTP_TSN_GT(lchk->rec.data.TSN_seq, tsn)) {
|
||||
if (SCTP_TSN_GT(lchk->rec.data.tsn, tsn)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3104,10 +3076,8 @@ sctp_handle_ecn_echo(struct sctp_ecne_chunk *cp,
|
||||
}
|
||||
if (SCTP_TSN_GT(tsn, net->cwr_window_tsn) &&
|
||||
((override_bit & SCTP_CWR_REDUCE_OVERRIDE) == 0)) {
|
||||
/*
|
||||
* JRS - Use the congestion control given in the pluggable
|
||||
* CC module
|
||||
*/
|
||||
/* JRS - Use the congestion control given in the pluggable
|
||||
* CC module */
|
||||
stcb->asoc.cc_functions.sctp_cwnd_update_after_ecn_echo(stcb, net, 0, pkt_cnt);
|
||||
/*
|
||||
* We reduce once every RTT. So we will only lower cwnd at
|
||||
@@ -3195,10 +3165,8 @@ sctp_handle_shutdown_complete(struct sctp_shutdown_complete_chunk *cp SCTP_UNUSE
|
||||
struct sctp_tcb *stcb, struct sctp_nets *net)
|
||||
{
|
||||
struct sctp_association *asoc;
|
||||
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
#endif
|
||||
|
||||
SCTPDBG(SCTP_DEBUG_INPUT2,
|
||||
@@ -3262,11 +3230,11 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc,
|
||||
|
||||
tsn = ntohl(desc->tsn_ifany);
|
||||
TAILQ_FOREACH(tp1, &stcb->asoc.sent_queue, sctp_next) {
|
||||
if (tp1->rec.data.TSN_seq == tsn) {
|
||||
if (tp1->rec.data.tsn == tsn) {
|
||||
/* found it */
|
||||
break;
|
||||
}
|
||||
if (SCTP_TSN_GT(tp1->rec.data.TSN_seq, tsn)) {
|
||||
if (SCTP_TSN_GT(tp1->rec.data.tsn, tsn)) {
|
||||
/* not found */
|
||||
tp1 = NULL;
|
||||
break;
|
||||
@@ -3279,7 +3247,7 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc,
|
||||
*/
|
||||
SCTP_STAT_INCR(sctps_pdrpdnfnd);
|
||||
TAILQ_FOREACH(tp1, &stcb->asoc.sent_queue, sctp_next) {
|
||||
if (tp1->rec.data.TSN_seq == tsn) {
|
||||
if (tp1->rec.data.tsn == tsn) {
|
||||
/* found it */
|
||||
break;
|
||||
}
|
||||
@@ -3345,7 +3313,7 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc,
|
||||
if (TAILQ_EMPTY(&stcb->asoc.send_queue)) {
|
||||
tp1->rec.data.fast_retran_tsn = stcb->asoc.sending_seq;
|
||||
} else {
|
||||
tp1->rec.data.fast_retran_tsn = (TAILQ_FIRST(&stcb->asoc.send_queue))->rec.data.TSN_seq;
|
||||
tp1->rec.data.fast_retran_tsn = (TAILQ_FIRST(&stcb->asoc.send_queue))->rec.data.tsn;
|
||||
}
|
||||
|
||||
/* restart the timer */
|
||||
@@ -3361,7 +3329,7 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc,
|
||||
tp1->whoTo->flight_size,
|
||||
tp1->book_size,
|
||||
(uint32_t) (uintptr_t) stcb,
|
||||
tp1->rec.data.TSN_seq);
|
||||
tp1->rec.data.tsn);
|
||||
}
|
||||
if (tp1->sent < SCTP_DATAGRAM_RESEND) {
|
||||
sctp_flight_size_decrease(tp1);
|
||||
@@ -3432,10 +3400,8 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc,
|
||||
case SCTP_HEARTBEAT_REQUEST:
|
||||
/* resend a demand HB */
|
||||
if ((stcb->asoc.overall_error_count + 3) < stcb->asoc.max_send_times) {
|
||||
/*
|
||||
* Only retransmit if we KNOW we wont destroy the
|
||||
* tcb
|
||||
*/
|
||||
/* Only retransmit if we KNOW we wont destroy the
|
||||
* tcb */
|
||||
sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED);
|
||||
}
|
||||
break;
|
||||
@@ -3507,12 +3473,12 @@ sctp_reset_in_stream(struct sctp_tcb *stcb, uint32_t number_entries, uint16_t *
|
||||
if (temp >= stcb->asoc.streamincnt) {
|
||||
continue;
|
||||
}
|
||||
stcb->asoc.strmin[temp].last_sequence_delivered = 0xffffffff;
|
||||
stcb->asoc.strmin[temp].last_mid_delivered = 0xffffffff;
|
||||
}
|
||||
} else {
|
||||
list = NULL;
|
||||
for (i = 0; i < stcb->asoc.streamincnt; i++) {
|
||||
stcb->asoc.strmin[i].last_sequence_delivered = 0xffffffff;
|
||||
stcb->asoc.strmin[i].last_mid_delivered = 0xffffffff;
|
||||
}
|
||||
}
|
||||
sctp_ulp_notify(SCTP_NOTIFY_STR_RESET_RECV, stcb, number_entries, (void *)list, SCTP_SO_NOT_LOCKED);
|
||||
@@ -3676,10 +3642,8 @@ sctp_handle_stream_reset_response(struct sctp_tcb *stcb,
|
||||
} else if (action == SCTP_STREAM_RESET_RESULT_DENIED) {
|
||||
sctp_ulp_notify(SCTP_NOTIFY_STR_RESET_DENIED_OUT, stcb, number_entries, req_out_param->list_of_streams, SCTP_SO_NOT_LOCKED);
|
||||
} else if (action == SCTP_STREAM_RESET_RESULT_IN_PROGRESS) {
|
||||
/*
|
||||
* Set it up so we don't stop
|
||||
* retransmitting
|
||||
*/
|
||||
/* Set it up so we don't stop
|
||||
* retransmitting */
|
||||
asoc->stream_reset_outstanding++;
|
||||
stcb->asoc.str_reset_seq_out--;
|
||||
asoc->stream_reset_out_is_outstanding = 1;
|
||||
@@ -4056,8 +4020,8 @@ sctp_handle_str_reset_add_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk *ch
|
||||
for (i = 0; i < stcb->asoc.streamincnt; i++) {
|
||||
TAILQ_INIT(&stcb->asoc.strmin[i].inqueue);
|
||||
TAILQ_INIT(&stcb->asoc.strmin[i].uno_inqueue);
|
||||
stcb->asoc.strmin[i].stream_no = i;
|
||||
stcb->asoc.strmin[i].last_sequence_delivered = oldstrm[i].last_sequence_delivered;
|
||||
stcb->asoc.strmin[i].sid = i;
|
||||
stcb->asoc.strmin[i].last_mid_delivered = oldstrm[i].last_mid_delivered;
|
||||
stcb->asoc.strmin[i].delivery_started = oldstrm[i].delivery_started;
|
||||
stcb->asoc.strmin[i].pd_api_started = oldstrm[i].pd_api_started;
|
||||
/* now anything on those queues? */
|
||||
@@ -4074,8 +4038,8 @@ sctp_handle_str_reset_add_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk *ch
|
||||
for (i = stcb->asoc.streamincnt; i < num_stream; i++) {
|
||||
TAILQ_INIT(&stcb->asoc.strmin[i].inqueue);
|
||||
TAILQ_INIT(&stcb->asoc.strmin[i].uno_inqueue);
|
||||
stcb->asoc.strmin[i].stream_no = i;
|
||||
stcb->asoc.strmin[i].last_sequence_delivered = 0xffffffff;
|
||||
stcb->asoc.strmin[i].sid = i;
|
||||
stcb->asoc.strmin[i].last_mid_delivered = 0xffffffff;
|
||||
stcb->asoc.strmin[i].pd_api_started = 0;
|
||||
stcb->asoc.strmin[i].delivery_started = 0;
|
||||
}
|
||||
@@ -4532,10 +4496,8 @@ __attribute__((noinline))
|
||||
uint32_t auth_offset = 0, auth_len = 0;
|
||||
int auth_skipped = 0;
|
||||
int asconf_cnt = 0;
|
||||
|
||||
#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
|
||||
struct socket *so;
|
||||
|
||||
#endif
|
||||
|
||||
SCTPDBG(SCTP_DEBUG_INPUT1, "sctp_process_control: iphlen=%u, offset=%u, length=%u stcb:%p\n",
|
||||
@@ -4735,10 +4697,8 @@ __attribute__((noinline))
|
||||
return (NULL);
|
||||
}
|
||||
}
|
||||
} /* end if !SCTP_COOKIE_ECHO */
|
||||
/*
|
||||
* process all control chunks...
|
||||
*/
|
||||
} /* end if !SCTP_COOKIE_ECHO *//* process all
|
||||
* control chunks... */
|
||||
if (((ch->chunk_type == SCTP_SELECTIVE_ACK) ||
|
||||
(ch->chunk_type == SCTP_NR_SELECTIVE_ACK) ||
|
||||
(ch->chunk_type == SCTP_HEARTBEAT_REQUEST)) &&
|
||||
@@ -5032,10 +4992,8 @@ process_control_chunks:
|
||||
}
|
||||
}
|
||||
break;
|
||||
/*
|
||||
* EY - nr_sack: If the received chunk is an
|
||||
* nr_sack chunk
|
||||
*/
|
||||
/* EY - nr_sack: If the received chunk is an
|
||||
* nr_sack chunk */
|
||||
case SCTP_NR_SELECTIVE_ACK:
|
||||
{
|
||||
struct sctp_nr_sack_chunk *nr_sack;
|
||||
@@ -5517,6 +5475,11 @@ process_control_chunks:
|
||||
*offset = length;
|
||||
return (NULL);
|
||||
}
|
||||
/*
|
||||
* For sending a SACK this looks like DATA
|
||||
* chunks.
|
||||
*/
|
||||
stcb->asoc.last_data_chunk_from = stcb->asoc.last_control_chunk_from;
|
||||
sctp_handle_forward_tsn(stcb,
|
||||
(struct sctp_forward_tsn_chunk *)ch, &abort_flag, m, *offset);
|
||||
if (abort_flag) {
|
||||
@@ -5648,8 +5611,7 @@ process_control_chunks:
|
||||
/* discard this packet */
|
||||
*offset = length;
|
||||
return (stcb);
|
||||
} /* else skip this bad chunk and continue... */
|
||||
break;
|
||||
} /* else skip this bad chunk and continue... */ break;
|
||||
} /* switch (ch->chunk_type) */
|
||||
|
||||
|
||||
@@ -6106,10 +6068,8 @@ sctp_input_with_port(struct mbuf *i_pak, int off, uint16_t port)
|
||||
struct sctphdr *sh;
|
||||
struct sctp_chunkhdr *ch;
|
||||
int length, offset;
|
||||
|
||||
#if !defined(SCTP_WITH_NO_CSUM)
|
||||
uint8_t compute_crc;
|
||||
|
||||
#endif
|
||||
uint32_t mflowid;
|
||||
uint8_t mflowtype;
|
||||
@@ -6210,7 +6170,6 @@ out:
|
||||
|
||||
#if defined(__FreeBSD__) && defined(SCTP_MCORE_INPUT) && defined(SMP)
|
||||
extern int *sctp_cpuarry;
|
||||
|
||||
#endif
|
||||
|
||||
int
|
||||
@@ -6258,5 +6217,4 @@ sctp_input(struct mbuf **mp, int *offp, int proto SCTP_UNUSED)
|
||||
sctp_input_with_port(m, off, 0);
|
||||
return (IPPROTO_DONE);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user