1 /* 2 * spppcomp_mod.c - modload support for PPP compression STREAMS module. 3 * 4 * Copyright (c) 2011 Bayard G. Bell. All rights reserved. 5 * 6 * CONTRIBUTOR MAKES NO REPRESENTATION OR WARRANTIES ABOUT THE SUITABILITY 7 * OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 8 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 9 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. CONTRIBUTOR SHALL NOT BE LIABLE 10 * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR 11 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES 12 * 13 * Copyright (c) 2000 by Sun Microsystems, Inc. 14 * All rights reserved. 15 * 16 * Permission to use, copy, modify, and distribute this software and its 17 * documentation is hereby granted, provided that the above copyright 18 * notice appears in all copies. 19 * 20 * SUN MAKES NO REPRESENTATION OR WARRANTIES ABOUT THE SUITABILITY OF 21 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 22 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 23 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR 24 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR 25 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES 26 * 27 * Copyright (c) 1994 The Australian National University. 28 * All rights reserved. 29 * 30 * Permission to use, copy, modify, and distribute this software and its 31 * documentation is hereby granted, provided that the above copyright 32 * notice appears in all copies. This software is provided without any 33 * warranty, express or implied. The Australian National University 34 * makes no representations about the suitability of this software for 35 * any purpose. 36 * 37 * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY 38 * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 39 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF 40 * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY 41 * OF SUCH DAMAGE. 42 * 43 * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, 44 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 45 * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 46 * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO 47 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, 48 * OR MODIFICATIONS. 49 * 50 * This module is derived from the original SVR4 STREAMS PPP compression 51 * module originally written by Paul Mackerras <paul.mackerras@cs.anu.edu.au>. 52 * 53 * James Carlson <james.d.carlson@sun.com> and Adi Masputra 54 * <adi.masputra@sun.com> rewrote and restructured the code for improved 55 * performance and scalability. 56 */ 57 58 #include <sys/types.h> 59 #include <sys/syslog.h> 60 #include <sys/conf.h> 61 #include <sys/errno.h> 62 #include <sys/ddi.h> 63 #include <sys/conf.h> 64 #include <sys/modctl.h> 65 #include <net/pppio.h> 66 67 #include "s_common.h" 68 69 /* 70 * Globals for PPP compression loadable module wrapper 71 */ 72 extern struct streamtab spppcomp_tab; 73 extern const char spppcomp_module_description[]; 74 75 static struct fmodsw fsw = { 76 COMP_MOD_NAME, /* f_name */ 77 &spppcomp_tab, /* f_str */ 78 D_NEW | D_MP | D_MTPERQ /* f_flag */ 79 }; 80 81 static struct modlstrmod modlstrmod = { 82 &mod_strmodops, /* strmod_modops */ 83 (char *)spppcomp_module_description, /* strmod_linkinfo */ 84 &fsw /* strmod_fmodsw */ 85 }; 86 87 static struct modlinkage modlinkage = { 88 MODREV_1, /* ml_rev, has to be MODREV_1 */ 89 { (void *) &modlstrmod, NULL } /* ml_linkage, NULL-terminated list */ 90 }; 91 92 int 93 _init(void) 94 { 95 return (mod_install(&modlinkage)); 96 } 97 98 int 99 _fini(void) 100 { 101 return (mod_remove(&modlinkage)); 102 } 103 104 int 105 _info(struct modinfo *modinfop) 106 { 107 return (mod_info(&modlinkage, modinfop)); 108 }