linux/include/net/sctp/ulpqueue.h
<<
>>
Prefs
   1/* SCTP kernel implementation
   2 * (C) Copyright IBM Corp. 2001, 2004
   3 * Copyright (c) 1999-2000 Cisco, Inc.
   4 * Copyright (c) 1999-2001 Motorola, Inc.
   5 * Copyright (c) 2001 Intel Corp.
   6 * Copyright (c) 2001 Nokia, Inc.
   7 * Copyright (c) 2001 La Monte H.P. Yarroll
   8 *
   9 * These are the definitions needed for the sctp_ulpq type.  The
  10 * sctp_ulpq is the interface between the Upper Layer Protocol, or ULP,
  11 * and the core SCTP state machine.  This is the component which handles
  12 * reassembly and ordering.
  13 *
  14 * This SCTP implementation is free software;
  15 * you can redistribute it and/or modify it under the terms of
  16 * the GNU General Public License as published by
  17 * the Free Software Foundation; either version 2, or (at your option)
  18 * any later version.
  19 *
  20 * This SCTP implementation  is distributed in the hope that it
  21 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  22 *                 ************************
  23 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  24 * See the GNU General Public License for more details.
  25 *
  26 * You should have received a copy of the GNU General Public License
  27 * along with GNU CC; see the file COPYING.  If not, write to
  28 * the Free Software Foundation, 59 Temple Place - Suite 330,
  29 * Boston, MA 02111-1307, USA.
  30 *
  31 * Please send any bug reports or fixes you make to the
  32 * email addresses:
  33 *    lksctp developers <lksctp-developers@lists.sourceforge.net>
  34 *
  35 * Or submit a bug report through the following website:
  36 *    http://www.sf.net/projects/lksctp
  37 *
  38 * Written or modified by:
  39 *   Jon Grimm             <jgrimm@us.ibm.com>
  40 *   La Monte H.P. Yarroll <piggy@acm.org>
  41 *   Sridhar Samudrala     <sri@us.ibm.com>
  42 *
  43 * Any bugs reported given to us we will try to fix... any fixes shared will
  44 * be incorporated into the next SCTP release.
  45 */
  46
  47#ifndef __sctp_ulpqueue_h__
  48#define __sctp_ulpqueue_h__
  49
  50/* A structure to carry information to the ULP (e.g. Sockets API) */
  51struct sctp_ulpq {
  52        char malloced;
  53        char pd_mode;
  54        struct sctp_association *asoc;
  55        struct sk_buff_head reasm;
  56        struct sk_buff_head lobby;
  57};
  58
  59/* Prototypes. */
  60struct sctp_ulpq *sctp_ulpq_init(struct sctp_ulpq *,
  61                                 struct sctp_association *);
  62void sctp_ulpq_flush(struct sctp_ulpq *ulpq);
  63void sctp_ulpq_free(struct sctp_ulpq *);
  64
  65/* Add a new DATA chunk for processing. */
  66int sctp_ulpq_tail_data(struct sctp_ulpq *, struct sctp_chunk *, gfp_t);
  67
  68/* Add a new event for propagation to the ULP. */
  69int sctp_ulpq_tail_event(struct sctp_ulpq *, struct sctp_ulpevent *ev);
  70
  71/* Renege previously received chunks.  */
  72void sctp_ulpq_renege(struct sctp_ulpq *, struct sctp_chunk *, gfp_t);
  73
  74/* Perform partial delivery. */
  75void sctp_ulpq_partial_delivery(struct sctp_ulpq *, struct sctp_chunk *, gfp_t);
  76
  77/* Abort the partial delivery. */
  78void sctp_ulpq_abort_pd(struct sctp_ulpq *, gfp_t);
  79
  80/* Clear the partial data delivery condition on this socket. */
  81int sctp_clear_pd(struct sock *sk, struct sctp_association *asoc);
  82
  83/* Skip over an SSN. */
  84void sctp_ulpq_skip(struct sctp_ulpq *ulpq, __u16 sid, __u16 ssn);
  85
  86void sctp_ulpq_reasm_flushtsn(struct sctp_ulpq *, __u32);
  87#endif /* __sctp_ulpqueue_h__ */
  88
  89
  90
  91
  92
  93
  94
  95