o All payload encoding routines should take SilcStack as argument.
+ o Remove SilcCommandCb from silccommand.h.
+
o All payload test routines into lib/silccore/tests/.
compression thus it must be implemented. SILC Zip API must be
defined.
+ o Add new functions to SilcStack API in lib/silcutil/silcstack.[ch]. Add
+ silc_stack_[set|get]_byte_alignment and
+ silc_stack_[set|get]_address_alignment. The _byte_alignment defines the
+ default alignment when allocating aligned memory for structures etc.
+ The address_alignment defines the default (default is 0) alignment for
+ memory addresses SilcStack routines return. Usefull when needing
+ aligned addresses for example for hardware devices (such as crypto
+ accelerators). Move also the low level silc_stack_malloc and
+ silc_stack_realloc from silcstack_i.h to silcstack.h.
+
(o Generic SilcStatus or SilcResult that includes all possible status and
error conditions, including those of SILC protocol. Though, the SILC
protocol related status (currently in silcstatus.h) cannot be in
o The server must be able to run behind NAT device. This means that
Server ID must be based on public IP instead of private IP.
+ o The following data must be in per-connection context: client id cache,
+ server id cache, channel id cache, all statistics must be
+ per-connection.
+
+ o The following data must be in per-thread context: command context
+ freelist/pool, pending commands, random number generator.
+
+ o Do inccoming packet processing in an own FSM thread in the
+ server-threads FSM. Same as in client library.
+
o Reference count all Silc*Entry structures.
Some issues that must be kept in mind from 1.0 and 1.1 silcd's: