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, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 23 /* All Rights Reserved */ 24 25 26 /* 27 * Copyright 2014 Garrett D'Amore <garrett@damore.org> 28 * 29 * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 30 * Use is subject to license terms. 31 */ 32 33 #ifndef _SYS_NETCONFIG_H 34 #define _SYS_NETCONFIG_H 35 36 #ifdef __cplusplus 37 extern "C" { 38 #endif 39 40 #define NETCONFIG "/etc/netconfig" 41 #define NETPATH "NETPATH" 42 43 struct netconfig { 44 char *nc_netid; /* network identifier */ 45 unsigned int nc_semantics; /* defined below */ 46 unsigned int nc_flag; /* defined below */ 47 char *nc_protofmly; /* protocol family name */ 48 char *nc_proto; /* protocol name */ 49 char *nc_device; /* device name for network id */ 50 unsigned int nc_nlookups; /* # of entries in nc_lookups */ 51 char **nc_lookups; /* list of lookup directories */ 52 unsigned int nc_unused[8]; /* borrowed for lockd etc. */ 53 }; 54 55 typedef struct { 56 struct netconfig **nc_head; 57 struct netconfig **nc_curr; 58 } NCONF_HANDLE; 59 60 /* 61 * Values of nc_semantics 62 */ 63 64 #define NC_TPI_CLTS 1 65 #define NC_TPI_COTS 2 66 #define NC_TPI_COTS_ORD 3 67 #define NC_TPI_RAW 4 68 /* 69 * NOT FOR PUBLIC USE, Solaris internal only. 70 * This value of nc_semantics is strictly for use of Remote Direct 71 * Memory Access provider interfaces in Solaris only and not for 72 * general use. Do not use this value for general purpose user or 73 * kernel programming. If used the behavior is undefined. 74 * This is a PRIVATE interface to be used by Solaris kRPC only. 75 */ 76 #define NC_TPI_RDMA 5 77 78 /* 79 * Values of nc_flag 80 */ 81 82 #define NC_NOFLAG 00 83 #define NC_VISIBLE 01 84 #define NC_BROADCAST 02 85 86 /* 87 * Values of nc_protofmly 88 */ 89 90 #define NC_NOPROTOFMLY "-" 91 #define NC_LOOPBACK "loopback" 92 #define NC_INET "inet" 93 #define NC_INET6 "inet6" 94 #define NC_IMPLINK "implink" 95 #define NC_PUP "pup" 96 #define NC_CHAOS "chaos" 97 #define NC_NS "ns" 98 #define NC_NBS "nbs" 99 #define NC_ECMA "ecma" 100 #define NC_DATAKIT "datakit" 101 #define NC_CCITT "ccitt" 102 #define NC_SNA "sna" 103 #define NC_DECNET "decnet" 104 #define NC_DLI "dli" 105 #define NC_LAT "lat" 106 #define NC_HYLINK "hylink" 107 #define NC_APPLETALK "appletalk" 108 #define NC_NIT "nit" 109 #define NC_IEEE802 "ieee802" 110 #define NC_OSI "osi" 111 #define NC_X25 "x25" 112 #define NC_OSINET "osinet" 113 #define NC_GOSIP "gosip" 114 /* 115 * NOT FOR PUBLIC USE, Solaris internal only. 116 * This value of nc_semantics is strictly for use of Remote Direct 117 * Memory Access provider interfaces in Solaris only and not for 118 * general use. Do not use this value for general purpose user or 119 * kernel programming. If used the behavior is undefined. 120 * This is a PRIVATE interface to be used by Solaris kRPC only. 121 */ 122 #define NC_RDMA "rdma" 123 124 /* 125 * Values for nc_proto 126 */ 127 128 #define NC_NOPROTO "-" 129 #define NC_TCP "tcp" 130 #define NC_UDP "udp" 131 #define NC_ICMP "icmp" 132 133 /* 134 * Values for nc_proto for "rdma" protofmly 135 */ 136 #define NC_KVIPL "kvipl" 137 #define NC_IBTF "ibtf" 138 #define NC_KDAPL "kdapl" 139 140 extern void *setnetconfig(void); 141 extern int endnetconfig(void *); 142 extern struct netconfig *getnetconfig(void *); 143 extern struct netconfig *getnetconfigent(const char *); 144 extern void freenetconfigent(struct netconfig *); 145 extern void *setnetpath(void); 146 extern int endnetpath(void *); 147 extern struct netconfig *getnetpath(void *); 148 extern void nc_perror(const char *); 149 extern char *nc_sperror(void); 150 151 #ifdef __cplusplus 152 } 153 #endif 154 155 #endif /* _SYS_NETCONFIG_H */