Blame view

kernel/linux-imx6_3.14.28/net/sctp/command.c 2.03 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
55
56
57
58
59
60
61
62
63
64
65
66
67
  /* SCTP kernel implementation Copyright (C) 1999-2001
   * Cisco, Motorola, and IBM
   * Copyright 2001 La Monte H.P. Yarroll
   *
   * This file is part of the SCTP kernel implementation
   *
   * These functions manipulate sctp command sequences.
   *
   * This SCTP implementation is free software;
   * 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.
   *
   * This SCTP implementation is distributed in the hope that it
   * 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, see
   * <http://www.gnu.org/licenses/>.
   *
   * Please send any bug reports or fixes you make to the
   * email address(es):
   *    lksctp developers <linux-sctp@vger.kernel.org>
   *
   * Written or modified by:
   *    La Monte H.P. Yarroll <piggy@acm.org>
   *    Karl Knutson <karl@athena.chicago.il.us>
   */
  
  #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.
   */
  void sctp_add_cmd_sf(sctp_cmd_seq_t *seq, sctp_verb_t verb, sctp_arg_t obj)
  {
  	BUG_ON(seq->next_free_slot >= SCTP_MAX_NUM_COMMANDS);
  
  	seq->cmds[seq->next_free_slot].verb = verb;
  	seq->cmds[seq->next_free_slot++].obj = obj;
  }
  
  /* 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;
  }