OpenSS7 SS7 for the Common Man |
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |
||||||||||||||||||||||||||
Home | Overview | Status | News | Documentation | Resources | About | |||||||||||||||||||||
File /code/strss7/drivers/m2ua/m2ua.c#ident "@(#) $RCSfile: m2ua.c,v $ $Name: $($Revision: 0.8.2.3 $) $Date: 2003/04/14 12:12:54 $" static char const ident[] = "$RCSfile: m2ua.c,v $ $Name: $($Revision: 0.8.2.3 $) $Date: 2003/04/14 12:12:54 $"; #include <linux/config.h> #include <linux/version.h> #ifdef MODVERSIONS #include <linux/modversions.h> #endif #include <sys/stream.h> #include <sys/stropts.h> #include <sys/cmn_err.h> #include "m2ua.h" #include "m2ua_data.h" /* * M2UA MULTIPLEXOR * ------------------------------------------------------------------------- * This is a multiplexing driver for M2UA. When M2UA is opened by its * control stream (typically a ua configuration daemon), it provides a * control channel for configuration and routing. When opened normally, by a * user process, it provides an OpenSS7 SL Provider. OpenSS7 SL Provider * streams are I_LINKed and I_PLINKed under the multiplexor for Signalling * Gateway (SG) Use by the M2UA control stream or M2UA user stream. SL * Provider streams can be opened for Application Server (AS) use. Transport * streams (typically SCTP) are I_LINKed or I_PLINKed under the multiplexor * for both SG and AS use by the UA/LM control stream. */ #define M2UA_DESCRIP "M2UA STREAMS MULTIPLEXING DRIVER." #define M2UA_COPYRIGHT "Copyright (c) 1997-2002 OpenSS7 Corporation. All Rights Reserved." #define M2UA_DEVICE "Part of the OpenSS7 Stack for LiS STREAMS." #define M2UA_CONTACT "Brian Bidulock <bidulock@openss7.org>" #define M2UA_LICENSE "GPL" #define M2UA_BANNER M2UA_DESCRIP "\n" \ M2UA_COPYRIGHT "\n" \ M2UA_DEVICES "\n" \ M2UA_CONTACT "\n" #ifdef MODULE MODULE_AUTHOR(M2UA_CONTACT); MODULE_DESCRIPTION(M2UA_DESCRIP); MODULE_SUPPORTED_DEVICE(M2UA_DEVICE); #ifdef MODULE_LICENSE MODULE_LICENSE(M2UA_LICENSE); #endif #define MODULE_STATIC static #else #define MOD_INC_USE_COUNT #define MOD_DEC_USE_COUNT #define MODULE_STATIC #endif /* * ========================================================================= * * STREAMS Definitions * * ========================================================================= */ static struct module_info m2ua_minfo = { M2UA_MODULE_ID, /* Module ID number */ "m2ua", /* Module name */ 1, /* Min packet size accepted *//* XXX */ 512, /* Max packet size accepted *//* XXX */ 8 * 512, /* Hi water mark *//* XXX */ 1 * 512 /* Lo water mark *//* XXX */ }; static struct qinit m2ua_rinit = { ua_rput, /* Read put (msg from below) */ ua_rsrv, /* Read queue service */ ua_open, /* Each open */ ua_close, /* Last close */ NULL, /* Admin (not used) */ &m2ua_minfo, /* Information */ NULL /* Statistics */ }; static struct qinit m2ua_winit = { ua_wput, /* Write put (msg from above) */ ua_wsrv, /* Write queue service */ NULL, /* Each open */ NULL, /* Last close */ NULL, /* Admin (not used) */ &m2ua_minfo, /* Information */ NULL /* Statistics */ }; MODULE_STATIC struct streamtab m2ua_info = { &m2ua_rinit, /* Upper read queue */ &m2ua_winit, /* Upper write queue */ &m2ua_rinit, /* Lower read queue */ &m2ua_winit /* Lower write queue */ }; /* * ========================================================================= * * OPEN and CLOSE * * ========================================================================= */ static dp_t *m2ua_opens_list = NULL; static lp_t *m2ua_links_list = NULL; static struct ua_driver m2ua_dinfo = { M2UA_CMAJOR, /* Major device number */ M2UA_NMINOR, /* Number of minor devices */ sizeof(sl_t), /* Private structure size */ NULL, /* Current control queue */ &m2ua_lmq_u_ops, /* LMQ User operations */ &m2ua_ss7_u_ops, /* SS7 User operations */ &m2ua_opens_list, /* Opened structures list */ &m2ua_links_list /* Linked structures list */ }; /* * ========================================================================= * * LiS MODULE INITIALIZATION * * ========================================================================= */ static m2ua_initialized = 0; #ifndef LIS_REGISTERED static inline void m2ua_init(void) #else __initfunc(void m2ua_init(void)) #endif { if (m2ua_initialized) return; m2ua_initialized = 1; printk(KERN_INFO M2UA_BANNER); /* console splash */ #ifndef LIS_REGISTERED if (lis_register_strdev(M2UA_CMAJOR, &m2ua_info, M2UA_NMINOR, m2ua_minfo.mi_idname) < 0) { cmn_err(CE_NOTE, "m2ua: couldn't register module!\n"); m2ua_minfo.mi_idnum = 0; } m2ua_minfo.mi_idnum = M2UA_CMAJOR; #endif m2ua_driver = &m2ua_dinfo; } #ifndef LIS_REGISTERED static inline void m2ua_terminate(void) #else __initfunc(void m2ua_terminate(void)) #endif { if (!m2ua_initialized) return; m2ua_initialized = 0; #ifndef LIS_REGISTERED if (m2ua_minfo.mi_idnum) if (lis_unregister_strdev(m2ua_minfo.mi_idnum) < 0) cmn_err(CE_WARN, "m2ua: couldn't unregister module!\n"); #endif m2ua_driver = NULL; } /* * ========================================================================= * * LINUX KERNEL MODULE INITIALIZATION * * ========================================================================= */ #ifdef MODULE int init_module(void) { m2ua_init(); return (0); } void cleanup_module(void) { m2ua_terminate(); return; } #endif
|
|||||||||||||||||||||||||||
OpenSS7 SS7 for the Common Man |
Home | Overview | Status | News | Documentation | Resources | About | ||||||||||||||||||||
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |