#include <net/busy_poll.h>
#include <net/sctp/sctp.h>
#include <net/sctp/sm.h>
#include <net/sctp/ulpevent.h>
#include <linux/sctp.h>
static struct sctp_chunk *sctp_make_idatafrag_empty(
const struct sctp_association *asoc,
const struct sctp_sndrcvinfo *sinfo,
int len, __u8 flags, gfp_t gfp)
{ … }
static void sctp_chunk_assign_mid(struct sctp_chunk *chunk)
{ … }
static bool sctp_validate_data(struct sctp_chunk *chunk)
{ … }
static bool sctp_validate_idata(struct sctp_chunk *chunk)
{ … }
static void sctp_intl_store_reasm(struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static struct sctp_ulpevent *sctp_intl_retrieve_partial(
struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static struct sctp_ulpevent *sctp_intl_retrieve_reassembled(
struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static struct sctp_ulpevent *sctp_intl_reasm(struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static void sctp_intl_store_ordered(struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static void sctp_intl_retrieve_ordered(struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static struct sctp_ulpevent *sctp_intl_order(struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static int sctp_enqueue_event(struct sctp_ulpq *ulpq,
struct sk_buff_head *skb_list)
{ … }
static void sctp_intl_store_reasm_uo(struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static struct sctp_ulpevent *sctp_intl_retrieve_partial_uo(
struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static struct sctp_ulpevent *sctp_intl_retrieve_reassembled_uo(
struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static struct sctp_ulpevent *sctp_intl_reasm_uo(struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static struct sctp_ulpevent *sctp_intl_retrieve_first_uo(struct sctp_ulpq *ulpq)
{ … }
static int sctp_ulpevent_idata(struct sctp_ulpq *ulpq,
struct sctp_chunk *chunk, gfp_t gfp)
{ … }
static struct sctp_ulpevent *sctp_intl_retrieve_first(struct sctp_ulpq *ulpq)
{ … }
static void sctp_intl_start_pd(struct sctp_ulpq *ulpq, gfp_t gfp)
{ … }
static void sctp_renege_events(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk,
gfp_t gfp)
{ … }
static void sctp_intl_stream_abort_pd(struct sctp_ulpq *ulpq, __u16 sid,
__u32 mid, __u16 flags, gfp_t gfp)
{ … }
static void sctp_intl_reap_ordered(struct sctp_ulpq *ulpq, __u16 sid)
{ … }
static void sctp_intl_abort_pd(struct sctp_ulpq *ulpq, gfp_t gfp)
{ … }
static inline int sctp_get_skip_pos(struct sctp_ifwdtsn_skip *skiplist,
int nskips, __be16 stream, __u8 flags)
{ … }
#define SCTP_FTSN_U_BIT …
static void sctp_generate_iftsn(struct sctp_outq *q, __u32 ctsn)
{ … }
#define _sctp_walk_ifwdtsn(pos, chunk, end) …
#define sctp_walk_ifwdtsn(pos, ch) …
static bool sctp_validate_fwdtsn(struct sctp_chunk *chunk)
{ … }
static bool sctp_validate_iftsn(struct sctp_chunk *chunk)
{ … }
static void sctp_report_fwdtsn(struct sctp_ulpq *ulpq, __u32 ftsn)
{ … }
static void sctp_intl_reasm_flushtsn(struct sctp_ulpq *ulpq, __u32 ftsn)
{ … }
static void sctp_report_iftsn(struct sctp_ulpq *ulpq, __u32 ftsn)
{ … }
static void sctp_handle_fwdtsn(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk)
{ … }
static void sctp_intl_skip(struct sctp_ulpq *ulpq, __u16 sid, __u32 mid,
__u8 flags)
{ … }
static void sctp_handle_iftsn(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk)
{ … }
static int do_ulpq_tail_event(struct sctp_ulpq *ulpq, struct sctp_ulpevent *event)
{ … }
static struct sctp_stream_interleave sctp_stream_interleave_0 = …;
static int do_sctp_enqueue_event(struct sctp_ulpq *ulpq,
struct sctp_ulpevent *event)
{ … }
static struct sctp_stream_interleave sctp_stream_interleave_1 = …;
void sctp_stream_interleave_init(struct sctp_stream *stream)
{ … }