Blame view

net/sctp/command.c 2.33 KB
60c778b25   Vlad Yasevich   [SCTP]: Stop clai...
1
  /* SCTP kernel implementation Copyright (C) 1999-2001
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
3
4
   * Cisco, Motorola, and IBM
   * Copyright 2001 La Monte H.P. Yarroll
   *
60c778b25   Vlad Yasevich   [SCTP]: Stop clai...
5
   * This file is part of the SCTP kernel implementation
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
6
7
8
   *
   * These functions manipulate sctp command sequences.
   *
60c778b25   Vlad Yasevich   [SCTP]: Stop clai...
9
   * This SCTP implementation is free software;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
10
11
12
13
14
   * you can redistribute it and/or modify it under the terms of
   * the GNU General Public License as published by
   * the Free Software Foundation; either version 2, or (at your option)
   * any later version.
   *
60c778b25   Vlad Yasevich   [SCTP]: Stop clai...
15
   * This SCTP implementation is distributed in the hope that it
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
   * will be useful, but WITHOUT ANY WARRANTY; without even the implied
   *                 ************************
   * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   * See the GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with GNU CC; see the file COPYING.  If not, write to
   * the Free Software Foundation, 59 Temple Place - Suite 330,
   * Boston, MA 02111-1307, USA.
   *
   * Please send any bug reports or fixes you make to the
   * email address(es):
   *    lksctp developers <lksctp-developers@lists.sourceforge.net>
   *
   * Or submit a bug report through the following website:
   *    http://www.sf.net/projects/lksctp
   *
   * Written or modified by:
   *    La Monte H.P. Yarroll <piggy@acm.org>
   *    Karl Knutson <karl@athena.chicago.il.us>
   *
   * Any bugs reported given to us we will try to fix... any fixes shared will
   * be incorporated into the next SCTP release.
   */
  
  #include <linux/types.h>
  #include <net/sctp/sctp.h>
  #include <net/sctp/sm.h>
  
  /* Initialize a block of memory as a command sequence. */
  int sctp_init_cmd_seq(sctp_cmd_seq_t *seq)
  {
  	memset(seq, 0, sizeof(sctp_cmd_seq_t));
  	return 1;		/* We always succeed.  */
  }
  
  /* Add a command to a sctp_cmd_seq_t.
   * Return 0 if the command sequence is full.
   */
bc09dff19   Ilpo Järvinen   [SCTP]: Remove sc...
55
  void sctp_add_cmd_sf(sctp_cmd_seq_t *seq, sctp_verb_t verb, sctp_arg_t obj)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
56
  {
bc09dff19   Ilpo Järvinen   [SCTP]: Remove sc...
57
  	BUG_ON(seq->next_free_slot >= SCTP_MAX_NUM_COMMANDS);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
58
59
60
  
  	seq->cmds[seq->next_free_slot].verb = verb;
  	seq->cmds[seq->next_free_slot++].obj = obj;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  }
  
  /* Return the next command structure in a sctp_cmd_seq.
   * Returns NULL at the end of the sequence.
   */
  sctp_cmd_t *sctp_next_cmd(sctp_cmd_seq_t *seq)
  {
  	sctp_cmd_t *retval = NULL;
  
  	if (seq->next_cmd < seq->next_free_slot)
  		retval = &seq->cmds[seq->next_cmd++];
  
  	return retval;
  }