projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added dynamic protocol registering/unregistering support. The
[silc.git]
/
lib
/
silccore
/
silcprotocol.h
diff --git
a/lib/silccore/silcprotocol.h
b/lib/silccore/silcprotocol.h
index f04ffd794f843a0ffd37fe4d9895df392ee5ac2c..fd564fcbcd7d8db99941278bf1d8bb5441a5bdd7 100644
(file)
--- a/
lib/silccore/silcprotocol.h
+++ b/
lib/silccore/silcprotocol.h
@@
-91,15
+91,17
@@
typedef unsigned char SilcProtocolState;
*/
typedef SilcTaskCallback SilcProtocolCallback;
*/
typedef SilcTaskCallback SilcProtocolCallback;
-typedef struct {
+typedef struct
SilcProtocolObjectStruct
{
SilcProtocolType type;
SilcProtocolCallback callback;
SilcProtocolType type;
SilcProtocolCallback callback;
+
+ struct SilcProtocolObjectStruct *next;
} SilcProtocolObject;
typedef SilcTaskCallback SilcProtocolFinalCallback;
typedef SilcTaskCallback SilcProtocolExecute;
} SilcProtocolObject;
typedef SilcTaskCallback SilcProtocolFinalCallback;
typedef SilcTaskCallback SilcProtocolExecute;
-typedef struct SilcProtocol
Object
Struct {
+typedef struct SilcProtocolStruct {
SilcProtocolObject *protocol;
SilcProtocolState state;
void *context;
SilcProtocolObject *protocol;
SilcProtocolState state;
void *context;
@@
-110,12
+112,11
@@
typedef struct SilcProtocolObjectStruct {
SilcProtocolFinalCallback final_callback;
} *SilcProtocol;
SilcProtocolFinalCallback final_callback;
} *SilcProtocol;
-/* Definition for SILC protocol list. This list includes all the
- protocols in the SILC. SILC server and client defined own list of
- protocols. */
-extern const SilcProtocolObject silc_protocol_list[];
-
/* Prototypes */
/* Prototypes */
+void silc_protocol_register(SilcProtocolType type,
+ SilcProtocolCallback callback);
+void silc_protocol_unregister(SilcProtocolType type,
+ SilcProtocolCallback callback);
void silc_protocol_alloc(SilcProtocolType type, SilcProtocol *new_protocol,
void *context, SilcProtocolFinalCallback callback);
void silc_protocol_free(SilcProtocol protocol);
void silc_protocol_alloc(SilcProtocolType type, SilcProtocol *new_protocol,
void *context, SilcProtocolFinalCallback callback);
void silc_protocol_free(SilcProtocol protocol);