1*7a286c47SDai Ngo /* 2*7a286c47SDai Ngo * CDDL HEADER START 3*7a286c47SDai Ngo * 4*7a286c47SDai Ngo * The contents of this file are subject to the terms of the 5*7a286c47SDai Ngo * Common Development and Distribution License (the "License"). 6*7a286c47SDai Ngo * You may not use this file except in compliance with the License. 7*7a286c47SDai Ngo * 8*7a286c47SDai Ngo * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*7a286c47SDai Ngo * or http://www.opensolaris.org/os/licensing. 10*7a286c47SDai Ngo * See the License for the specific language governing permissions 11*7a286c47SDai Ngo * and limitations under the License. 12*7a286c47SDai Ngo * 13*7a286c47SDai Ngo * When distributing Covered Code, include this CDDL HEADER in each 14*7a286c47SDai Ngo * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*7a286c47SDai Ngo * If applicable, add the following below this CDDL HEADER, with the 16*7a286c47SDai Ngo * fields enclosed by brackets "[]" replaced with your own identifying 17*7a286c47SDai Ngo * information: Portions Copyright [yyyy] [name of copyright owner] 18*7a286c47SDai Ngo * 19*7a286c47SDai Ngo * CDDL HEADER END 20*7a286c47SDai Ngo */ 21*7a286c47SDai Ngo 22*7a286c47SDai Ngo /* 23*7a286c47SDai Ngo * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24*7a286c47SDai Ngo * Use is subject to license terms. 25*7a286c47SDai Ngo */ 26*7a286c47SDai Ngo 27*7a286c47SDai Ngo #ifndef _RP_PLUGIN_H 28*7a286c47SDai Ngo #define _RP_PLUGIN_H 29*7a286c47SDai Ngo 30*7a286c47SDai Ngo #ifdef __cplusplus 31*7a286c47SDai Ngo extern "C" { 32*7a286c47SDai Ngo #endif 33*7a286c47SDai Ngo 34*7a286c47SDai Ngo #include <sys/types.h> 35*7a286c47SDai Ngo 36*7a286c47SDai Ngo #define RP_LIB_DIR "/usr/lib/reparse" 37*7a286c47SDai Ngo #define RP_PLUGIN_V1 1 38*7a286c47SDai Ngo 39*7a286c47SDai Ngo /* 40*7a286c47SDai Ngo * some error codes 41*7a286c47SDai Ngo */ 42*7a286c47SDai Ngo #define RP_OK 0 43*7a286c47SDai Ngo #define RP_NO_PLUGIN ENOENT 44*7a286c47SDai Ngo #define RP_NO_MEMORY ENOMEM 45*7a286c47SDai Ngo #define RP_NO_PLUGIN_DIR ENOTDIR 46*7a286c47SDai Ngo #define RP_INVALID_PROTOCOL EINVAL 47*7a286c47SDai Ngo 48*7a286c47SDai Ngo extern int rp_plugin_init(); 49*7a286c47SDai Ngo 50*7a286c47SDai Ngo typedef struct rp_plugin_ops { 51*7a286c47SDai Ngo int rpo_version; 52*7a286c47SDai Ngo int (*rpo_init)(void); 53*7a286c47SDai Ngo int (*rpo_fini)(void); 54*7a286c47SDai Ngo char *(*rpo_svc_types)(void); 55*7a286c47SDai Ngo boolean_t (*rpo_supports_svc)(const char *); 56*7a286c47SDai Ngo int (*rpo_form)(const char *, const char *, char *, size_t *); 57*7a286c47SDai Ngo int (*rpo_deref)(const char *, const char *, char *, size_t *); 58*7a286c47SDai Ngo } rp_plugin_ops_t; 59*7a286c47SDai Ngo 60*7a286c47SDai Ngo typedef struct rp_proto_plugin { 61*7a286c47SDai Ngo struct rp_proto_plugin *plugin_next; 62*7a286c47SDai Ngo rp_plugin_ops_t *plugin_ops; 63*7a286c47SDai Ngo void *plugin_handle; 64*7a286c47SDai Ngo } rp_proto_plugin_t; 65*7a286c47SDai Ngo 66*7a286c47SDai Ngo typedef struct rp_proto_handle { 67*7a286c47SDai Ngo int rp_num_proto; 68*7a286c47SDai Ngo rp_plugin_ops_t **rp_ops; 69*7a286c47SDai Ngo } rp_proto_handle_t; 70*7a286c47SDai Ngo 71*7a286c47SDai Ngo #ifdef __cplusplus 72*7a286c47SDai Ngo } 73*7a286c47SDai Ngo #endif 74*7a286c47SDai Ngo 75*7a286c47SDai Ngo #endif /* _RP_PLUGIN_H */ 76