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 * Copyright 2015 Joyent, Inc.
32 */
33
34 #ifndef _SYS_NETCONFIG_H
35 #define _SYS_NETCONFIG_H
36
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40
41 #define NETCONFIG "/etc/netconfig"
42 #define NETPATH "NETPATH"
43
44 struct netconfig {
45 char *nc_netid; /* network identifier */
46 unsigned int nc_semantics; /* defined below */
47 unsigned int nc_flag; /* defined below */
48 char *nc_protofmly; /* protocol family name */
49 char *nc_proto; /* protocol name */
50 char *nc_device; /* device name for network id */
51 unsigned int nc_nlookups; /* # of entries in nc_lookups */
52 char **nc_lookups; /* list of lookup directories */
53 unsigned int nc_unused[8]; /* borrowed for lockd etc. */
54 };
55
56 typedef struct {
57 struct netconfig **nc_head;
58 struct netconfig **nc_curr;
59 } NCONF_HANDLE;
60
61 /*
62 * Values of nc_semantics
63 */
64
65 #define NC_TPI_CLTS 1
66 #define NC_TPI_COTS 2
67 #define NC_TPI_COTS_ORD 3
68 #define NC_TPI_RAW 4
69 /*
70 * NOT FOR PUBLIC USE, Solaris internal only.
71 * This value of nc_semantics is strictly for use of Remote Direct
72 * Memory Access provider interfaces in Solaris only and not for
73 * general use. Do not use this value for general purpose user or
74 * kernel programming. If used the behavior is undefined.
75 * This is a PRIVATE interface to be used by Solaris kRPC only.
76 */
77 #define NC_TPI_RDMA 5
78
79 /*
80 * Values of nc_flag
81 */
82
83 #define NC_NOFLAG 00
84 #define NC_VISIBLE 01
85 #define NC_BROADCAST 02
86
87 /*
88 * Values of nc_protofmly
89 */
90
91 #define NC_NOPROTOFMLY "-"
92 #define NC_LOOPBACK "loopback"
93 #define NC_INET "inet"
94 #define NC_INET6 "inet6"
95 #define NC_IMPLINK "implink"
96 #define NC_PUP "pup"
97 #define NC_CHAOS "chaos"
98 #define NC_NS "ns"
99 #define NC_NBS "nbs"
100 #define NC_ECMA "ecma"
101 #define NC_DATAKIT "datakit"
102 #define NC_CCITT "ccitt"
103 #define NC_SNA "sna"
104 #define NC_DECNET "decnet"
105 #define NC_DLI "dli"
106 #define NC_LAT "lat"
107 #define NC_HYLINK "hylink"
108 #define NC_APPLETALK "appletalk"
109 #define NC_NIT "nit"
110 #define NC_IEEE802 "ieee802"
111 #define NC_OSI "osi"
112 #define NC_X25 "x25"
113 #define NC_OSINET "osinet"
114 #define NC_GOSIP "gosip"
115 /*
116 * NOT FOR PUBLIC USE, Solaris internal only.
117 * This value of nc_semantics is strictly for use of Remote Direct
118 * Memory Access provider interfaces in Solaris only and not for
119 * general use. Do not use this value for general purpose user or
120 * kernel programming. If used the behavior is undefined.
121 * This is a PRIVATE interface to be used by Solaris kRPC only.
122 */
123 #define NC_RDMA "rdma"
124
125 /*
126 * Values for nc_proto
127 */
128
129 #define NC_NOPROTO "-"
130 #define NC_TCP "tcp"
131 #define NC_UDP "udp"
132 #define NC_ICMP "icmp"
133
134 /*
135 * Values for nc_proto for "rdma" protofmly
136 */
137 #define NC_KVIPL "kvipl"
138 #define NC_IBTF "ibtf"
139 #define NC_KDAPL "kdapl"
140
141 extern void *setnetconfig(void);
142 extern int endnetconfig(void *);
143 extern struct netconfig *getnetconfig(void *);
144 extern struct netconfig *getnetconfigent(const char *);
145 extern void freenetconfigent(struct netconfig *);
146 extern void *setnetpath(void);
147 extern int endnetpath(void *);
148 extern struct netconfig *getnetpath(void *);
149 extern void nc_perror(const char *);
150 extern char *nc_sperror(void);
151 extern void _nsl_brand_set_hooks(int (*)(void),
152 struct netconfig *(*)(int));
153
154 #ifdef __cplusplus
155 }
156 #endif
157
158 #endif /* _SYS_NETCONFIG_H */