| Function silc_fsm_alloc
 
 SYNOPSIS
 
    SilcFSM silc_fsm_alloc(void *fsm_context,
                           SilcFSMDestructor destructor,
                           void *destructor_context,
                           SilcSchedule schedule);
DESCRIPTION
    Allocates SILC Finite State Machine context.  The `destructor' with
    `destructor_context' will be called when the machines finishes.  The
    caller must free the returned context with silc_fsm_free.  The
    `fsm_context' is delivered to every FSM state function.  The `schedule'
    is the caller's scheduler and the FSM will be run in the scheduler.
EXAMPLE
    SilcAsyncOperation silc_async_call(Callback callback, void *cb_context)
    {
      SilcAsyncOperation op;
      SilcFSM fsm;
      ...
      // Allocate async operation so that caller can control us, like abort
      op = silc_async_alloc(silc_async_call_abort, NULL, ourcontext);
      // Start FSM
      fsm = silc_fsm_alloc(ourcontext, fsm_destructor, ourcontext,
                           schedule);
      silc_fsm_start(fsm, first_state);
      ...
      // Return async operation for upper layer
      return op;
    }
 
 
 
 |