1 /* $Id divert_init.c,v 1.5.6.2 2001/01/24 22:18:17 kai Exp $
3 * Module init for DSS1 diversion services for i4l.
5 * Copyright 1999 by Werner Cornelius (werner@isdn4linux.de)
7 * This software may be used and distributed according to the terms
8 * of the GNU General Public License, incorporated herein by reference.
12 #include <linux/module.h>
13 #include <linux/version.h>
14 #include <linux/init.h>
15 #include "isdn_divert.h"
17 MODULE_DESCRIPTION("ISDN4Linux: Call diversion support");
18 MODULE_AUTHOR("Werner Cornelius");
19 MODULE_LICENSE("GPL");
21 /********************/
22 /* needed externals */
23 /********************/
24 extern int printk(const char *fmt
,...);
26 /****************************************/
27 /* structure containing interface to hl */
28 /****************************************/
29 isdn_divert_if divert_if
=
30 { DIVERT_IF_MAGIC
, /* magic value */
31 DIVERT_CMD_REG
, /* register cmd */
32 ll_callback
, /* callback routine from ll */
33 NULL
, /* command still not specified */
34 NULL
, /* drv_to_name */
35 NULL
, /* name_to_drv */
38 /*************************/
39 /* Module interface code */
40 /* no cmd line parms */
41 /*************************/
42 static int __init
divert_init(void)
45 if (divert_dev_init())
46 { printk(KERN_WARNING
"dss1_divert: cannot install device, not loaded\n");
49 if ((i
= DIVERT_REG_NAME(&divert_if
)) != DIVERT_NO_ERR
)
50 { divert_dev_deinit();
51 printk(KERN_WARNING
"dss1_divert: error %d registering module, not loaded\n",i
);
54 printk(KERN_INFO
"dss1_divert module successfully installed\n");
58 /**********************/
59 /* Module deinit code */
60 /**********************/
61 static void __exit
divert_exit(void)
62 { unsigned long flags
;
67 divert_if
.cmd
= DIVERT_CMD_REL
; /* release */
68 if ((i
= DIVERT_REG_NAME(&divert_if
)) != DIVERT_NO_ERR
)
69 { printk(KERN_WARNING
"dss1_divert: error %d releasing module\n",i
);
73 if (divert_dev_deinit())
74 { printk(KERN_WARNING
"dss1_divert: device busy, remove cancelled\n");
79 deleterule(-1); /* delete all rules and free mem */
81 printk(KERN_INFO
"dss1_divert module successfully removed \n");
84 module_init(divert_init
);
85 module_exit(divert_exit
);