1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2014 Garrett D'Amore <garrett@damore.org> 23 * 24 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 25 * Use is subject to license terms. 26 */ 27 28 /* 29 * nss_netdir.h 30 * 31 * Defines structures that are shared between the OSNET-private 32 * _get_hostserv_inetnetdir_byYY() interfaces and the public 33 * interfaces gethostbyYY()/getservbyYY() and netdir_getbyYY(). 34 * Ideally, this header file should never be visible to developers 35 * outside of the OSNET build. 36 */ 37 38 #ifndef _NSS_NETDIR_H 39 #define _NSS_NETDIR_H 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 typedef enum { 46 NSS_HOST, 47 NSS_SERV, 48 NETDIR_BY, 49 NETDIR_BY_NOSRV, /* bypass service lookup */ 50 NETDIR_BY6, 51 NETDIR_BY_NOSRV6, /* bypass service lookup */ 52 NSS_HOST6 53 } nss_netdir_op_t; 54 55 struct nss_netdirbyname_in { 56 nss_netdir_op_t op_t; 57 union { 58 struct nd_hostserv *nd_hs; 59 union { 60 struct { 61 const char *name; 62 char *buf; 63 int buflen; 64 } host; 65 struct { 66 const char *name; 67 char *buf; 68 int buflen; 69 int af_family; /* for ipnode */ 70 int flags; /* for ipnode */ 71 } host6; 72 struct { 73 const char *name; 74 const char *proto; 75 char *buf; 76 int buflen; 77 } serv; 78 } nss; 79 } arg; 80 }; 81 82 union nss_netdirbyname_out { 83 struct nd_addrlist **nd_alist; 84 union { 85 struct { 86 struct hostent *hent; 87 int *herrno_p; 88 } host; 89 struct servent *serv; 90 } nss; 91 }; 92 93 struct nss_netdirbyaddr_in { 94 nss_netdir_op_t op_t; 95 union { 96 struct netbuf *nd_nbuf; 97 union { 98 struct { 99 const char *addr; 100 int len; 101 int type; 102 char *buf; 103 int buflen; 104 } host; 105 struct { 106 int port; 107 const char *proto; 108 char *buf; 109 int buflen; 110 } serv; 111 } nss; 112 } arg; 113 }; 114 115 union nss_netdirbyaddr_out { 116 struct nd_hostservlist **nd_hslist; 117 union { 118 struct { 119 struct hostent *hent; 120 int *herrno_p; 121 } host; 122 struct servent *serv; 123 } nss; 124 }; 125 126 int __classic_netdir_getbyname(struct netconfig *, 127 struct nd_hostserv *, struct nd_addrlist **); 128 int __classic_netdir_getbyaddr(struct netconfig *, 129 struct nd_hostservlist **, struct netbuf *); 130 int _get_hostserv_inetnetdir_byname(struct netconfig *, 131 struct nss_netdirbyname_in *, union nss_netdirbyname_out *); 132 int _get_hostserv_inetnetdir_byaddr(struct netconfig *, 133 struct nss_netdirbyaddr_in *, union nss_netdirbyaddr_out *); 134 int __inet_netdir_options(struct netconfig *, 135 int option, int fd, char *par); 136 struct netbuf *__inet_uaddr2taddr(struct netconfig *, char *); 137 char *__inet_taddr2uaddr(struct netconfig *, struct netbuf *); 138 139 #ifdef __cplusplus 140 } 141 #endif 142 143 #endif /* _NSS_NETDIR_H */ 144