1*7513SDarren.Reed@Sun.COM /* 2*7513SDarren.Reed@Sun.COM * CDDL HEADER START 3*7513SDarren.Reed@Sun.COM * 4*7513SDarren.Reed@Sun.COM * The contents of this file are subject to the terms of the 5*7513SDarren.Reed@Sun.COM * Common Development and Distribution License (the "License"). 6*7513SDarren.Reed@Sun.COM * You may not use this file except in compliance with the License. 7*7513SDarren.Reed@Sun.COM * 8*7513SDarren.Reed@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*7513SDarren.Reed@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*7513SDarren.Reed@Sun.COM * See the License for the specific language governing permissions 11*7513SDarren.Reed@Sun.COM * and limitations under the License. 12*7513SDarren.Reed@Sun.COM * 13*7513SDarren.Reed@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*7513SDarren.Reed@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*7513SDarren.Reed@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*7513SDarren.Reed@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*7513SDarren.Reed@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*7513SDarren.Reed@Sun.COM * 19*7513SDarren.Reed@Sun.COM * CDDL HEADER END 20*7513SDarren.Reed@Sun.COM */ 21*7513SDarren.Reed@Sun.COM /* 22*7513SDarren.Reed@Sun.COM * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23*7513SDarren.Reed@Sun.COM * Use is subject to license terms. 24*7513SDarren.Reed@Sun.COM */ 25*7513SDarren.Reed@Sun.COM 26*7513SDarren.Reed@Sun.COM #include <sys/param.h> 27*7513SDarren.Reed@Sun.COM #include <sys/modctl.h> 28*7513SDarren.Reed@Sun.COM #include <sys/neti.h> 29*7513SDarren.Reed@Sun.COM 30*7513SDarren.Reed@Sun.COM 31*7513SDarren.Reed@Sun.COM /* 32*7513SDarren.Reed@Sun.COM * Module linkage information for the kernel. 33*7513SDarren.Reed@Sun.COM */ 34*7513SDarren.Reed@Sun.COM static struct modldrv modlmisc = { 35*7513SDarren.Reed@Sun.COM &mod_miscops, /* drv_modops */ 36*7513SDarren.Reed@Sun.COM "netinfo module", /* drv_linkinfo */ 37*7513SDarren.Reed@Sun.COM }; 38*7513SDarren.Reed@Sun.COM 39*7513SDarren.Reed@Sun.COM static struct modlinkage modlinkage = { 40*7513SDarren.Reed@Sun.COM MODREV_1, /* ml_rev */ 41*7513SDarren.Reed@Sun.COM &modlmisc, /* ml_linkage */ 42*7513SDarren.Reed@Sun.COM NULL 43*7513SDarren.Reed@Sun.COM }; 44*7513SDarren.Reed@Sun.COM 45*7513SDarren.Reed@Sun.COM /* 46*7513SDarren.Reed@Sun.COM * Module entry points. 47*7513SDarren.Reed@Sun.COM */ 48*7513SDarren.Reed@Sun.COM int _init(void)49*7513SDarren.Reed@Sun.COM_init(void) 50*7513SDarren.Reed@Sun.COM { 51*7513SDarren.Reed@Sun.COM int error; 52*7513SDarren.Reed@Sun.COM 53*7513SDarren.Reed@Sun.COM neti_init(); 54*7513SDarren.Reed@Sun.COM error = mod_install(&modlinkage); 55*7513SDarren.Reed@Sun.COM if (error != 0) 56*7513SDarren.Reed@Sun.COM neti_fini(); 57*7513SDarren.Reed@Sun.COM 58*7513SDarren.Reed@Sun.COM return (error); 59*7513SDarren.Reed@Sun.COM } 60*7513SDarren.Reed@Sun.COM 61*7513SDarren.Reed@Sun.COM 62*7513SDarren.Reed@Sun.COM int _fini(void)63*7513SDarren.Reed@Sun.COM_fini(void) 64*7513SDarren.Reed@Sun.COM { 65*7513SDarren.Reed@Sun.COM int error; 66*7513SDarren.Reed@Sun.COM 67*7513SDarren.Reed@Sun.COM error = mod_remove(&modlinkage); 68*7513SDarren.Reed@Sun.COM if (error == 0) 69*7513SDarren.Reed@Sun.COM neti_fini(); 70*7513SDarren.Reed@Sun.COM 71*7513SDarren.Reed@Sun.COM return (error); 72*7513SDarren.Reed@Sun.COM } 73*7513SDarren.Reed@Sun.COM 74*7513SDarren.Reed@Sun.COM 75*7513SDarren.Reed@Sun.COM int _info(struct modinfo * modinfop)76*7513SDarren.Reed@Sun.COM_info(struct modinfo *modinfop) 77*7513SDarren.Reed@Sun.COM { 78*7513SDarren.Reed@Sun.COM 79*7513SDarren.Reed@Sun.COM return (mod_info(&modlinkage, modinfop)); 80*7513SDarren.Reed@Sun.COM } 81