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