2008-01-11 17:57:09 +03:00
/* SCTP kernel implementation Copyright (C) 1999-2001
2005-04-17 02:20:36 +04:00
* Cisco , Motorola , and IBM
* Copyright 2001 La Monte H . P . Yarroll
*
2008-01-11 17:57:09 +03:00
* This file is part of the SCTP kernel implementation
2005-04-17 02:20:36 +04:00
*
* These functions manipulate sctp command sequences .
*
2008-01-11 17:57:09 +03:00
* This SCTP implementation is free software ;
2005-04-17 02:20:36 +04:00
* 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 .
*
2008-01-11 17:57:09 +03:00
* This SCTP implementation is distributed in the hope that it
2005-04-17 02:20:36 +04:00
* 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 .
*/
2008-03-28 03:54:29 +03:00
void sctp_add_cmd_sf ( sctp_cmd_seq_t * seq , sctp_verb_t verb , sctp_arg_t obj )
2005-04-17 02:20:36 +04:00
{
2008-03-28 03:54:29 +03:00
BUG_ON ( seq - > next_free_slot > = SCTP_MAX_NUM_COMMANDS ) ;
2005-04-17 02:20:36 +04:00
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 ;
}