1*ddf7fe95Scasper /* 2*ddf7fe95Scasper * CDDL HEADER START 3*ddf7fe95Scasper * 4*ddf7fe95Scasper * The contents of this file are subject to the terms of the 5*ddf7fe95Scasper * Common Development and Distribution License (the "License"). 6*ddf7fe95Scasper * You may not use this file except in compliance with the License. 7*ddf7fe95Scasper * 8*ddf7fe95Scasper * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*ddf7fe95Scasper * or http://www.opensolaris.org/os/licensing. 10*ddf7fe95Scasper * See the License for the specific language governing permissions 11*ddf7fe95Scasper * and limitations under the License. 12*ddf7fe95Scasper * 13*ddf7fe95Scasper * When distributing Covered Code, include this CDDL HEADER in each 14*ddf7fe95Scasper * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*ddf7fe95Scasper * If applicable, add the following below this CDDL HEADER, with the 16*ddf7fe95Scasper * fields enclosed by brackets "[]" replaced with your own identifying 17*ddf7fe95Scasper * information: Portions Copyright [yyyy] [name of copyright owner] 18*ddf7fe95Scasper * 19*ddf7fe95Scasper * CDDL HEADER END 20*ddf7fe95Scasper */ 21*ddf7fe95Scasper /* 22*ddf7fe95Scasper * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23*ddf7fe95Scasper * Use is subject to license terms. 24*ddf7fe95Scasper */ 25*ddf7fe95Scasper 26*ddf7fe95Scasper #ifndef _SYS_KLPD_H 27*ddf7fe95Scasper #define _SYS_KLPD_H 28*ddf7fe95Scasper 29*ddf7fe95Scasper #pragma ident "%Z%%M% %I% %E% SMI" 30*ddf7fe95Scasper 31*ddf7fe95Scasper #include <sys/types.h> 32*ddf7fe95Scasper #include <sys/priv.h> 33*ddf7fe95Scasper #include <sys/procset.h> 34*ddf7fe95Scasper 35*ddf7fe95Scasper #ifdef _KERNEL 36*ddf7fe95Scasper #include <sys/cred.h> 37*ddf7fe95Scasper #include <sys/sysmacros.h> 38*ddf7fe95Scasper #include <sys/varargs.h> 39*ddf7fe95Scasper #endif 40*ddf7fe95Scasper 41*ddf7fe95Scasper #ifdef __cplusplus 42*ddf7fe95Scasper extern "C" { 43*ddf7fe95Scasper #endif 44*ddf7fe95Scasper 45*ddf7fe95Scasper #define KLPDCALL_VERS 1 46*ddf7fe95Scasper 47*ddf7fe95Scasper #define KLPDARG_NOMORE 0 /* End of argument List */ 48*ddf7fe95Scasper #define KLPDARG_NONE 0 /* No argument */ 49*ddf7fe95Scasper #define KLPDARG_VNODE 1 /* vnode_t * */ 50*ddf7fe95Scasper #define KLPDARG_INT 2 /* int */ 51*ddf7fe95Scasper #define KLPDARG_PORT 3 /* int, port number */ 52*ddf7fe95Scasper #define KLPDARG_TCPPORT 4 /* int, tcp port number */ 53*ddf7fe95Scasper #define KLPDARG_UDPPORT 5 /* int, udp port number */ 54*ddf7fe95Scasper #define KLPDARG_SCTPPORT 6 /* int, sctp port number */ 55*ddf7fe95Scasper #define KLPDARG_SDPPORT 7 /* int, sdp port number */ 56*ddf7fe95Scasper 57*ddf7fe95Scasper #ifdef _KERNEL 58*ddf7fe95Scasper 59*ddf7fe95Scasper struct klpd_reg; 60*ddf7fe95Scasper struct credklpd; 61*ddf7fe95Scasper 62*ddf7fe95Scasper int klpd_reg(int, idtype_t, id_t, priv_set_t *); 63*ddf7fe95Scasper int klpd_unreg(int, idtype_t, id_t); 64*ddf7fe95Scasper void klpd_remove(struct klpd_reg **); 65*ddf7fe95Scasper void klpd_rele(struct klpd_reg *); 66*ddf7fe95Scasper int klpd_call(const cred_t *, const priv_set_t *, va_list); 67*ddf7fe95Scasper void crklpd_hold(struct credklpd *); 68*ddf7fe95Scasper void crklpd_rele(struct credklpd *); 69*ddf7fe95Scasper 70*ddf7fe95Scasper #endif /* _KERNEL */ 71*ddf7fe95Scasper 72*ddf7fe95Scasper typedef struct klpd_head { 73*ddf7fe95Scasper uint32_t klh_vers; /* Version */ 74*ddf7fe95Scasper uint32_t klh_len; /* Length of full packet */ 75*ddf7fe95Scasper uint32_t klh_argoff; /* Offset of argument */ 76*ddf7fe95Scasper uint32_t klh_privoff; /* Offset of privilege set */ 77*ddf7fe95Scasper } klpd_head_t; 78*ddf7fe95Scasper 79*ddf7fe95Scasper #define KLH_PRIVSET(kh) ((priv_set_t *)(((kh)->klh_privoff == 0 ? NULL : \ 80*ddf7fe95Scasper (char *)(kh) + (kh)->klh_privoff))) 81*ddf7fe95Scasper #define KLH_ARG(kh) ((void *)((kh)->klh_argoff != 0 ? \ 82*ddf7fe95Scasper (char *)(kh) + (kh)->klh_argoff : NULL)) 83*ddf7fe95Scasper 84*ddf7fe95Scasper typedef struct klpd_arg { 85*ddf7fe95Scasper uint_t kla_type; 86*ddf7fe95Scasper uint_t kla_dlen; 87*ddf7fe95Scasper union { 88*ddf7fe95Scasper char __cdata[1]; 89*ddf7fe95Scasper int __idata; 90*ddf7fe95Scasper uint_t __uidata; 91*ddf7fe95Scasper } kla_data; 92*ddf7fe95Scasper } klpd_arg_t; 93*ddf7fe95Scasper 94*ddf7fe95Scasper #define kla_str kla_data.__cdata 95*ddf7fe95Scasper #define kla_int kla_data.__idata 96*ddf7fe95Scasper #define kla_uint kla_data.__uidata 97*ddf7fe95Scasper 98*ddf7fe95Scasper #ifdef __cplusplus 99*ddf7fe95Scasper } 100*ddf7fe95Scasper #endif 101*ddf7fe95Scasper 102*ddf7fe95Scasper #endif /* _SYS_KLPD_H */ 103