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 /*
  23  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  * Copyright (c) 2016, Chris Fraire <cfraire@me.com>.
  26  */
  27 
  28 #ifndef _NWAMCFG_H
  29 #define _NWAMCFG_H
  30 
  31 /*
  32  * header file for nwamcfg command
  33  */
  34 
  35 #ifdef __cplusplus
  36 extern "C" {
  37 #endif
  38 
  39 #define NWAM_OK                 0
  40 #define NWAM_ERR                1
  41 #define NWAM_REPEAT             2
  42 
  43 /* max length of "ncu", "ncp", "loc", "enm", "wlan" */
  44 #define NWAM_MAX_TYPE_LEN       5
  45 
  46 #define CMD_CANCEL              0
  47 #define CMD_CLEAR               1
  48 #define CMD_COMMIT              2
  49 #define CMD_CREATE              3
  50 #define CMD_DESTROY             4
  51 #define CMD_END                 5
  52 #define CMD_EXIT                6
  53 #define CMD_EXPORT              7
  54 #define CMD_GET                 8
  55 #define CMD_HELP                9
  56 #define CMD_LIST                10
  57 #define CMD_REVERT              11
  58 #define CMD_SELECT              12
  59 #define CMD_SET                 13
  60 #define CMD_VERIFY              14
  61 #define CMD_WALKPROP            15
  62 
  63 #define CMD_MIN CMD_CANCEL
  64 #define CMD_MAX CMD_WALKPROP
  65 
  66 /* one-level resource types */
  67 #define RT1_UNKNOWN             0
  68 #define RT1_LOC                 1
  69 #define RT1_NCP                 2
  70 #define RT1_ENM                 3
  71 #define RT1_WLAN                4
  72 
  73 #define RT1_MIN                 RT1_UNKNOWN
  74 #define RT1_MAX                 RT1_WLAN
  75 
  76 /* two-level resource types */
  77 #define RT2_UNKNOWN             0
  78 #define RT2_NCU                 1
  79 
  80 #define RT2_MIN                 RT2_UNKNOWN
  81 #define RT2_MAX                 RT2_NCU
  82 
  83 /* class types for NCU's */
  84 #define NCU_CLASS_PHYS          0
  85 #define NCU_CLASS_IP            1
  86 #define NCU_CLASS_ANY           2
  87 
  88 #define NCU_CLASS_MIN           NCU_CLASS_PHYS
  89 #define NCU_CLASS_MAX           NCU_CLASS_ANY
  90 
  91 /* property types, matches NWAM_*_PROP_* from libnwam.h */
  92 #define PT_UNKNOWN              0
  93 #define PT_ACTIVATION_MODE      1
  94 #define PT_ENABLED              2
  95 #define PT_TYPE                 3
  96 #define PT_CLASS                4
  97 #define PT_PARENT               5
  98 #define PT_PRIORITY_GROUP       6
  99 #define PT_PRIORITY_MODE        7
 100 #define PT_LINK_MACADDR         8
 101 #define PT_LINK_AUTOPUSH        9
 102 #define PT_LINK_MTU             10
 103 #define PT_IP_VERSION           11
 104 #define PT_IPV4_ADDRSRC         12
 105 #define PT_IPV4_ADDR            13
 106 #define PT_IPV4_DEFAULT_ROUTE   14
 107 #define PT_IPV6_ADDRSRC         15
 108 #define PT_IPV6_ADDR            16
 109 #define PT_IPV6_DEFAULT_ROUTE   17
 110 #define PT_CONDITIONS           18
 111 #define PT_ENM_FMRI             19
 112 #define PT_ENM_START            20
 113 #define PT_ENM_STOP             21
 114 #define PT_LOC_NAMESERVICES     22
 115 #define PT_LOC_NAMESERVICES_CONFIG 23
 116 #define PT_LOC_DNS_CONFIGSRC    24
 117 #define PT_LOC_DNS_DOMAIN       25
 118 #define PT_LOC_DNS_SERVERS      26
 119 #define PT_LOC_DNS_SEARCH       27
 120 #define PT_LOC_NIS_CONFIGSRC    28
 121 #define PT_LOC_NIS_SERVERS      29
 122 #define PT_LOC_LDAP_CONFIGSRC   30
 123 #define PT_LOC_LDAP_SERVERS     31
 124 #define PT_LOC_DEFAULT_DOMAIN   32
 125 #define PT_LOC_NFSV4_DOMAIN     33
 126 #define PT_LOC_IPF_CONFIG       34
 127 #define PT_LOC_IPF_V6_CONFIG    35
 128 #define PT_LOC_IPNAT_CONFIG     36
 129 #define PT_LOC_IPPOOL_CONFIG    37
 130 #define PT_LOC_IKE_CONFIG       38
 131 #define PT_LOC_IPSECPOL_CONFIG  39
 132 #define PT_WLAN_BSSIDS          40
 133 #define PT_WLAN_PRIORITY        41
 134 #define PT_WLAN_KEYNAME         42
 135 #define PT_WLAN_KEYSLOT         43
 136 #define PT_WLAN_SECURITY_MODE   44
 137 #define PT_IP_PRIMARY           45
 138 #define PT_IP_REQHOST           46
 139 /*
 140  * If any new PT_ are defined here, make sure it is added in the same
 141  * order into the pt_types array in nwamcfg.c
 142  */
 143 #define PT_MIN                  PT_UNKNOWN
 144 #define PT_MAX                  PT_IP_REQHOST
 145 
 146 #define MAX_SUBCMD_ARGS 3
 147 
 148 typedef struct cmd {
 149         int     cmd_num;
 150         void    (*cmd_handler)(struct cmd *);
 151         int     cmd_res1_type;
 152         int     cmd_res2_type;
 153         int     cmd_prop_type;
 154         int     cmd_ncu_class_type;
 155         int     cmd_argc;
 156         char    *cmd_argv[MAX_SUBCMD_ARGS + 1];
 157 } cmd_t;
 158 
 159 /* Fuctions for each command */
 160 typedef void (cmd_func_t)(cmd_t *);
 161 
 162 extern cmd_func_t cancel_func, clear_func, commit_func, create_func;
 163 extern cmd_func_t destroy_func, end_func, exit_func, export_func, get_func;
 164 extern cmd_func_t help_func, list_func, revert_func, select_func, set_func;
 165 extern cmd_func_t verify_func, walkprop_func;
 166 
 167 extern cmd_t *alloc_cmd(void);
 168 extern void free_cmd(cmd_t *cmd);
 169 
 170 extern boolean_t check_scope(int);
 171 extern const char *cmd_to_str(int);
 172 
 173 extern void nerr(const char *, ...);
 174 extern void properr(const char *);
 175 
 176 extern boolean_t saw_error;
 177 
 178 extern FILE *yyin;
 179 
 180 #ifdef __cplusplus
 181 }
 182 #endif
 183 
 184 #endif  /* _NWAMCFG_H */