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 */