annotate usr/src/cmd/cmd-inet/usr.sbin/nwamcfg/nwamcfg.c @ 13046:b615ff9cec13

6971008 nwamcfg revert emits confusing message
author Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
date Fri, 06 Aug 2010 14:58:14 -0400
parents 8f30d0e611c6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11767
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2 * CDDL HEADER START
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4 * The contents of this file are subject to the terms of the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
5 * Common Development and Distribution License (the "License").
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
6 * You may not use this file except in compliance with the License.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
7 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
9 * or http://www.opensolaris.org/os/licensing.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
10 * See the License for the specific language governing permissions
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
11 * and limitations under the License.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
12 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
13 * When distributing Covered Code, include this CDDL HEADER in each
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
15 * If applicable, add the following below this CDDL HEADER, with the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
16 * fields enclosed by brackets "[]" replaced with your own identifying
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
17 * information: Portions Copyright [yyyy] [name of copyright owner]
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
18 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
19 * CDDL HEADER END
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
20 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
21
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
22 /*
13046
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
23 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
11767
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
24 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
25
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
26 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
27 * nwamcfg is a lex/yacc based command interpreter used to manage network
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
28 * configurations. The lexer (see nwamcfg_lex.l) builds up tokens, which
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
29 * the grammar (see nwamcfg_grammar.y) builds up into commands, some of
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
30 * which takes resources and/or properties as arguments.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
31 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
32
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
33 #include <arpa/inet.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
34 #include <assert.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
35 #include <ctype.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
36 #include <errno.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
37 #include <libnwam.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
38 #include <libtecla.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
39 #include <locale.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
40 #include <stdarg.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
41 #include <stdio.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
42 #include <string.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
43 #include <sys/stat.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
44 #include <sys/sysmacros.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
45 #include <sys/types.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
46 #include <unistd.h>
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
47
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
48 #include "nwamcfg.h"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
49
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
50 #if !defined(TEXT_DOMAIN) /* should be defined by cc -D */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
51 #define TEXT_DOMAIN "SYS_TEST" /* Use this only if it wasn't */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
52 #endif
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
53
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
54 struct help {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
55 uint_t cmd_num;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
56 const char *cmd_name;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
57 const char *cmd_usage;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
58 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
59
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
60 extern int yyparse(void);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
61 extern int lex_lineno;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
62
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
63 #define MAX_LINE_LEN 1024
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
64 #define MAX_CMD_HIST 1024
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
65
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
66 /* usage of commands */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
67 #define SHELP_CANCEL "cancel"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
68 #define SHELP_CLEAR "clear <prop-name>"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
69 #define SHELP_COMMIT "commit"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
70 #define SHELP_CREATE "create [-t <template>] <object-type> [<class>] " \
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
71 "<object-name>"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
72 #define SHELP_DESTROY "destroy {-a | <object-type> [<class>] <object-name>}"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
73 #define SHELP_END "end"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
74 #define SHELP_EXIT "exit"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
75 #define SHELP_EXPORT "export [-d] [-f <output-file>] " \
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
76 "[<object-type> [<class>] <object-name>]"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
77 #define SHELP_GET "get [-V] <prop-name>"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
78 #define SHELP_HELP "help [command-name]"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
79 #define SHELP_LIST "list [-a] [<object-type> [<class>] <object-name>]"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
80 #define SHELP_REVERT "revert"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
81 #define SHELP_SELECT "select <object-type> [<class>] <object-name>"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
82 #define SHELP_SET "set <prop-name>=<value1>[,<value2>...]"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
83 #define SHELP_VERIFY "verify"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
84 #define SHELP_WALK "walkprop [-a]"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
85
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
86 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
87 * Scope Definitions:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
88 * Locations, ENMs, NCPs and Known WLANs are one scope level below global (GBL).
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
89 * NCUs are one more level beneath the NCP scope.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
90 * Because the commands in Locations/ENM/Known WLAN and NCP level are different,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
91 * the scope are divided accordingly.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
92 * GBL->LOC, GBL->ENM, GBL->WLAN or GBL->NCP->NCU
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
93 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
94 #define NWAM_SCOPE_GBL 0
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
95 #define NWAM_SCOPE_LOC 1
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
96 #define NWAM_SCOPE_ENM 2
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
97 #define NWAM_SCOPE_WLAN 3
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
98 #define NWAM_SCOPE_NCP 4
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
99 #define NWAM_SCOPE_NCU 5
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
100
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
101 /* delimiter used for list of values */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
102 #define NWAM_VALUE_DELIMITER_CHAR ','
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
103 #define NWAM_VALUE_DELIMITER_STR ","
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
104
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
105 /* the max number of values for an enum used by some properties in libnwam */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
106
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
107 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
108 * All arrays/tables are null-terminated, rather than defining the length of
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
109 * the array. When looping, check for NULL rather than using the size.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
110 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
111
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
112 static struct help helptab[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
113 { CMD_CANCEL, "cancel", SHELP_CANCEL },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
114 { CMD_CLEAR, "clear", SHELP_CLEAR },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
115 { CMD_COMMIT, "commit", SHELP_COMMIT },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
116 { CMD_CREATE, "create", SHELP_CREATE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
117 { CMD_DESTROY, "destroy", SHELP_DESTROY },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
118 { CMD_END, "end", SHELP_END },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
119 { CMD_EXIT, "exit", SHELP_EXIT },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
120 { CMD_EXPORT, "export", SHELP_EXPORT },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
121 { CMD_GET, "get", SHELP_GET },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
122 { CMD_HELP, "help", SHELP_HELP },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
123 { CMD_LIST, "list", SHELP_LIST },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
124 { CMD_REVERT, "revert", SHELP_REVERT },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
125 { CMD_SELECT, "select", SHELP_SELECT },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
126 { CMD_SET, "set", SHELP_SET },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
127 { CMD_VERIFY, "verify", SHELP_VERIFY },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
128 { CMD_WALKPROP, "walkprop", SHELP_WALK },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
129 { 0, NULL, NULL }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
130 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
131
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
132 /* These *must* match the order of the RT1_ define's from nwamcfg.h */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
133 static char *res1_types[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
134 "unknown",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
135 "loc",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
136 "ncp",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
137 "enm",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
138 "wlan",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
139 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
140 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
141
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
142 /* These *must* match the order of the RT2_ define's from nwamcfg.h */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
143 static char *res2_types[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
144 "unknown",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
145 "ncu",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
146 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
147 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
148
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
149 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
150 * No array for NCU_CLASS_. The #define's in nwamcfg.h matches the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
151 * enum nwam_ncu_class_t in libnwam and thus uses libnwam functions to
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
152 * retrieve the string representation.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
153 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
154
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
155 /* These *MUST* match the order of the PT_ define's from nwamcfg.h */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
156 static char *pt_types[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
157 "unknown",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
158 NWAM_NCU_PROP_ACTIVATION_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
159 NWAM_NCU_PROP_ENABLED,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
160 NWAM_NCU_PROP_TYPE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
161 NWAM_NCU_PROP_CLASS,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
162 NWAM_NCU_PROP_PARENT_NCP,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
163 NWAM_NCU_PROP_PRIORITY_GROUP,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
164 NWAM_NCU_PROP_PRIORITY_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
165 NWAM_NCU_PROP_LINK_MAC_ADDR,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
166 NWAM_NCU_PROP_LINK_AUTOPUSH,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
167 NWAM_NCU_PROP_LINK_MTU,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
168 NWAM_NCU_PROP_IP_VERSION,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
169 NWAM_NCU_PROP_IPV4_ADDRSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
170 NWAM_NCU_PROP_IPV4_ADDR,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
171 NWAM_NCU_PROP_IPV4_DEFAULT_ROUTE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
172 NWAM_NCU_PROP_IPV6_ADDRSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
173 NWAM_NCU_PROP_IPV6_ADDR,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
174 NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
175 NWAM_LOC_PROP_CONDITIONS,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
176 NWAM_ENM_PROP_FMRI,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
177 NWAM_ENM_PROP_START,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
178 NWAM_ENM_PROP_STOP,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
179 NWAM_LOC_PROP_NAMESERVICES,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
180 NWAM_LOC_PROP_NAMESERVICES_CONFIG_FILE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
181 NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
182 NWAM_LOC_PROP_DNS_NAMESERVICE_DOMAIN,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
183 NWAM_LOC_PROP_DNS_NAMESERVICE_SERVERS,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
184 NWAM_LOC_PROP_DNS_NAMESERVICE_SEARCH,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
185 NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
186 NWAM_LOC_PROP_NIS_NAMESERVICE_SERVERS,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
187 NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
188 NWAM_LOC_PROP_LDAP_NAMESERVICE_SERVERS,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
189 NWAM_LOC_PROP_DEFAULT_DOMAIN,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
190 NWAM_LOC_PROP_NFSV4_DOMAIN,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
191 NWAM_LOC_PROP_IPFILTER_CONFIG_FILE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
192 NWAM_LOC_PROP_IPFILTER_V6_CONFIG_FILE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
193 NWAM_LOC_PROP_IPNAT_CONFIG_FILE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
194 NWAM_LOC_PROP_IPPOOL_CONFIG_FILE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
195 NWAM_LOC_PROP_IKE_CONFIG_FILE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
196 NWAM_LOC_PROP_IPSECPOLICY_CONFIG_FILE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
197 NWAM_KNOWN_WLAN_PROP_BSSIDS,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
198 NWAM_KNOWN_WLAN_PROP_PRIORITY,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
199 NWAM_KNOWN_WLAN_PROP_KEYNAME,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
200 NWAM_KNOWN_WLAN_PROP_KEYSLOT,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
201 NWAM_KNOWN_WLAN_PROP_SECURITY_MODE
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
202 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
203
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
204 /* properties table: maps PT_* constants to property names */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
205 typedef struct prop_table_entry {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
206 int pte_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
207 const char *pte_name;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
208 } prop_table_entry_t;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
209
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
210 /* NCU properties table */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
211 static prop_table_entry_t ncu_prop_table[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
212 { PT_TYPE, NWAM_NCU_PROP_TYPE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
213 { PT_CLASS, NWAM_NCU_PROP_CLASS },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
214 { PT_PARENT, NWAM_NCU_PROP_PARENT_NCP },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
215 { PT_ACTIVATION_MODE, NWAM_NCU_PROP_ACTIVATION_MODE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
216 { PT_ENABLED, NWAM_NCU_PROP_ENABLED },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
217 { PT_PRIORITY_GROUP, NWAM_NCU_PROP_PRIORITY_GROUP },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
218 { PT_PRIORITY_MODE, NWAM_NCU_PROP_PRIORITY_MODE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
219 { PT_LINK_MACADDR, NWAM_NCU_PROP_LINK_MAC_ADDR },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
220 { PT_LINK_AUTOPUSH, NWAM_NCU_PROP_LINK_AUTOPUSH },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
221 { PT_LINK_MTU, NWAM_NCU_PROP_LINK_MTU },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
222 { PT_IP_VERSION, NWAM_NCU_PROP_IP_VERSION },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
223 { PT_IPV4_ADDRSRC, NWAM_NCU_PROP_IPV4_ADDRSRC },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
224 { PT_IPV4_ADDR, NWAM_NCU_PROP_IPV4_ADDR },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
225 { PT_IPV4_DEFAULT_ROUTE, NWAM_NCU_PROP_IPV4_DEFAULT_ROUTE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
226 { PT_IPV6_ADDRSRC, NWAM_NCU_PROP_IPV6_ADDRSRC },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
227 { PT_IPV6_ADDR, NWAM_NCU_PROP_IPV6_ADDR },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
228 { PT_IPV6_DEFAULT_ROUTE, NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
229 { 0, NULL }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
230 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
231
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
232 /* ENM properties table */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
233 static prop_table_entry_t enm_prop_table[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
234 { PT_ENM_FMRI, NWAM_ENM_PROP_FMRI },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
235 { PT_ENM_START, NWAM_ENM_PROP_START },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
236 { PT_ENM_STOP, NWAM_ENM_PROP_STOP },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
237 { PT_ACTIVATION_MODE, NWAM_ENM_PROP_ACTIVATION_MODE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
238 { PT_CONDITIONS, NWAM_ENM_PROP_CONDITIONS },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
239 { PT_ENABLED, NWAM_ENM_PROP_ENABLED },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
240 { 0, NULL }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
241 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
242
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
243 /* LOCation properties table */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
244 static prop_table_entry_t loc_prop_table[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
245 { PT_ACTIVATION_MODE, NWAM_LOC_PROP_ACTIVATION_MODE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
246 { PT_CONDITIONS, NWAM_LOC_PROP_CONDITIONS },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
247 { PT_ENABLED, NWAM_LOC_PROP_ENABLED },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
248 { PT_LOC_NAMESERVICES, NWAM_LOC_PROP_NAMESERVICES },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
249 { PT_LOC_NAMESERVICES_CONFIG, NWAM_LOC_PROP_NAMESERVICES_CONFIG_FILE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
250 { PT_LOC_DNS_CONFIGSRC, NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
251 { PT_LOC_DNS_DOMAIN, NWAM_LOC_PROP_DNS_NAMESERVICE_DOMAIN },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
252 { PT_LOC_DNS_SERVERS, NWAM_LOC_PROP_DNS_NAMESERVICE_SERVERS },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
253 { PT_LOC_DNS_SEARCH, NWAM_LOC_PROP_DNS_NAMESERVICE_SEARCH },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
254 { PT_LOC_NIS_CONFIGSRC, NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
255 { PT_LOC_NIS_SERVERS, NWAM_LOC_PROP_NIS_NAMESERVICE_SERVERS },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
256 { PT_LOC_LDAP_CONFIGSRC, NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
257 { PT_LOC_LDAP_SERVERS, NWAM_LOC_PROP_LDAP_NAMESERVICE_SERVERS },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
258 { PT_LOC_DEFAULT_DOMAIN, NWAM_LOC_PROP_DEFAULT_DOMAIN },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
259 { PT_LOC_NFSV4_DOMAIN, NWAM_LOC_PROP_NFSV4_DOMAIN },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
260 { PT_LOC_IPF_CONFIG, NWAM_LOC_PROP_IPFILTER_CONFIG_FILE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
261 { PT_LOC_IPF_V6_CONFIG, NWAM_LOC_PROP_IPFILTER_V6_CONFIG_FILE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
262 { PT_LOC_IPNAT_CONFIG, NWAM_LOC_PROP_IPNAT_CONFIG_FILE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
263 { PT_LOC_IPPOOL_CONFIG, NWAM_LOC_PROP_IPPOOL_CONFIG_FILE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
264 { PT_LOC_IKE_CONFIG, NWAM_LOC_PROP_IKE_CONFIG_FILE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
265 { PT_LOC_IPSECPOL_CONFIG, NWAM_LOC_PROP_IPSECPOLICY_CONFIG_FILE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
266 { 0, NULL }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
267 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
268
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
269 /* Known WLAN properties table */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
270 static prop_table_entry_t wlan_prop_table[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
271 { PT_WLAN_BSSIDS, NWAM_KNOWN_WLAN_PROP_BSSIDS },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
272 { PT_WLAN_PRIORITY, NWAM_KNOWN_WLAN_PROP_PRIORITY },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
273 { PT_WLAN_KEYNAME, NWAM_KNOWN_WLAN_PROP_KEYNAME },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
274 { PT_WLAN_KEYSLOT, NWAM_KNOWN_WLAN_PROP_KEYSLOT },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
275 { PT_WLAN_SECURITY_MODE, NWAM_KNOWN_WLAN_PROP_SECURITY_MODE },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
276 { 0, NULL }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
277 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
278
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
279 /* Returns the appropriate properties table for the given object type */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
280 static prop_table_entry_t *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
281 get_prop_table(nwam_object_type_t object_type)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
282 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
283 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
284 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
285 return (ncu_prop_table);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
286 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
287 return (loc_prop_table);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
288 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
289 return (enm_prop_table);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
290 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
291 return (wlan_prop_table);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
292 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
293 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
294 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
295
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
296 /* Global variables */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
297
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
298 /* set early in main(), never modified thereafter, used all over the place */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
299 static char *execname;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
300
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
301 /* set in modifying functions, checked in read_input() */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
302 boolean_t saw_error = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
303
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
304 /* set in yacc parser, checked in read_input() */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
305 boolean_t newline_terminated;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
306
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
307 /* set in main(), checked in lex error handler */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
308 boolean_t cmd_file_mode = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
309
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
310 /* set in exit_func(), checked in read_input() */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
311 static boolean_t time_to_exit = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
312
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
313 /* used in nerr() and nwamerr() */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
314 static char *cmd_file_name = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
315
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
316 /* used with cmd_file to destroy all configurations */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
317 static boolean_t remove_all_configurations = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
318
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
319 /* checked in read_input() and other places */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
320 static boolean_t ok_to_prompt = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
321
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
322 /* initialized in do_interactive(), checked in initialize() */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
323 static boolean_t interactive_mode;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
324
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
325 static boolean_t need_to_commit = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
326
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
327 /* The gl_get_line() resource object */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
328 static GetLine *gl;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
329
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
330 /* set when create or read objects, used by other func */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
331 static nwam_loc_handle_t loc_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
332 static nwam_enm_handle_t enm_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
333 static nwam_known_wlan_handle_t wlan_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
334 static nwam_ncu_handle_t ncu_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
335 static nwam_ncp_handle_t ncp_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
336
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
337 static int current_scope = NWAM_SCOPE_GBL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
338
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
339 /* obj1_* are used in NWAM_SCOPE_{NCP,LOC,ENM,WLAN} */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
340 static int obj1_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
341 static char obj1_name[NWAM_MAX_NAME_LEN + 1];
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
342
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
343 /* obj2_* are used in NWAM_SCOPE_NCU only */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
344 static int obj2_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
345 static char obj2_name[NWAM_MAX_NAME_LEN + 1];
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
346
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
347 /* arrays for tab-completion */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
348 /* commands at NWAM_SCOPE_GBL */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
349 static const char *global_scope_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
350 "create ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
351 "destroy ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
352 "end ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
353 "exit ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
354 "export ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
355 "help ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
356 "list ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
357 "select ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
358 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
359 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
360
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
361 static const char *global_create_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
362 "create loc ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
363 "create enm ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
364 "create ncp ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
365 "create wlan ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
366 "create -t ", /* template */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
367 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
368 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
369
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
370 static const char *global_destroy_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
371 "destroy -a ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
372 "destroy loc ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
373 "destroy enm ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
374 "destroy ncp ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
375 "destroy wlan ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
376 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
377 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
378
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
379 static const char *global_export_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
380 "export ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
381 "export -d ", /* add destroy -a */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
382 "export -f ", /* to file */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
383 "export -d -f ", /* add destroy -a to file */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
384 "export loc ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
385 "export enm ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
386 "export ncp ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
387 "export wlan ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
388 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
389 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
390
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
391 static const char *global_list_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
392 "list ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
393 "list loc ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
394 "list enm ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
395 "list ncp ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
396 "list wlan ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
397 "list -a loc ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
398 "list -a enm ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
399 "list -a wlan ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
400 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
401 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
402
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
403 static const char *global_select_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
404 "select loc ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
405 "select enm ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
406 "select ncp ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
407 "select wlan ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
408 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
409 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
410
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
411 /* commands at NWAM_SCOPE_LOC, _ENM, _WLAN and _NCU */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
412 static const char *non_ncp_scope_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
413 "cancel ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
414 "clear ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
415 "commit ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
416 "end ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
417 "exit ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
418 "export ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
419 "export -f ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
420 "get ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
421 "get -V ", /* value only */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
422 "help ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
423 "list ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
424 "list -a ", /* all properties */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
425 "revert ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
426 "set ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
427 "verify ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
428 "walkprop ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
429 "walkprop -a ", /* all properties */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
430 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
431 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
432
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
433 /* commands at NWAM_SCOPE_NCP */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
434 static const char *ncp_scope_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
435 "cancel ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
436 "create ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
437 "destroy ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
438 "end ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
439 "exit ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
440 "export ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
441 "help ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
442 "list ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
443 "select ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
444 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
445 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
446
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
447 static const char *ncp_create_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
448 "create ncu ip ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
449 "create ncu phys ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
450 "create -t ", /* template */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
451 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
452 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
453
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
454 static const char *ncp_destroy_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
455 "destroy ncu ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
456 "destroy ncu ip ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
457 "destroy ncu phys ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
458 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
459 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
460
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
461 static const char *ncp_export_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
462 "export ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
463 "export -f ", /* to file */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
464 "export ncu ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
465 "export ncu ip ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
466 "export ncu phys ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
467 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
468 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
469
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
470 static const char *ncp_list_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
471 "list ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
472 "list ncu ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
473 "list ncu ip ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
474 "list ncu phys ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
475 "list -a ncu ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
476 "list -a ncu ip ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
477 "list -a ncu phys ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
478 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
479 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
480
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
481 static const char *ncp_select_cmds[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
482 "select ncu ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
483 "select ncu ip ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
484 "select ncu phys ",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
485 NULL
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
486 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
487
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
488 /* Functions begin here */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
489
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
490 cmd_t *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
491 alloc_cmd(void)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
492 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
493 cmd_t *cmd = calloc(1, sizeof (cmd_t));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
494 if (cmd == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
495 nerr("Out of memory");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
496 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
497 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
498 cmd->cmd_argc = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
499 cmd->cmd_argv[0] = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
500
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
501 return (cmd);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
502 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
503
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
504 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
505 free_cmd(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
506 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
507 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
508
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
509 for (i = 0; i < cmd->cmd_argc; i++)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
510 free(cmd->cmd_argv[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
511 free(cmd);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
512 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
513
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
514 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
515 array_free(void **array, int nelem)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
516 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
517 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
518 for (i = 0; i < nelem; i++)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
519 free(array[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
520 free(array);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
521 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
522
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
523 static boolean_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
524 initial_match(const char *line1, const char *line2, int word_end)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
525 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
526 if (word_end <= 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
527 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
528 return (strncmp(line1, line2, word_end) == 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
529 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
530
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
531 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
532 add_stuff(WordCompletion *cpl, const char *line1, const char **list,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
533 int word_end)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
534 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
535 int i, err;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
536
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
537 for (i = 0; list[i] != NULL; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
538 if (initial_match(line1, list[i], word_end)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
539 err = cpl_add_completion(cpl, line1, 0, word_end,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
540 list[i] + word_end, "", "");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
541 if (err != 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
542 return (err);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
543 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
544 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
545 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
546 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
547
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
548 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
549 * To fill in the rest of a string when user types the tab key.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
550 * First digital number is the length of the string, the second digital number
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
551 * is the min number of chars that is needed to uniquely identify a string.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
552 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
553 #define MINI_STR(l, s, m, n) strncmp(l, s, MAX(MIN(sizeof (s) - 1, m), n))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
554
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
555 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
556 static
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
557 CPL_MATCH_FN(cmd_cpl_fn)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
558 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
559 /* tab-complete according to the current scope */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
560 switch (current_scope) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
561 case NWAM_SCOPE_GBL:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
562 if (MINI_STR(line, "create ", word_end, 2) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
563 return (add_stuff(cpl, line, global_create_cmds,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
564 word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
565 if (MINI_STR(line, "destroy ", word_end, 1) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
566 return (add_stuff(cpl, line, global_destroy_cmds,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
567 word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
568 if (MINI_STR(line, "export ", word_end, 3) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
569 return (add_stuff(cpl, line, global_export_cmds,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
570 word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
571 if (MINI_STR(line, "list ", word_end, 1) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
572 return (add_stuff(cpl, line, global_list_cmds,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
573 word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
574 if (MINI_STR(line, "select ", word_end, 1) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
575 return (add_stuff(cpl, line, global_select_cmds,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
576 word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
577 return (add_stuff(cpl, line, global_scope_cmds, word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
578 case NWAM_SCOPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
579 case NWAM_SCOPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
580 case NWAM_SCOPE_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
581 case NWAM_SCOPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
582 return (add_stuff(cpl, line, non_ncp_scope_cmds, word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
583 case NWAM_SCOPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
584 if (MINI_STR(line, "create ", word_end, 2) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
585 return (add_stuff(cpl, line, ncp_create_cmds,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
586 word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
587 if (MINI_STR(line, "destroy ", word_end, 1) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
588 return (add_stuff(cpl, line, ncp_destroy_cmds,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
589 word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
590 if (MINI_STR(line, "export ", word_end, 3) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
591 return (add_stuff(cpl, line, ncp_export_cmds,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
592 word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
593 if (MINI_STR(line, "list ", word_end, 1) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
594 return (add_stuff(cpl, line, ncp_list_cmds, word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
595 if (MINI_STR(line, "select ", word_end, 1) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
596 return (add_stuff(cpl, line, ncp_select_cmds,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
597 word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
598 return (add_stuff(cpl, line, ncp_scope_cmds, word_end));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
599 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
600 /* should never get here */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
601 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
602 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
603
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
604 const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
605 cmd_to_str(int cmd_num)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
606 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
607 assert(cmd_num >= CMD_MIN && cmd_num <= CMD_MAX);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
608 return (helptab[cmd_num].cmd_name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
609 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
610
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
611 /* Returns "loc", "enm", "wlan" or "ncp" as string */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
612 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
613 rt1_to_str(int res_type)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
614 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
615 assert(res_type >= RT1_MIN && res_type <= RT1_MAX);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
616 return (res1_types[res_type]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
617 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
618
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
619 /* Returns "ncu" as string */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
620 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
621 rt2_to_str(int res_type)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
622 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
623 assert(res_type >= RT2_MIN && res_type <= RT2_MAX);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
624 return (res2_types[res_type]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
625 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
626
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
627 /* Returns "ncp, "ncu", "loc", "enm", or "wlan" according to the scope */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
628 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
629 scope_to_str(int scope) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
630 switch (scope) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
631 case NWAM_SCOPE_GBL:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
632 return ("global");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
633 case NWAM_SCOPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
634 return ("ncp");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
635 case NWAM_SCOPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
636 return ("ncu");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
637 case NWAM_SCOPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
638 return ("loc");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
639 case NWAM_SCOPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
640 return ("enm");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
641 case NWAM_SCOPE_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
642 return ("wlan");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
643 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
644 return ("invalid");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
645 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
646 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
647
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
648 /* Given an enm property and value, returns it as a string */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
649 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
650 propval_to_str(const char *propname, uint64_t value)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
651 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
652 const char *str;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
653
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
654 if (nwam_uint64_get_value_string(propname, value, &str) == NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
655 return (str);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
656 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
657 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
658
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
659 /* Given an int for a prop, returns it as string */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
660 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
661 pt_to_str(int prop_type)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
662 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
663 assert(prop_type >= PT_MIN && prop_type <= PT_MAX);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
664 return (pt_types[prop_type]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
665 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
666
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
667 /* Return B_TRUE if string starts with "t" or is 1, B_FALSE otherwise */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
668 static boolean_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
669 str_to_boolean(const char *str)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
670 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
671 if (strncasecmp(str, "t", 1) == 0 || atoi(str) == 1)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
672 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
673 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
674 return (B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
675 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
676
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
677 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
678 * This is a separate function rather than a set of define's because of the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
679 * gettext() wrapping.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
680 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
681
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
682 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
683 * TRANSLATION_NOTE
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
684 * Each string below should have \t follow \n whenever needed; the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
685 * initial \t and the terminal \n will be provided by the calling function.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
686 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
687
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
688 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
689 long_help(int cmd_num)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
690 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
691 assert(cmd_num >= CMD_MIN && cmd_num <= CMD_MAX);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
692 switch (cmd_num) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
693 case CMD_CANCEL:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
694 return (gettext("Cancels the current configuration "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
695 "changes."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
696 case CMD_CLEAR:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
697 return (gettext("Clears the value for the specified "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
698 "property."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
699 case CMD_COMMIT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
700 return (gettext("Commits the current configuration."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
701 case CMD_CREATE:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
702 return (gettext("Creates a new profile or resource."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
703 case CMD_DESTROY:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
704 return (gettext("Destroys the specified profile or "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
705 "resource."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
706 case CMD_END:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
707 return (gettext("Ends specification of a resource."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
708 case CMD_EXIT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
709 return (gettext("Exits the program."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
710 case CMD_EXPORT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
711 return (gettext("Exports the configuration."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
712 case CMD_GET:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
713 return (gettext("Gets the value of the specified "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
714 "property."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
715 case CMD_HELP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
716 return (gettext("Prints help message."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
717 case CMD_LIST:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
718 return (gettext("Lists existing objects."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
719 case CMD_REVERT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
720 return (gettext("Reverts to the previous "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
721 "configuration."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
722 case CMD_SELECT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
723 return (gettext("Selects a resource to modify."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
724 case CMD_SET:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
725 return (gettext("Sets the value of the specified "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
726 "property."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
727 case CMD_VERIFY:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
728 return (gettext("Verifies an object."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
729 case CMD_WALKPROP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
730 return (gettext("Iterates over properties."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
731 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
732 return (gettext("Unknown command."));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
733 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
734 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
735
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
736 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
737 command_usage(int command)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
738 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
739 if (command < CMD_MIN || command > CMD_MAX) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
740 nerr("Unknown command");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
741 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
742 nerr("%s: %s: %s", gettext("Error"), gettext("usage"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
743 helptab[command].cmd_usage);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
744 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
745 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
746
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
747 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
748 long_usage(uint_t cmd_num)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
749 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
750 (void) printf("%s: %s\n", gettext("usage"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
751 helptab[cmd_num].cmd_usage);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
752 (void) printf("\t%s\n", long_help(cmd_num));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
753 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
754
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
755 /* Prints usage for command line options */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
756 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
757 cmd_line_usage()
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
758 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
759 (void) printf("%s:\t%s\t\t\t\t(%s)\n", gettext("usage"), execname,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
760 gettext("interactive-mode"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
761 (void) printf("\t%s <%s> [%s...]\n", execname, gettext("command"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
762 gettext("options"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
763 (void) printf("\t%s [-d] -f <%s>\n", execname, gettext("command-file"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
764 (void) printf("\t%s %s [<%s>]\n", execname, cmd_to_str(CMD_HELP),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
765 gettext("command"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
766 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
767
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
768 /* Prints the line number of the current command if in command-file mode */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
769 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
770 print_lineno()
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
771 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
772 static int last_lineno;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
773
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
774 /* lex_lineno has already been incremented in the lexer; compensate */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
775 if (cmd_file_mode && lex_lineno > last_lineno) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
776 if (strcmp(cmd_file_name, "-") == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
777 (void) fprintf(stderr, gettext("On line %d:\n"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
778 lex_lineno - 1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
779 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
780 (void) fprintf(stderr, gettext("On line %d of %s:\n"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
781 lex_lineno - 1, cmd_file_name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
782 last_lineno = lex_lineno;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
783 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
784 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
785
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
786 /* PRINTFLIKE1 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
787 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
788 nerr(const char *format, ...)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
789 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
790 va_list alist;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
791
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
792 print_lineno();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
793
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
794 format = gettext(format);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
795 va_start(alist, format);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
796 (void) vfprintf(stderr, format, alist);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
797 va_end(alist);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
798 (void) fprintf(stderr, "\n");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
799
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
800 saw_error = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
801 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
802
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
803 /* PRINTFLIKE2 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
804 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
805 nwamerr(nwam_error_t err, const char *format, ...)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
806 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
807 va_list alist;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
808
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
809 print_lineno();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
810
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
811 format = gettext(format);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
812 va_start(alist, format);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
813 (void) vfprintf(stderr, format, alist);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
814 va_end(alist);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
815 (void) fprintf(stderr, ": %s\n", nwam_strerror(err));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
816
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
817 saw_error = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
818 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
819
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
820 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
821 properr(const char *prop)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
822 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
823 nerr("Invalid property: '%s'", prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
824 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
825
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
826 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
827 * If free_ncu_only == B_TRUE, only ncu handle is freed, ncp handle remains the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
828 * same. Since nwam_ncp_free() takes care of its ncus, no need to explicitly
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
829 * call nwam_ncu_free() afterwards.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
830 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
831 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
832 free_handle(boolean_t free_ncu_only)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
833 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
834 if (ncp_h != NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
835 if (!free_ncu_only) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
836 nwam_ncp_free(ncp_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
837 ncp_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
838 ncu_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
839 } else if (ncu_h != NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
840 nwam_ncu_free(ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
841 ncu_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
842 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
843 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
844
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
845 if (enm_h != NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
846 nwam_enm_free(enm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
847 enm_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
848 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
849
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
850 if (loc_h != NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
851 nwam_loc_free(loc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
852 loc_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
853 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
854
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
855 if (wlan_h != NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
856 nwam_known_wlan_free(wlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
857 wlan_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
858 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
859 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
860
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
861 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
862 * On input, TRUE => yes, FALSE => no.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
863 * On return, TRUE => 1, FALSE => no, could not ask => -1.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
864 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
865 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
866 ask_yesno(boolean_t default_answer, const char *question)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
867 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
868 char line[64]; /* should be enough to answer yes or no */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
869
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
870 if (!ok_to_prompt) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
871 saw_error = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
872 return (-1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
873 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
874 for (;;) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
875 if (printf("%s (%s)? ", gettext(question),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
876 default_answer ? "[y]/n" : "y/[n]") < 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
877 return (-1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
878 if (fgets(line, sizeof (line), stdin) == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
879 return (-1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
880
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
881 if (line[0] == '\n')
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
882 return (default_answer ? 1 : 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
883 if (tolower(line[0]) == 'y')
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
884 return (1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
885 if (tolower(line[0]) == 'n')
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
886 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
887 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
888 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
889
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
890 /* This is the back-end helper function for read_input() below. */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
891 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
892 cleanup()
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
893 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
894 int answer;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
895
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
896 if (!interactive_mode && !cmd_file_mode) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
897 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
898 * If we're not in interactive mode, and we're not in command
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
899 * file mode, then we must be in commands-from-the-command-line
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
900 * mode. As such, we can't loop back and ask for more input.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
901 * It was OK to prompt for such things as whether or not to
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
902 * really delete something in the command handler called from
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
903 * yyparse() above, but "really quit?" makes no sense in this
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
904 * context. So disable prompting.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
905 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
906 ok_to_prompt = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
907 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
908 if (need_to_commit) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
909 answer = ask_yesno(B_FALSE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
910 "Configuration not saved; really quit");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
911 switch (answer) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
912 case -1:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
913 /* issue error here */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
914 return (NWAM_ERR);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
915 case 1:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
916 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
917 * don't want to save, just exit. handles are freed at
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
918 * end_func() or exit_func().
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
919 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
920 return (NWAM_OK);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
921 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
922 /* loop back to read input */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
923 time_to_exit = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
924 yyin = stdin;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
925 return (NWAM_REPEAT);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
926 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
927 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
928 return (saw_error ? NWAM_ERR : NWAM_OK);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
929 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
930
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
931 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
932 string_to_yyin(char *string)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
933 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
934 if ((yyin = tmpfile()) == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
935 goto error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
936 if (fwrite(string, strlen(string), 1, yyin) != 1)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
937 goto error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
938 if (fseek(yyin, 0, SEEK_SET) != 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
939 goto error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
940
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
941 return (NWAM_OK);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
942
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
943 error:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
944 nerr("problem creating temporary file");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
945 return (NWAM_ERR);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
946 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
947
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
948 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
949 * read_input() is the driver of this program. It is a wrapper around
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
950 * yyparse(), printing appropriate prompts when needed, checking for
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
951 * exit conditions and reacting appropriately. This function is
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
952 * called when in interactive mode or command-file mode.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
953 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
954 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
955 read_input(void)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
956 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
957 boolean_t yyin_is_a_tty = isatty(fileno(yyin));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
958 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
959 * The prompt is "e> " or "e:t1:o1> " or "e:t1:o1:t2:o2> " where e is
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
960 * execname, t is resource type, o is object name.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
961 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
962 char prompt[MAXPATHLEN + (2 * (NWAM_MAX_TYPE_LEN + NWAM_MAX_NAME_LEN))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
963 + sizeof ("::::> ")];
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
964 char *line;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
965
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
966 /* yyin should have been set to the appropriate (FILE *) if not stdin */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
967 newline_terminated = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
968 for (;;) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
969 if (yyin_is_a_tty) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
970 if (newline_terminated) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
971 switch (current_scope) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
972 case NWAM_SCOPE_GBL:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
973 (void) snprintf(prompt, sizeof (prompt),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
974 "%s> ", execname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
975 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
976 case NWAM_SCOPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
977 case NWAM_SCOPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
978 case NWAM_SCOPE_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
979 case NWAM_SCOPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
980 (void) snprintf(prompt, sizeof (prompt),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
981 "%s:%s:%s> ", execname,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
982 rt1_to_str(obj1_type), obj1_name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
983
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
984 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
985 case NWAM_SCOPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
986 (void) snprintf(prompt, sizeof (prompt),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
987 "%s:%s:%s:%s:%s> ", execname,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
988 rt1_to_str(obj1_type), obj1_name,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
989 rt2_to_str(obj2_type), obj2_name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
990 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
991 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
992 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
993 * If the user hits ^C then we want to catch it and
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
994 * start over. If the user hits EOF then we want to
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
995 * bail out.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
996 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
997 line = gl_get_line(gl, prompt, NULL, -1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
998 if (gl_return_status(gl) == GLR_SIGNAL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
999 gl_abandon_line(gl);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1000 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1001 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1002 if (line == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1003 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1004 if (string_to_yyin(line) != NWAM_OK)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1005 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1006 while (!feof(yyin)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1007 yyparse();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1008
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1009 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1010 * If any command on a list of commands
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1011 * give an error, don't continue with the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1012 * remaining commands.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1013 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1014 if (saw_error || time_to_exit)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1015 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1016 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1017 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1018 yyparse();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1019 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1020
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1021 /* Bail out on an error in command-file mode. */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1022 if (saw_error && cmd_file_mode && !interactive_mode)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1023 time_to_exit = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1024 if (time_to_exit || (!yyin_is_a_tty && feof(yyin)))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1025 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1026 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1027 return (cleanup());
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1028 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1029
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1030 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1031 * This function is used in the interactive-mode scenario: it just calls
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1032 * read_input() until we are done.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1033 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1034 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1035 do_interactive(void)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1036 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1037 int err;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1038
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1039 interactive_mode = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1040 do {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1041 err = read_input();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1042 } while (err == NWAM_REPEAT);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1043 return (err);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1044 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1045
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1046 /* Calls the help_func() to print the usage of all commands */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1047 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1048 help_wrap()
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1049 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1050 cmd_t *help_cmd;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1051
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1052 if ((help_cmd = alloc_cmd()) == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1053 exit(NWAM_ERR);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1054 help_func(help_cmd);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1055 free_cmd(help_cmd);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1056 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1057
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1058 /* Check if the given command is allowed in the current scope */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1059 boolean_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1060 check_scope(int cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1061 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1062 /* allowed in all scopes */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1063 switch (cmd) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1064 case CMD_END:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1065 case CMD_EXIT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1066 case CMD_HELP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1067 case CMD_LIST:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1068 case CMD_EXPORT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1069 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1070 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1071 /* scope-specific */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1072 switch (current_scope) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1073 case NWAM_SCOPE_GBL:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1074 switch (cmd) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1075 case CMD_CREATE:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1076 case CMD_DESTROY:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1077 case CMD_SELECT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1078 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1079 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1080 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1081 case NWAM_SCOPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1082 case NWAM_SCOPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1083 case NWAM_SCOPE_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1084 case NWAM_SCOPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1085 switch (cmd) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1086 case CMD_CANCEL:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1087 case CMD_CLEAR:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1088 case CMD_COMMIT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1089 case CMD_GET:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1090 case CMD_REVERT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1091 case CMD_SET:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1092 case CMD_VERIFY:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1093 case CMD_WALKPROP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1094 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1095 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1096 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1097 case NWAM_SCOPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1098 switch (cmd) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1099 case CMD_CANCEL:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1100 case CMD_CREATE:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1101 case CMD_DESTROY:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1102 case CMD_SELECT:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1103 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1104 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1105 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1106 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1107 nerr("Invalid scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1108 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1109 nerr("'%s' is not allowed at this scope", cmd_to_str(cmd));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1110 return (B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1111 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1112
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1113 /* Returns the active object type depending on which handle is not NULL */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1114 static nwam_object_type_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1115 active_object_type()
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1116 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1117 /* Check ncu_h before ncp_h, ncp_h must be loaded before ncu_h */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1118 if (ncu_h != NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1119 return (NWAM_OBJECT_TYPE_NCU);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1120 else if (ncp_h != NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1121 return (NWAM_OBJECT_TYPE_NCP);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1122 else if (loc_h != NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1123 return (NWAM_OBJECT_TYPE_LOC);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1124 else if (enm_h != NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1125 return (NWAM_OBJECT_TYPE_ENM);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1126 else if (wlan_h != NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1127 return (NWAM_OBJECT_TYPE_KNOWN_WLAN);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1128 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1129 return (NWAM_OBJECT_TYPE_UNKNOWN);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1130 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1131
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1132 /* Retrive the name of the object from its handle */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1133 static nwam_error_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1134 object_name_from_handle(nwam_object_type_t object_type, void *handle,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1135 char **namep)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1136 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1137 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1138 case NWAM_OBJECT_TYPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1139 return (nwam_ncp_get_name(handle, namep));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1140 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1141 return (nwam_ncu_get_name(handle, namep));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1142 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1143 return (nwam_loc_get_name(handle, namep));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1144 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1145 return (nwam_enm_get_name(handle, namep));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1146 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1147 return (nwam_known_wlan_get_name(handle, namep));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1148 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1149 return (NWAM_INVALID_ARG);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1150 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1151
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1152 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1153 do_commit()
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1154 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1155 nwam_error_t ret = NWAM_SUCCESS;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1156 const char *errprop;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1157
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1158 if (!need_to_commit)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1159 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1160
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1161 switch (active_object_type()) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1162 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1163 ret = nwam_ncu_commit(ncu_h, 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1164 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1165 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1166 ret = nwam_enm_commit(enm_h, 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1167 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1168 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1169 ret = nwam_loc_commit(loc_h, 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1170 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1171 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1172 ret = nwam_known_wlan_commit(wlan_h, 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1173 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1174 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1175
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1176 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1177 need_to_commit = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1178 if (interactive_mode)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1179 (void) printf(gettext("Committed changes\n"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1180 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1181 nwam_error_t verr;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1182
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1183 /* Find property that caused failure */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1184 switch (active_object_type()) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1185 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1186 verr = nwam_ncu_validate(ncu_h, &errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1187 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1188 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1189 verr = nwam_enm_validate(enm_h, &errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1190 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1191 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1192 verr = nwam_loc_validate(loc_h, &errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1193 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1194 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1195 verr = nwam_known_wlan_validate(wlan_h, &errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1196 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1197 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1198
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1199 if (verr != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1200 nwamerr(ret, "Commit error on property '%s'", errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1201 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1202 nwamerr(ret, "Commit error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1203 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1204 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1205
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1206 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1207 * Saves the current configuration to persistent storage.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1208 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1209 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1210 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1211 commit_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1212 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1213 if (!need_to_commit) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1214 if (interactive_mode)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1215 (void) printf(gettext("Nothing to commit\n"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1216 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1217 do_commit();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1218 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1219 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1220
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1221 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1222 do_cancel()
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1223 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1224 switch (current_scope) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1225 case NWAM_SCOPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1226 current_scope = NWAM_SCOPE_NCP;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1227 obj2_type = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1228 free_handle(B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1229 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1230 case NWAM_SCOPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1231 case NWAM_SCOPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1232 case NWAM_SCOPE_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1233 case NWAM_SCOPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1234 current_scope = NWAM_SCOPE_GBL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1235 obj1_type = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1236 free_handle(B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1237 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1238 case NWAM_SCOPE_GBL:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1239 free_handle(B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1240 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1241 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1242 nerr("Invalid scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1243 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1244 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1245 need_to_commit = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1246 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1247
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1248 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1249 * End operation on current scope and go up one scope.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1250 * Changes are not saved, no prompt either.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1251 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1252 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1253 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1254 cancel_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1255 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1256 do_cancel();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1257 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1258
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1259 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1260 * Removes leading and trailing quotes from a string.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1261 * Caller must free returned string.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1262 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1263 static char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1264 trim_quotes(const char *quoted_str)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1265 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1266 char *str;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1267 int end;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1268
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1269 /* export_func() and list_func() can pass NULL here */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1270 if (quoted_str == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1271 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1272
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1273 /* remove leading quote */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1274 if (quoted_str[0] == '"')
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1275 str = strdup(quoted_str + 1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1276 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1277 str = strdup(quoted_str);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1278 if (str == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1279 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1280
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1281 /* remove trailing quote and newline */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1282 end = strlen(str) - 1;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1283 while (end >= 0 && (str[end] == '"' || str[end] == '\n'))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1284 end--;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1285 str[end+1] = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1286
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1287 return (str);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1288 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1289
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1290 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1291 * Creates a new resource and enters the scope of that resource.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1292 * The new resource can also be a copy of an existing resource (-t option).
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1293 * If in interactive mode, then after creation call walkprop_func()
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1294 * to do walk the properties for the new object.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1295 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1296 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1297 create_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1298 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1299 nwam_error_t ret = NWAM_SUCCESS;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1300 int c;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1301 boolean_t template = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1302 char *newname = NULL, *oldname = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1303 cmd_t *walkprop_cmd;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1304
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1305 /* make sure right command at the right scope */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1306 if (current_scope == NWAM_SCOPE_GBL &&
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1307 cmd->cmd_res2_type == RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1308 nerr("cannot create ncu at global scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1309 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1310 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1311 if (current_scope == NWAM_SCOPE_NCP &&
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1312 cmd->cmd_res2_type != RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1313 nerr("Cannot create given object at this scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1314 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1315 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1316
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1317 assert(cmd->cmd_argc > 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1318 optind = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1319 while ((c = getopt(cmd->cmd_argc, cmd->cmd_argv, "t:")) != EOF) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1320 switch (c) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1321 case 't':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1322 template = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1323 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1324 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1325 command_usage(CMD_CREATE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1326 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1327 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1328 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1329
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1330 if (!template) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1331 /* no template given */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1332 /* argv[0] is name */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1333 newname = trim_quotes(cmd->cmd_argv[0]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1334 if (cmd->cmd_res1_type == RT1_ENM) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1335 ret = nwam_enm_create(newname, NULL, &enm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1336 } else if (cmd->cmd_res1_type == RT1_LOC) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1337 ret = nwam_loc_create(newname, &loc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1338 } else if (cmd->cmd_res1_type == RT1_WLAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1339 ret = nwam_known_wlan_create(newname, &wlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1340 } else if (cmd->cmd_res1_type == RT1_NCP &&
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1341 current_scope == NWAM_SCOPE_GBL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1342 ret = nwam_ncp_create(newname, 0, &ncp_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1343 } else if (cmd->cmd_res2_type == RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1344 nwam_ncu_type_t ncu_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1345 nwam_ncu_class_t ncu_class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1346
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1347 /* ncp must already be read */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1348 if (ncp_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1349 nerr("Create error: NCP has not been read");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1350 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1351 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1352
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1353 ncu_class = (nwam_ncu_class_t)cmd->cmd_ncu_class_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1354 ncu_type = nwam_ncu_class_to_type(ncu_class);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1355 ret = nwam_ncu_create(ncp_h, newname, ncu_type,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1356 ncu_class, &ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1357 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1358
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1359 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1360 nwamerr(ret, "Create error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1361 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1362 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1363
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1364 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1365 /* template given */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1366 /* argv[0] is -t, argv[1] is old name, argv[2] is new name */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1367 oldname = trim_quotes(cmd->cmd_argv[1]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1368 newname = trim_quotes(cmd->cmd_argv[2]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1369 if (cmd->cmd_res1_type == RT1_ENM) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1370 nwam_enm_handle_t oldenm_h;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1371
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1372 ret = nwam_enm_read(oldname, 0, &oldenm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1373 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1374 goto read_error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1375 ret = nwam_enm_copy(oldenm_h, newname, &enm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1376 nwam_enm_free(oldenm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1377 } else if (cmd->cmd_res1_type == RT1_LOC) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1378 nwam_loc_handle_t oldloc_h;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1379
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1380 ret = nwam_loc_read(oldname, 0, &oldloc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1381 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1382 goto read_error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1383 ret = nwam_loc_copy(oldloc_h, newname, &loc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1384 nwam_loc_free(oldloc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1385 } else if (cmd->cmd_res1_type == RT1_WLAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1386 nwam_known_wlan_handle_t oldwlan_h;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1387
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1388 ret = nwam_known_wlan_read(oldname, 0, &oldwlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1389 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1390 goto read_error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1391 ret = nwam_known_wlan_copy(oldwlan_h, newname, &wlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1392 nwam_known_wlan_free(oldwlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1393 } else if (cmd->cmd_res1_type == RT1_NCP &&
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1394 current_scope == NWAM_SCOPE_GBL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1395 nwam_ncp_handle_t oldncp_h;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1396
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1397 ret = nwam_ncp_read(oldname, 0, &oldncp_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1398 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1399 goto read_error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1400 ret = nwam_ncp_copy(oldncp_h, newname, &ncp_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1401 nwam_ncp_free(oldncp_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1402 } else if (cmd->cmd_res2_type == RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1403 nwam_ncu_handle_t oldncu_h;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1404 nwam_ncu_type_t ncu_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1405 nwam_ncu_class_t ncu_class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1406
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1407 /* ncp must already be read */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1408 if (ncp_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1409 nerr("Copy error: NCP has not been read");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1410 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1411 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1412 ncu_class = (nwam_ncu_class_t)cmd->cmd_ncu_class_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1413 ncu_type = nwam_ncu_class_to_type(ncu_class);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1414 ret = nwam_ncu_read(ncp_h, oldname, ncu_type, 0,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1415 &oldncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1416 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1417 goto read_error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1418 ret = nwam_ncu_copy(oldncu_h, newname, &ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1419 nwam_ncu_free(oldncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1420 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1421
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1422 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1423 nwamerr(ret, "Copy error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1424 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1425 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1426 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1427
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1428 if (current_scope == NWAM_SCOPE_GBL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1429 (void) strlcpy(obj1_name, newname, sizeof (obj1_name));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1430 obj1_type = cmd->cmd_res1_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1431 if (obj1_type == RT1_ENM)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1432 current_scope = NWAM_SCOPE_ENM;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1433 else if (obj1_type == RT1_LOC)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1434 current_scope = NWAM_SCOPE_LOC;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1435 else if (obj1_type == RT1_WLAN)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1436 current_scope = NWAM_SCOPE_WLAN;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1437 else if (obj1_type == RT1_NCP)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1438 current_scope = NWAM_SCOPE_NCP;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1439 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1440 (void) strlcpy(obj2_name, newname, sizeof (obj2_name));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1441 current_scope = NWAM_SCOPE_NCU;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1442 obj2_type = cmd->cmd_res2_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1443 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1444 if (current_scope != NWAM_SCOPE_NCP)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1445 need_to_commit = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1446
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1447 /* do a walk of the properties if in interactive mode */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1448 if (interactive_mode && current_scope != NWAM_SCOPE_NCP) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1449 (void) printf(gettext("Created %s '%s'. "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1450 "Walking properties ...\n"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1451 scope_to_str(current_scope), newname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1452 if ((walkprop_cmd = alloc_cmd()) == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1453 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1454 walkprop_func(walkprop_cmd);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1455 free(walkprop_cmd);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1456 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1457
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1458 read_error:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1459 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1460 nwamerr(ret, "Copy error reading '%s'", oldname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1461
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1462 done:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1463 free(oldname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1464 free(newname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1465 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1466
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1467 /* Processing of return value for destroy_*_callback() */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1468 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1469 destroy_ret(nwam_object_type_t object_type, nwam_error_t ret, void *handle)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1470 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1471 if (ret == NWAM_ENTITY_NOT_DESTROYABLE) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1472 /* log a message to stderr, but don't consider it an error */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1473 char *name;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1474 if (object_name_from_handle(object_type, handle, &name)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1475 == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1476 (void) fprintf(stderr,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1477 gettext("%s '%s' cannot be removed\n"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1478 nwam_object_type_to_string(object_type), name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1479 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1480 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1481 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1482 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1483
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1484 if (ret == NWAM_SUCCESS || ret == NWAM_ENTITY_IN_USE)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1485 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1486
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1487 return (1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1488 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1489
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1490 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1491 * NWAM_FLAG_DO_NOT_FREE is passed to nwam_*_destory() so that it does not
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1492 * free the handle. The calling nwam_walk_*() function frees this handle
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1493 * as it is the function that created the handle.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1494 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1495 * Objects that are not destroyable or are active cannot be destroyed.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1496 * Don't return error in these situations so the walk can continue.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1497 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1498 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1499 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1500 destroy_ncp_callback(nwam_ncp_handle_t ncp, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1501 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1502 /* The file is deleted, so NCUs are also removed */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1503 nwam_error_t ret = nwam_ncp_destroy(ncp, NWAM_FLAG_DO_NOT_FREE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1504 return (destroy_ret(NWAM_OBJECT_TYPE_NCP, ret, ncp));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1505 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1506
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1507 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1508 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1509 destroy_loc_callback(nwam_loc_handle_t loc, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1510 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1511 nwam_error_t ret = nwam_loc_destroy(loc, NWAM_FLAG_DO_NOT_FREE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1512 return (destroy_ret(NWAM_OBJECT_TYPE_LOC, ret, loc));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1513 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1514
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1515 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1516 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1517 destroy_enm_callback(nwam_enm_handle_t enm, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1518 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1519 nwam_error_t ret = nwam_enm_destroy(enm, NWAM_FLAG_DO_NOT_FREE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1520 return (destroy_ret(NWAM_OBJECT_TYPE_ENM, ret, enm));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1521 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1522
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1523 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1524 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1525 destroy_wlan_callback(nwam_known_wlan_handle_t wlan, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1526 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1527 nwam_error_t ret = nwam_known_wlan_destroy(wlan, NWAM_FLAG_DO_NOT_FREE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1528 return (destroy_ret(NWAM_OBJECT_TYPE_KNOWN_WLAN, ret, wlan));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1529 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1530
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1531 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1532 * Remove all existing configuration that are not read-only.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1533 * walk through all ncps, locs, enms, wlans and destroy each one.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1534 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1535 static nwam_error_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1536 destroy_all(void)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1537 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1538 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1539
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1540 assert(remove_all_configurations);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1541
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1542 ret = nwam_walk_ncps(destroy_ncp_callback, NULL, 0, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1543 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1544 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1545
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1546 ret = nwam_walk_enms(destroy_enm_callback, NULL,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1547 NWAM_FLAG_ACTIVATION_MODE_ALL, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1548 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1549 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1550
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1551 ret = nwam_walk_locs(destroy_loc_callback, NULL,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1552 NWAM_FLAG_ACTIVATION_MODE_ALL, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1553 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1554 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1555
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1556 ret = nwam_walk_known_wlans(destroy_wlan_callback, NULL, 0, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1557 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1558 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1559
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1560 if (interactive_mode)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1561 (void) printf(gettext("All user-defined entities destroyed\n"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1562 remove_all_configurations = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1563
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1564 done:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1565 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1566 nwamerr(ret, "Destroy error: "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1567 "could not destroy all configurations");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1568 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1569 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1570 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1571
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1572 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1573 * Destroys an instance in persistent repository, and is permanent.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1574 * If interactive mode, it is allowed at global scope only
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1575 * option -a destroys everything.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1576 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1577 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1578 destroy_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1579 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1580 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1581 char *name, *realname = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1582
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1583 if (current_scope == NWAM_SCOPE_NCP &&
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1584 (cmd->cmd_res1_type == RT1_ENM || cmd->cmd_res1_type == RT1_LOC ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1585 cmd->cmd_res1_type == RT1_WLAN)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1586 nerr("Destroy error: only NCUs can be destroyed in NCP scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1587 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1588 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1589
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1590 assert(cmd->cmd_argc > 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1591
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1592 /* res1_type is -1 if -a flag is used */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1593 if (cmd->cmd_res1_type == -1) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1594 int c;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1595
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1596 if (current_scope != NWAM_SCOPE_GBL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1597 nerr("Cannot destroy all configurations in a "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1598 "non-global scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1599 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1600 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1601
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1602 optind = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1603 while ((c = getopt(cmd->cmd_argc, cmd->cmd_argv, "a")) != EOF) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1604 switch (c) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1605 case 'a':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1606 remove_all_configurations = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1607 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1608 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1609 command_usage(CMD_DESTROY);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1610 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1611 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1612 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1613 if (remove_all_configurations) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1614 (void) destroy_all();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1615 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1616 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1617 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1618
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1619 /* argv[0] is name */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1620 name = trim_quotes(cmd->cmd_argv[0]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1621 if (cmd->cmd_res2_type == RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1622 nwam_ncu_type_t ncu_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1623 nwam_ncu_class_t ncu_class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1624
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1625 /* ncp must already be read */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1626 if (ncp_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1627 nerr("Destroy ncu error: NCP has not been read");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1628 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1629 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1630 ncu_class = (nwam_ncu_class_t)cmd->cmd_ncu_class_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1631 ncu_type = nwam_ncu_class_to_type(ncu_class);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1632 ret = nwam_ncu_read(ncp_h, name, ncu_type, 0, &ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1633 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1634 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1635 (void) object_name_from_handle(NWAM_OBJECT_TYPE_NCU, ncu_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1636 &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1637 ret = nwam_ncu_destroy(ncu_h, 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1638 ncu_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1639 } else if (cmd->cmd_res1_type == RT1_ENM) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1640 if ((ret = nwam_enm_read(name, 0, &enm_h)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1641 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1642 (void) object_name_from_handle(NWAM_OBJECT_TYPE_ENM, enm_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1643 &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1644 ret = nwam_enm_destroy(enm_h, 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1645 enm_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1646 } else if (cmd->cmd_res1_type == RT1_LOC) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1647 if ((ret = nwam_loc_read(name, 0, &loc_h)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1648 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1649 (void) object_name_from_handle(NWAM_OBJECT_TYPE_LOC, loc_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1650 &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1651 ret = nwam_loc_destroy(loc_h, 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1652 loc_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1653 } else if (cmd->cmd_res1_type == RT1_WLAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1654 if ((ret = nwam_known_wlan_read(name, 0, &wlan_h))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1655 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1656 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1657 (void) object_name_from_handle(NWAM_OBJECT_TYPE_KNOWN_WLAN,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1658 wlan_h, &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1659 ret = nwam_known_wlan_destroy(wlan_h, 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1660 wlan_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1661 } else if (cmd->cmd_res1_type == RT1_NCP) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1662 if ((ret = nwam_ncp_read(name, 0, &ncp_h)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1663 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1664 (void) object_name_from_handle(NWAM_OBJECT_TYPE_NCP, ncp_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1665 &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1666 ret = nwam_ncp_destroy(ncp_h, 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1667 ncp_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1668 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1669 nerr("Destroy error: unknown object-type");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1670 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1671
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1672 done:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1673 if (ret == NWAM_ENTITY_IN_USE) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1674 nerr("Destroy error: active entity cannot be destroyed");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1675 } else if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1676 nwamerr(ret, "Destroy error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1677 } else if (interactive_mode) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1678 (void) printf(gettext("Destroyed %s '%s'\n"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1679 (cmd->cmd_res2_type == RT2_NCU ?
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1680 rt2_to_str(cmd->cmd_res2_type) :
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1681 rt1_to_str(cmd->cmd_res1_type)),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1682 realname != NULL ? realname : name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1683 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1684 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1685 free(realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1686 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1687
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1688 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1689 * End operation on current scope and go up one scope.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1690 * Changes are saved.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1691 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1692 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1693 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1694 end_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1695 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1696 /* if need_to_commit is set, commit changes */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1697 if (need_to_commit)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1698 do_commit();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1699
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1700 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1701 * Call do_cancel() to go up one scope. If commit fails,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1702 * need_to_commit is not reset and users are asked if they want to end.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1703 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1704 if (!need_to_commit ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1705 (need_to_commit && (ask_yesno(B_FALSE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1706 "Configuration not saved; really end")) == 1)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1707 /* set time_to_exit if in global scope */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1708 if (current_scope == NWAM_SCOPE_GBL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1709 time_to_exit = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1710 /* call do_cancel() to go up one scope */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1711 do_cancel();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1712 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1713 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1714
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1715 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1716 * Exit immediately. Configuration changes are saved by calling end_func().
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1717 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1718 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1719 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1720 exit_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1721 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1722 cmd_t *end_cmd;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1723
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1724 if (need_to_commit) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1725 if ((end_cmd = alloc_cmd()) == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1726 nerr("Exit error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1727 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1728 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1729 end_func(end_cmd);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1730 free_cmd(end_cmd);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1731 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1732
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1733 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1734 * If need_to_commit is still set, then the commit failed.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1735 * Otherwise, exit.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1736 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1737 if (!need_to_commit)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1738 time_to_exit = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1739 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1740
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1741 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1742 help_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1743 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1744 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1745
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1746 if (cmd->cmd_argc == 0) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1747 (void) printf(gettext("commands:\n"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1748 for (i = CMD_MIN; i <= CMD_MAX; i++)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1749 (void) printf("\t%s\n", helptab[i].cmd_usage);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1750 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1751 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1752
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1753 for (i = CMD_MIN; i <= CMD_MAX; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1754 if (strcmp(cmd->cmd_argv[0], cmd_to_str(i)) == 0) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1755 long_usage(i);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1756 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1757 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1758 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1759 (void) fprintf(stderr, gettext("Unknown command: '%s'\n"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1760 cmd->cmd_argv[0]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1761 help_wrap();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1762 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1763
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1764 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1765 * Revert configuration of an instance to latest previous version.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1766 * Free the handle and read again.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1767 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1768 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1769 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1770 revert_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1771 {
13046
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1772 nwam_error_t ret;
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1773 char *name = NULL;
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1774 nwam_ncu_type_t ncu_type;
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1775 nwam_object_type_t object_type = active_object_type();
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1776
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1777 switch (object_type) {
11767
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1778 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1779 /* retrieve name and type to use later */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1780 if ((ret = nwam_ncu_get_ncu_type(ncu_h, &ncu_type))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1781 != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1782 nwamerr(ret, "Revert error: Get ncu type error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1783 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1784 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1785 if ((ret = nwam_ncu_get_name(ncu_h, &name)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1786 goto name_error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1787 nwam_ncu_free(ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1788 ncu_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1789 ret = nwam_ncu_read(ncp_h, name, ncu_type, 0, &ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1790 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1791 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1792 if ((ret = nwam_enm_get_name(enm_h, &name)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1793 goto name_error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1794 nwam_enm_free(enm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1795 enm_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1796 ret = nwam_enm_read(name, 0, &enm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1797 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1798 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1799 if ((ret = nwam_loc_get_name(loc_h, &name)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1800 goto name_error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1801 nwam_loc_free(loc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1802 loc_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1803 ret = nwam_loc_read(name, 0, &loc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1804 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1805 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1806 if ((ret = nwam_known_wlan_get_name(wlan_h, &name))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1807 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1808 goto name_error;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1809 nwam_known_wlan_free(wlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1810 wlan_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1811 ret = nwam_known_wlan_read(name, 0, &wlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1812 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1813 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1814
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1815 /* Exit this scope because handle already freed (call do_cancel()) */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1816 need_to_commit = B_FALSE;
13046
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1817
11767
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1818 if (ret != NWAM_SUCCESS) {
13046
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1819 if (ret == NWAM_ENTITY_NOT_FOUND) {
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1820 nerr("%s '%s' does not exist to revert to, removing it",
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1821 nwam_object_type_to_string(object_type), name);
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1822 } else {
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1823 nwamerr(ret, "Revert error");
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1824 }
11767
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1825 do_cancel();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1826 }
13046
b615ff9cec13 6971008 nwamcfg revert emits confusing message
Anurag S. Maskey <Anurag.Maskey@Oracle.COM>
parents: 11767
diff changeset
1827 free(name);
11767
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1828 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1829
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1830 name_error:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1831 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1832 nwamerr(ret, "Revert error: get name error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1833 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1834
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1835 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1836 * Load a resource from persistent repository and enter the scope
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1837 * of that resource.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1838 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1839 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1840 select_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1841 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1842 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1843 char *name, *realname = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1844
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1845 assert(cmd->cmd_argc > 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1846 if (current_scope == NWAM_SCOPE_NCP && cmd->cmd_res2_type != RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1847 nerr("cannot select '%s' at this scope",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1848 rt1_to_str(cmd->cmd_res1_type));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1849 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1850 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1851
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1852 /* argv[0] is name */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1853 name = trim_quotes(cmd->cmd_argv[0]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1854 switch (cmd->cmd_res1_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1855 case RT1_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1856 ret = nwam_loc_read(name, 0, &loc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1857 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1858 current_scope = NWAM_SCOPE_LOC;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1859 (void) object_name_from_handle(NWAM_OBJECT_TYPE_LOC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1860 loc_h, &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1861 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1862 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1863 case RT1_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1864 ret = nwam_enm_read(name, 0, &enm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1865 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1866 current_scope = NWAM_SCOPE_ENM;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1867 (void) object_name_from_handle(NWAM_OBJECT_TYPE_ENM,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1868 enm_h, &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1869 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1870 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1871 case RT1_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1872 ret = nwam_known_wlan_read(name, 0, &wlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1873 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1874 current_scope = NWAM_SCOPE_WLAN;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1875 (void) object_name_from_handle
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1876 (NWAM_OBJECT_TYPE_KNOWN_WLAN, wlan_h, &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1877 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1878 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1879 case RT1_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1880 if (cmd->cmd_res2_type == RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1881 nwam_ncu_type_t ncu_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1882 nwam_ncu_class_t ncu_class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1883
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1884 /* ncp must already be read */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1885 if (ncp_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1886 nerr("Select error: NCP has not been read");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1887 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1888 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1889 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1890 ncu_class = (nwam_ncu_class_t)cmd->cmd_ncu_class_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1891 ncu_type = nwam_ncu_class_to_type(ncu_class);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1892 ret = nwam_ncu_read(ncp_h, name, ncu_type, 0, &ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1893 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1894 current_scope = NWAM_SCOPE_NCU;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1895 (void) object_name_from_handle
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1896 (NWAM_OBJECT_TYPE_NCU, ncu_h, &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1897 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1898 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1899 ret = nwam_ncp_read(name, 0, &ncp_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1900 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1901 current_scope = NWAM_SCOPE_NCP;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1902 (void) object_name_from_handle
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1903 (NWAM_OBJECT_TYPE_NCP, ncp_h, &realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1904 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1905 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1906 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1907 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1908 nerr("Select error: unknown object-type");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1909 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1910 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1911 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1912
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1913 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1914 nwamerr(ret, "Select error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1915 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1916 /* set the obj*_name or obj*_type depending on current scope */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1917 if (current_scope == NWAM_SCOPE_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1918 obj2_type = RT2_NCU;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1919 (void) strlcpy(obj2_name,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1920 realname != NULL ? realname : name,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1921 sizeof (obj2_name));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1922 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1923 (void) strlcpy(obj1_name,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1924 realname != NULL ? realname : name,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1925 sizeof (obj1_name));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1926 obj1_type = cmd->cmd_res1_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1927 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1928 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1929 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1930 free(realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1931 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1932
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1933 /* Given an int for prop, returns it as string */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1934 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1935 pt_to_prop_name(nwam_object_type_t object_type, int pt_type)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1936 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1937 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1938 prop_table_entry_t *prop_table = get_prop_table(object_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1939
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1940 for (i = 0; prop_table[i].pte_name != NULL; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1941 if (pt_type == prop_table[i].pte_type)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1942 return (prop_table[i].pte_name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1943 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1944 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1945 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1946
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1947 /* Given a prop as a string, returns it as an int */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1948 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1949 prop_to_pt(nwam_object_type_t object_type, const char *prop)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1950 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1951 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1952 prop_table_entry_t *prop_table = get_prop_table(object_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1953
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1954 for (i = 0; prop_table[i].pte_name != NULL; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1955 if (strcmp(prop, prop_table[i].pte_name) == 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1956 return (prop_table[i].pte_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1957 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1958 return (-1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1959 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1960
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1961 /* Given a prop as an int, returns its type (nwam_value_type_t) */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1962 static nwam_value_type_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1963 prop_value_type(nwam_object_type_t object_type, const char *prop)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1964 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1965 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1966 nwam_value_type_t value_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1967
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1968 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1969 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1970 ret = nwam_ncu_get_prop_type(prop, &value_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1971 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1972 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1973 ret = nwam_loc_get_prop_type(prop, &value_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1974 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1975 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1976 ret = nwam_enm_get_prop_type(prop, &value_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1977 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1978 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1979 ret = nwam_known_wlan_get_prop_type(prop, &value_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1980 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1981 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1982
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1983 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1984 value_type = NWAM_VALUE_TYPE_UNKNOWN;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1985
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1986 return (value_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1987 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1988
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1989 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1990 * Converts input_str to an array nwam_value.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1991 * If is_list_prop, break input_str into array of strings first.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1992 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1993 static nwam_value_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1994 str_to_nwam_value(nwam_object_type_t object_type, char *input_str, int pt_type,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1995 boolean_t is_list_prop)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1996 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1997 int i, n = 0, ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1998 nwam_value_t data;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
1999 char **val;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2000 int max_str_num;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2001
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2002 nwam_value_type_t value_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2003 int64_t *int_vals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2004 uint64_t *uint_vals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2005 boolean_t *boolean_vals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2006
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2007 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2008 * Worst case is that each char separated by DELIMITER, so the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2009 * max number of sub strings is half of string length + 1.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2010 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2011 max_str_num = strlen(input_str) / 2 + 1;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2012
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2013 val = calloc(max_str_num, sizeof (char *));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2014 if (val == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2015 nerr("Out of memory");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2016 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2017 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2018
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2019 if (is_list_prop) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2020 char *tmp, *next;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2021 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2022 * Break down input_str and save as array of sub strings.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2023 * Set num as the number of the sub strings.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2024 * Use nwam_tokenize_by_unescaped_delim() rather than strtok()
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2025 * because DELIMITER may be escaped
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2026 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2027 tmp = (char *)input_str;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2028 while ((tmp = nwam_tokenize_by_unescaped_delim(tmp,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2029 NWAM_VALUE_DELIMITER_CHAR, &next)) != NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2030 val[n++] = trim_quotes(tmp);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2031 tmp = next;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2032 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2033 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2034 val[n++] = trim_quotes(input_str);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2035 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2036
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2037 /* initialize int_vals or booleans_vals depending on pt_type */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2038 value_type = prop_value_type(object_type,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2039 pt_to_prop_name(object_type, pt_type));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2040 if (value_type == NWAM_VALUE_TYPE_INT64) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2041 int_vals = calloc(n, sizeof (int64_t));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2042 if (int_vals == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2043 nerr("Out of memory");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2044 array_free((void **)val, max_str_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2045 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2046 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2047 } else if (value_type == NWAM_VALUE_TYPE_UINT64) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2048 uint_vals = calloc(n, sizeof (uint64_t));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2049 if (uint_vals == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2050 nerr("Out of memory");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2051 array_free((void **)val, max_str_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2052 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2053 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2054 } else if (value_type == NWAM_VALUE_TYPE_BOOLEAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2055 boolean_vals = calloc(n, sizeof (boolean_t));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2056 if (boolean_vals == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2057 nerr("Out of memory");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2058 array_free((void **)val, max_str_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2059 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2060 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2061 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2062 /* set the appropriate array */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2063 for (i = 0; i < n; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2064 switch (value_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2065 case NWAM_VALUE_TYPE_STRING:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2066 /* nothing to do - val already has the char** array */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2067 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2068 case NWAM_VALUE_TYPE_INT64:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2069 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2070 int_vals[i] = (int64_t)atoi(val[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2071 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2072 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2073 case NWAM_VALUE_TYPE_UINT64:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2074 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2075 uint64_t str_as_enum;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2076 char *endptr;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2077
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2078 ret = nwam_value_string_get_uint64(
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2079 pt_to_prop_name(object_type, pt_type),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2080 val[i], &str_as_enum);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2081 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2082 * Returns _SUCCESS if value for enum is valid.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2083 * Returns _INVALID_ARG if property is not an enum.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2084 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2085 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2086 uint_vals[i] = str_as_enum;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2087 } else if (ret == NWAM_INVALID_ARG) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2088 uint_vals[i] = strtoul(val[i], &endptr, 10);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2089 /* verify conversion is valid */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2090 if (endptr == val[i]) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2091 free(uint_vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2092 array_free((void **)val, max_str_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2093 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2094 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2095 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2096 free(uint_vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2097 array_free((void **)val, max_str_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2098 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2099 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2100 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2101 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2102 case NWAM_VALUE_TYPE_BOOLEAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2103 boolean_vals[i] = str_to_boolean(val[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2104 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2105 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2106 array_free((void **)val, max_str_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2107 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2108 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2109 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2110
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2111 /* create nwam_value_t */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2112 if (value_type == NWAM_VALUE_TYPE_STRING) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2113 ret = nwam_value_create_string_array(val, n, &data);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2114 } else if (value_type == NWAM_VALUE_TYPE_INT64) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2115 ret = nwam_value_create_int64_array(int_vals, n, &data);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2116 free(int_vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2117 } else if (value_type == NWAM_VALUE_TYPE_UINT64) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2118 ret = nwam_value_create_uint64_array(uint_vals, n, &data);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2119 free(uint_vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2120 } else if (value_type == NWAM_VALUE_TYPE_BOOLEAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2121 ret = nwam_value_create_boolean_array(boolean_vals, n, &data);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2122 free(boolean_vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2123 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2124 array_free((void **)val, max_str_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2125
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2126 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2127 nwamerr(ret, "Failed creating nwam_value");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2128 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2129 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2130
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2131 return (data);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2132 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2133
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2134 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2135 * Displaying/Skipping of properties
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2136 * ---------------------------------
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2137 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2138 * This table shows if a specific property should be shown if some
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2139 * other property has a specific value. This table is used by
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2140 * show_prop_test(), which is called by set_func() and walkprop_func().
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2141 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2142 * An entry in the table looks like:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2143 * { property1, property2, { val1, val2, -1 } }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2144 * This is read as:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2145 * "show property1 only if property2 has value val1 or val2"
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2146 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2147 * NB: If a property does not appear in this table, then that implies
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2148 * that the property is always shown.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2149 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2150 * A property can have more than one rule. In such a case, the property is
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2151 * displayed only any of the rules is satisfied. This checking, however,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2152 * is recursive. If a rule says that a property can be displayed, then the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2153 * property that's checked should also satisfy its rules. In the above
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2154 * example, if property1 is to be displayed, then property2 should also
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2155 * satisfy its rules and be displayable. This recursion is necessary as
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2156 * properties that are not displayed (because rules are not satisfied) are
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2157 * not deleted.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2158 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2159
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2160 /* The most number of values in pde_checkvals below */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2161 #define NWAM_CHECKVALS_MAX 5
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2162
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2163 typedef struct prop_display_entry {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2164 const char *pde_name; /* property to show */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2165 const char *pde_checkname; /* property to check */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2166 int64_t pde_checkvals[NWAM_CHECKVALS_MAX]; /* show prop for these */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2167 } prop_display_entry_t;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2168
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2169 /* Rules for showing properties: commented for clarity */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2170
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2171 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2172 * Rules for NCUs
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2173 * NB: There is no need to have an entry if a property is for IP only.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2174 * This is taken care of in libnwam_ncp.c
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2175 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2176 static prop_display_entry_t ncu_prop_display_entry_table[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2177 /* show priority-{group,mode} if activation == prioritized */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2178 { NWAM_NCU_PROP_PRIORITY_GROUP, NWAM_NCU_PROP_ACTIVATION_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2179 { NWAM_ACTIVATION_MODE_PRIORITIZED, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2180 { NWAM_NCU_PROP_PRIORITY_MODE, NWAM_NCU_PROP_ACTIVATION_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2181 { NWAM_ACTIVATION_MODE_PRIORITIZED, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2182 /* show ipv4-addrsrc if ip-version == ipv4 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2183 { NWAM_NCU_PROP_IPV4_ADDRSRC, NWAM_NCU_PROP_IP_VERSION,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2184 { IPV4_VERSION, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2185 /* show ipv4-addr if ipv4-addrsrc == static */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2186 { NWAM_NCU_PROP_IPV4_ADDR, NWAM_NCU_PROP_IPV4_ADDRSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2187 { NWAM_ADDRSRC_STATIC, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2188 /* show ipv4-default-route if ip-version == ipv4 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2189 { NWAM_NCU_PROP_IPV4_DEFAULT_ROUTE, NWAM_NCU_PROP_IP_VERSION,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2190 { IPV4_VERSION, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2191 /* show ipv6-addrsrc if ip-version == ipv6 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2192 { NWAM_NCU_PROP_IPV6_ADDRSRC, NWAM_NCU_PROP_IP_VERSION,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2193 { IPV6_VERSION, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2194 /* show ipv6-addr if ipv6-addrsrc == static */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2195 { NWAM_NCU_PROP_IPV6_ADDR, NWAM_NCU_PROP_IPV6_ADDRSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2196 { NWAM_ADDRSRC_STATIC, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2197 /* show ipv6-default-route if ip-version == ipv6 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2198 { NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE, NWAM_NCU_PROP_IP_VERSION,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2199 { IPV6_VERSION, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2200 { NULL, NULL, { -1 } }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2201 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2202
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2203 /* Rules for ENMs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2204 static prop_display_entry_t enm_prop_display_entry_table[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2205 /* show conditions if activation-mode == conditional-{all,any} */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2206 { NWAM_ENM_PROP_CONDITIONS, NWAM_ENM_PROP_ACTIVATION_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2207 { NWAM_ACTIVATION_MODE_CONDITIONAL_ALL,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2208 NWAM_ACTIVATION_MODE_CONDITIONAL_ANY, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2209 { NULL, NULL, { -1 } }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2210 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2211
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2212 /* Rules for LOCations */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2213 static prop_display_entry_t loc_prop_display_entry_table[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2214 /* show conditions if activation-mode == conditional-{all,any} */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2215 { NWAM_LOC_PROP_CONDITIONS, NWAM_LOC_PROP_ACTIVATION_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2216 { NWAM_ACTIVATION_MODE_CONDITIONAL_ALL,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2217 NWAM_ACTIVATION_MODE_CONDITIONAL_ANY, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2218 /* show dns-nameservice-configsrc if nameservices == dns */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2219 { NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC, NWAM_LOC_PROP_NAMESERVICES,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2220 { NWAM_NAMESERVICES_DNS, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2221 /* show other DNS options if dns-nameservices-configsrc == manual */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2222 { NWAM_LOC_PROP_DNS_NAMESERVICE_DOMAIN,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2223 NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2224 { NWAM_CONFIGSRC_MANUAL, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2225 { NWAM_LOC_PROP_DNS_NAMESERVICE_SERVERS,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2226 NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2227 { NWAM_CONFIGSRC_MANUAL, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2228 { NWAM_LOC_PROP_DNS_NAMESERVICE_SEARCH,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2229 NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2230 { NWAM_CONFIGSRC_MANUAL, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2231 /* show nis-nameservice-configsrc if nameservices == nis */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2232 { NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC, NWAM_LOC_PROP_NAMESERVICES,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2233 { NWAM_NAMESERVICES_NIS, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2234 /* show nis-nameservice-servers if nis-nameservice-configsrc = manual */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2235 { NWAM_LOC_PROP_NIS_NAMESERVICE_SERVERS,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2236 NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2237 { NWAM_CONFIGSRC_MANUAL, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2238 /* show ldap-nameservice-configsrc if nameservices == ldap */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2239 { NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC, NWAM_LOC_PROP_NAMESERVICES,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2240 { NWAM_NAMESERVICES_LDAP, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2241 /* show ldap-nameservice-servers if ldap-nameservice-configsrc=manual */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2242 { NWAM_LOC_PROP_LDAP_NAMESERVICE_SERVERS,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2243 NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2244 { NWAM_CONFIGSRC_MANUAL, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2245 /* show default-domain if {nis,ldap}-nameservice-configsrc == manual */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2246 { NWAM_LOC_PROP_DEFAULT_DOMAIN, NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2247 { NWAM_CONFIGSRC_MANUAL, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2248 { NWAM_LOC_PROP_DEFAULT_DOMAIN,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2249 NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2250 { NWAM_CONFIGSRC_MANUAL, -1 } },
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2251 { NULL, NULL, { -1 } }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2252 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2253
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2254 /* Rules for Known WLANs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2255 static prop_display_entry_t wlan_prop_display_entry_table[] = {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2256 /* no rules for WLANs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2257 { NULL, NULL, { -1 } }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2258 };
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2259
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2260 /* Returns the appropriate rules table for the given object type */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2261 static prop_display_entry_t *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2262 get_prop_display_table(nwam_object_type_t object_type)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2263 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2264 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2265 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2266 return (ncu_prop_display_entry_table);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2267 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2268 return (loc_prop_display_entry_table);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2269 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2270 return (enm_prop_display_entry_table);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2271 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2272 return (wlan_prop_display_entry_table);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2273 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2274 return (NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2275 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2276
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2277 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2278 * Tests whether prop must be shown during a walk depending on the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2279 * value of a different property.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2280 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2281 * This function is also used by set_func() to determine whether the
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2282 * property being set should be allowed or not. If the property
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2283 * would not be displayed in a walk, then it should not be set.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2284 *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2285 * The checked_props and num_checked arguments are used to avoid circular
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2286 * dependencies between properties. When this function recursively calls
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2287 * itself, it adds the property that it just checked to the checked_props
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2288 * list.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2289 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2290 static boolean_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2291 show_prop_test(nwam_object_type_t object_type, const char *prop,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2292 prop_display_entry_t *display_list, char **checked_props, int num_checked)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2293 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2294 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2295 nwam_value_t prop_val;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2296 nwam_value_type_t prop_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2297 int i, j, k;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2298 boolean_t prop_found = B_FALSE, show_prop = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2299
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2300 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2301 * Check if this property has already been checked previously in
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2302 * the recursion. If so, return B_FALSE so that the initial prop
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2303 * is not displayed.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2304 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2305 for (i = 0; i < num_checked; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2306 if (strcmp(prop, checked_props[i]) == 0) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2307 free(checked_props);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2308 return (B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2309 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2310 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2311
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2312 for (i = 0; display_list[i].pde_name != NULL; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2313 if (strcmp(prop, display_list[i].pde_name) != 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2314 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2315 prop_found = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2316
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2317 /* get the value(s) of the (other) property to check */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2318 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2319 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2320 ret = nwam_ncu_get_prop_value(ncu_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2321 display_list[i].pde_checkname, &prop_val);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2322 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2323 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2324 ret = nwam_loc_get_prop_value(loc_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2325 display_list[i].pde_checkname, &prop_val);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2326 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2327 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2328 ret = nwam_enm_get_prop_value(enm_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2329 display_list[i].pde_checkname, &prop_val);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2330 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2331 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2332 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2333 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2334 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2335 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2336
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2337 /* prop_val may contain a uint64 array or a boolean */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2338 if (nwam_value_get_type(prop_val, &prop_type) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2339 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2340
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2341 if (prop_type == NWAM_VALUE_TYPE_UINT64) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2342 uint64_t *prop_uvals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2343 int64_t *check_uvals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2344 uint_t numvals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2345
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2346 if (nwam_value_get_uint64_array(prop_val, &prop_uvals,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2347 &numvals) != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2348 nwam_value_free(prop_val);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2349 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2350 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2351
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2352 /* for each value in uvals, check each value in table */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2353 for (j = 0; j < numvals; j++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2354 check_uvals = display_list[i].pde_checkvals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2355 for (k = 0; check_uvals[k] != -1; k++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2356 /* show if uvals[j] matches */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2357 if (prop_uvals[j] ==
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2358 (uint64_t)check_uvals[k]) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2359 show_prop = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2360 goto next_rule;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2361 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2362 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2363 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2364 } else if (prop_type == NWAM_VALUE_TYPE_BOOLEAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2365 boolean_t bval;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2366
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2367 if (nwam_value_get_boolean(prop_val, &bval) !=
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2368 NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2369 nwam_value_free(prop_val);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2370 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2371 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2372
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2373 for (k = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2374 display_list[i].pde_checkvals[k] != -1;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2375 k++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2376 /* show if bval matches */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2377 if (bval == (boolean_t)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2378 display_list[i].pde_checkvals[k]) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2379 show_prop = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2380 goto next_rule;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2381 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2382 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2383 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2384
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2385 next_rule:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2386 nwam_value_free(prop_val);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2387 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2388 * If show_prop is set, then a rule is satisfied; no need to
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2389 * check other rules for this prop. However, recursively
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2390 * check if the checked prop (pde_checkname) satisfies its
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2391 * rules. Also, update the check_props array with this prop.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2392 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2393 if (show_prop) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2394 char **newprops = realloc(checked_props,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2395 ++num_checked * sizeof (char *));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2396 if (newprops == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2397 free(checked_props);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2398 return (B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2399 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2400 checked_props = newprops;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2401 checked_props[num_checked - 1] = (char *)prop;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2402
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2403 return (show_prop_test(object_type,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2404 display_list[i].pde_checkname, display_list,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2405 checked_props, num_checked));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2406 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2407 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2408
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2409 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2410 * If we are here and prop_found is set, it means that no rules were
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2411 * satisfied by prop; return B_FALSE. If prop_found is not set, then
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2412 * prop did not have a rule so it must be displayed; return B_TRUE.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2413 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2414 free(checked_props);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2415 if (prop_found)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2416 return (B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2417 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2418 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2419 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2420
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2421 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2422 * Returns true if the given property is read-only and cannot be modified.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2423 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2424 static boolean_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2425 is_prop_read_only(nwam_object_type_t object_type, const char *prop)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2426 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2427 boolean_t ro;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2428
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2429 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2430 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2431 if (nwam_ncu_prop_read_only(prop, &ro) == NWAM_SUCCESS && ro)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2432 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2433 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2434 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2435 if (nwam_enm_prop_read_only(prop, &ro) == NWAM_SUCCESS && ro)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2436 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2437 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2438 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2439 if (nwam_loc_prop_read_only(prop, &ro) == NWAM_SUCCESS && ro)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2440 return (B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2441 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2442 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2443 /* no read-only properties for WLANs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2444 return (B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2445 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2446 return (B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2447 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2448
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2449 /* Returns true if the property is multi-valued */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2450 static boolean_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2451 is_prop_multivalued(nwam_object_type_t object_type, const char *prop)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2452 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2453 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2454 boolean_t multi;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2455
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2456 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2457 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2458 ret = nwam_ncu_prop_multivalued(prop, &multi);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2459 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2460 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2461 ret = nwam_loc_prop_multivalued(prop, &multi);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2462 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2463 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2464 ret = nwam_enm_prop_multivalued(prop, &multi);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2465 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2466 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2467 ret = nwam_known_wlan_prop_multivalued(prop, &multi);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2468 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2469 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2470
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2471 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2472 multi = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2473 return (multi);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2474 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2475
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2476 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2477 * Prints out error message specific to property that could not be set.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2478 * Property description is used to help guide user in entering correct value.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2479 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2480 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2481 invalid_set_prop_msg(const char *prop, nwam_error_t err)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2482 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2483 const char *description;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2484
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2485 if (err == NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2486 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2487
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2488 if (err != NWAM_ENTITY_INVALID_VALUE) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2489 nwamerr(err, "Set error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2490 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2491 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2492
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2493 switch (active_object_type()) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2494 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2495 (void) nwam_ncu_get_prop_description(prop, &description);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2496 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2497 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2498 (void) nwam_loc_get_prop_description(prop, &description);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2499 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2500 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2501 (void) nwam_enm_get_prop_description(prop, &description);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2502 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2503 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2504 (void) nwam_known_wlan_get_prop_description(prop,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2505 &description);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2506 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2507 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2508 nerr("Set error: invalid value\n'%s' %s", prop, description);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2509 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2510
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2511 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2512 * Sets the property value.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2513 * Read-only properties and objects cannot be set.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2514 * "read-only" is a special in that it can be set on a read-only object.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2515 * The object has to be committed before other properties can be set.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2516 * Also uses show_prop_test() to test if the property being set would
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2517 * be skipped during a walk (as determined by the value of some other
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2518 * property). If so, then it cannot be set.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2519 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2520 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2521 set_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2522 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2523 int pt_type = cmd->cmd_prop_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2524 nwam_error_t ret = NWAM_SUCCESS;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2525 nwam_value_t prop_value;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2526 const char *prop;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2527 boolean_t is_listprop = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2528 nwam_object_type_t object_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2529 prop_display_entry_t *prop_table;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2530 char **checked = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2531
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2532 assert(cmd->cmd_argc > 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2533
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2534 object_type = active_object_type();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2535 prop_table = get_prop_display_table(object_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2536
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2537 /* argv[0] is property value */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2538 if ((prop = pt_to_prop_name(object_type, pt_type)) == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2539 nerr("Set error: invalid %s property: '%s'",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2540 scope_to_str(current_scope), pt_to_str(pt_type));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2541 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2542 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2543
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2544 /* check if property can be set */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2545 if (is_prop_read_only(object_type, prop)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2546 nerr("Set error: property '%s' is read-only", prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2547 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2548 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2549 if (!show_prop_test(object_type, prop, prop_table, checked, 0)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2550 if (interactive_mode) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2551 (void) printf(gettext("setting property '%s' "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2552 "has no effect\n"), prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2553 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2554 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2555
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2556 is_listprop = is_prop_multivalued(object_type, prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2557 prop_value = str_to_nwam_value(object_type, cmd->cmd_argv[0], pt_type,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2558 is_listprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2559 if (prop_value == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2560 invalid_set_prop_msg(prop, NWAM_ENTITY_INVALID_VALUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2561 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2562 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2563
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2564 /* set the property value */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2565 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2566 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2567 ret = nwam_ncu_set_prop_value(ncu_h, prop, prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2568 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2569 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2570 ret = nwam_loc_set_prop_value(loc_h, prop, prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2571 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2572 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2573 ret = nwam_enm_set_prop_value(enm_h, prop, prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2574 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2575 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2576 ret = nwam_known_wlan_set_prop_value(wlan_h, prop, prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2577 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2578 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2579 nwam_value_free(prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2580
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2581 /* delete other properties if needed */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2582 if (ret == NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2583 need_to_commit = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2584 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2585 invalid_set_prop_msg(prop, ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2586 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2587
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2588 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2589 list_callback(nwam_object_type_t object_type, void *handle,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2590 boolean_t *list_msgp, const char *msg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2591 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2592 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2593 char *name;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2594 nwam_ncu_class_t class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2595
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2596 if (*list_msgp) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2597 (void) printf("%s:\n", msg);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2598 *list_msgp = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2599 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2600
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2601 ret = object_name_from_handle(object_type, handle, &name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2602 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2603 nwamerr(ret, "List error: failed to get name");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2604 return (1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2605 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2606
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2607 /* If NCU, get its class and print */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2608 if (object_type == NWAM_OBJECT_TYPE_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2609 if ((ret = nwam_ncu_get_ncu_class(handle, &class))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2610 != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2611 nwamerr(ret, "List error: failed to get ncu class");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2612 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2613 return (1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2614 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2615 (void) printf("\t%s",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2616 propval_to_str(NWAM_NCU_PROP_CLASS, class));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2617 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2618 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2619 (void) printf("\t%s\n", name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2620
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2621 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2622 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2623 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2624
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2625 /* Print out name, type and status */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2626 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2627 list_loc_callback(nwam_loc_handle_t loc, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2628 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2629 return (list_callback(NWAM_OBJECT_TYPE_LOC, loc, arg, "Locations"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2630 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2631
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2632 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2633 list_enm_callback(nwam_enm_handle_t enm, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2634 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2635 return (list_callback(NWAM_OBJECT_TYPE_ENM, enm, arg, "ENMs"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2636 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2637
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2638 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2639 list_wlan_callback(nwam_known_wlan_handle_t wlan, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2640 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2641 return (list_callback(NWAM_OBJECT_TYPE_KNOWN_WLAN, wlan, arg, "WLANs"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2642 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2643
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2644 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2645 list_ncp_callback(nwam_ncp_handle_t ncp, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2646 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2647 return (list_callback(NWAM_OBJECT_TYPE_NCP, ncp, arg, "NCPs"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2648 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2649
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2650 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2651 list_ncu_callback(nwam_ncu_handle_t ncu, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2652 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2653 return (list_callback(NWAM_OBJECT_TYPE_NCU, ncu, arg, "NCUs"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2654 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2655
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2656 /* functions to convert a value to a string */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2657 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2658 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2659 str2str(void *s, const char *prop, char *str)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2660 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2661 (void) snprintf(str, NWAM_MAX_VALUE_LEN, "%s", s);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2662 return (str);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2663 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2664
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2665 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2666 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2667 str2qstr(void *s, const char *prop, char *qstr)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2668 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2669 /* quoted strings */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2670 (void) snprintf(qstr, NWAM_MAX_VALUE_LEN, "\"%s\"", s);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2671 return (qstr);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2672 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2673
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2674 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2675 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2676 int2str(void *in, const char *prop, char *instr)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2677 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2678 (void) snprintf(instr, NWAM_MAX_VALUE_LEN, "%lld", *((int64_t *)in));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2679 return (instr);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2680 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2681
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2682 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2683 uint2str(void *uin, const char *prop, char *uintstr)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2684 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2685 /* returns NWAM_SUCCESS if prop is enum with string in uintstr */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2686 if (nwam_uint64_get_value_string(prop, *((uint64_t *)uin),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2687 (const char **)&uintstr) != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2688 (void) snprintf(uintstr, NWAM_MAX_VALUE_LEN, "%lld",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2689 *((uint64_t *)uin));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2690 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2691 return (uintstr);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2692 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2693
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2694 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2695 static const char *
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2696 bool2str(void *bool, const char *prop, char *boolstr)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2697 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2698 (void) snprintf(boolstr, NWAM_MAX_VALUE_LEN, "%s",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2699 *((boolean_t *)bool) ? "true" : "false");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2700 return (boolstr);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2701 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2702
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2703 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2704 * Print the value (enums are converted to string), use DELIMITER for
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2705 * array. If strings are to be "quoted", pass B_TRUE for quoted_strings.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2706 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2707 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2708 output_prop_val(const char *prop_name, nwam_value_t value, FILE *wf,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2709 boolean_t quoted_strings)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2710 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2711 nwam_value_type_t value_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2712 uint_t num;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2713
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2714 /* arrays for values retrieved according to the type of value */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2715 char **svals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2716 uint64_t *uvals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2717 int64_t *ivals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2718 boolean_t *bvals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2719
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2720 /* pointer to function to generate string representation of value */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2721 const char *(*tostr)(void *, const char *, char *);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2722 char str[NWAM_MAX_VALUE_LEN]; /* to store the string */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2723 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2724
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2725 if (nwam_value_get_type(value, &value_type) != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2726 nerr("Get value type error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2727 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2728 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2729
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2730 if (value_type == NWAM_VALUE_TYPE_STRING) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2731 if (nwam_value_get_string_array(value, &svals, &num) !=
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2732 NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2733 nerr("Get string array error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2734 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2735 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2736 tostr = quoted_strings ? str2qstr : str2str;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2737 } else if (value_type == NWAM_VALUE_TYPE_INT64) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2738 if (nwam_value_get_int64_array(value, &ivals, &num) !=
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2739 NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2740 nerr("Get int64 array error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2741 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2742 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2743 tostr = int2str;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2744 } else if (value_type == NWAM_VALUE_TYPE_UINT64) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2745 if (nwam_value_get_uint64_array(value, &uvals, &num) !=
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2746 NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2747 nerr("Get uint64 array error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2748 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2749 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2750 tostr = uint2str;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2751 } else if (value_type == NWAM_VALUE_TYPE_BOOLEAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2752 if (nwam_value_get_boolean_array(value, &bvals, &num) !=
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2753 NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2754 nerr("Get boolean array error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2755 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2756 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2757 tostr = bool2str;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2758 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2759
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2760 /* now, loop and print each value */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2761 for (i = 0; i < num; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2762 void *val;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2763
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2764 /* get the pointer to the ith value to pass to func() */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2765 if (value_type == NWAM_VALUE_TYPE_STRING)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2766 val = svals[i];
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2767 else if (value_type == NWAM_VALUE_TYPE_UINT64)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2768 val = &(uvals[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2769 else if (value_type == NWAM_VALUE_TYPE_INT64)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2770 val = &(ivals[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2771 else if (value_type == NWAM_VALUE_TYPE_BOOLEAN)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2772 val = &(bvals[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2773
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2774 (void) fprintf(wf, "%s%s", tostr(val, prop_name, str),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2775 i != num-1 ? NWAM_VALUE_DELIMITER_STR : "");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2776 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2777 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2778
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2779 /* Prints the property names aligned (for list/get) or "prop=" (for export) */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2780 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2781 output_propname_common(const char *prop, nwam_value_t values, void *arg,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2782 int width)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2783 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2784 FILE *of = (arg == NULL) ? stdout : arg;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2785
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2786 /* arg is NULL for list/get, not NULL for export */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2787 if (arg == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2788 (void) fprintf(of, "\t%-*s\t", width, prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2789 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2790 (void) fprintf(of, "%s=", prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2791
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2792 if (values != NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2793 output_prop_val(prop, values, of, B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2794
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2795 (void) fprintf(of, "\n");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2796 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2797 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2798
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2799 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2800 output_propname(const char *prop, nwam_value_t values, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2801 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2802 return (output_propname_common(prop, values, arg, 16));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2803 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2804
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2805 /* For locations because of longer property names */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2806 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2807 output_loc_propname(const char *prop, nwam_value_t values, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2808 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2809 return (output_propname_common(prop, values, arg, 25));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2810 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2811
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2812 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2813 * all_props specifies whether properties that have not been set should be
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2814 * printed or not. ncp and ncu_type are used only when the object_type is
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2815 * NCU.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2816 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2817 static nwam_error_t
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2818 listprop(nwam_object_type_t object_type, void *handle, const char *name,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2819 boolean_t all_props, nwam_ncp_handle_t ncp, nwam_ncu_type_t ncu_type)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2820 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2821 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2822 char *lname = NULL, *realname = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2823 boolean_t lhandle = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2824 const char **props = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2825 uint_t prop_num;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2826 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2827 nwam_value_t vals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2828
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2829 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2830 * handle is NULL if called from a scope higher than the object's
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2831 * scope, but name must be given; so get the handle.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2832 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2833 if (handle == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2834 lname = trim_quotes(name); /* name may have quotes */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2835 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2836 case NWAM_OBJECT_TYPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2837 if ((ret = nwam_ncp_read(lname, 0,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2838 (nwam_ncp_handle_t *)&handle)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2839 goto readfail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2840 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2841 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2842 ret = nwam_ncu_read(ncp, lname, ncu_type, 0,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2843 (nwam_ncu_handle_t *)&handle);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2844 if (ret == NWAM_ENTITY_MULTIPLE_VALUES) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2845 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2846 * Multiple NCUs with the given name exists.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2847 * Call listprop() for each NCU type.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2848 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2849 if ((ret = listprop(object_type, NULL, lname,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2850 all_props, ncp, NWAM_NCU_TYPE_LINK))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2851 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2852 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2853 ret = listprop(object_type, NULL, lname,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2854 all_props, ncp, NWAM_NCU_TYPE_INTERFACE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2855 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2856 } else if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2857 goto readfail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2858 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2859 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2860 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2861 if ((ret = nwam_loc_read(lname, 0,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2862 (nwam_loc_handle_t *)&handle)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2863 goto readfail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2864 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2865 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2866 if ((ret = nwam_enm_read(lname, 0,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2867 (nwam_enm_handle_t *)&handle)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2868 goto readfail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2869 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2870 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2871 if ((ret = nwam_known_wlan_read(lname, 0,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2872 (nwam_known_wlan_handle_t *)&handle))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2873 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2874 goto readfail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2875 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2876 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2877 lhandle = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2878 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2879
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2880 if ((ret = object_name_from_handle(object_type, handle, &realname))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2881 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2882 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2883
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2884 /* get the property list */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2885 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2886 case NWAM_OBJECT_TYPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2887 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2888 /* walk NCUs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2889 boolean_t list_msg = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2890 ret = nwam_ncp_walk_ncus(handle, list_ncu_callback, &list_msg,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2891 NWAM_FLAG_NCU_TYPE_CLASS_ALL, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2892 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2893 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2894 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2895 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2896 nwam_ncu_type_t ncu_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2897 nwam_ncu_class_t ncu_class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2898
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2899 if ((ret = nwam_ncu_get_ncu_type(handle, &ncu_type))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2900 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2901 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2902 if ((ret = nwam_ncu_get_ncu_class(handle, &ncu_class))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2903 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2904 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2905
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2906 ret = nwam_ncu_get_default_proplist(ncu_type, ncu_class, &props,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2907 &prop_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2908 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2909 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2910 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2911 ret = nwam_loc_get_default_proplist(&props, &prop_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2912 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2913 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2914 ret = nwam_enm_get_default_proplist(&props, &prop_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2915 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2916 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2917 ret = nwam_known_wlan_get_default_proplist(&props, &prop_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2918 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2919 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2920 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2921 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2922
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2923 /* print object type and name */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2924 (void) printf("%s:%s\n", nwam_object_type_to_string(object_type),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2925 realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2926
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2927 /* Loop through the properties and print */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2928 for (i = 0; i < prop_num; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2929 /* get the existing value for this property */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2930 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2931 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2932 ret = nwam_ncu_get_prop_value(handle, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2933 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2934 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2935 ret = nwam_loc_get_prop_value(handle, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2936 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2937 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2938 ret = nwam_enm_get_prop_value(handle, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2939 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2940 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2941 ret = nwam_known_wlan_get_prop_value(handle, props[i],
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2942 &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2943 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2944 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2945 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2946 /* _ENTITY_NOT_FOUND is ok if listing for all props */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2947 if (!all_props)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2948 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2949 else if (ret != NWAM_ENTITY_NOT_FOUND)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2950 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2951 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2952
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2953 /* print property and value */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2954 if (object_type == NWAM_OBJECT_TYPE_LOC)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2955 output_loc_propname(props[i], vals, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2956 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2957 output_propname(props[i], vals, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2958 nwam_value_free(vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2959 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2960
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2961 done:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2962 free(lname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2963 free(realname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2964 if (props != NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2965 free(props);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2966 if (lhandle) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2967 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2968 case NWAM_OBJECT_TYPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2969 nwam_ncp_free(handle);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2970 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2971 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2972 nwam_ncu_free(handle);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2973 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2974 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2975 nwam_loc_free(handle);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2976 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2977 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2978 nwam_enm_free(handle);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2979 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2980 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2981 nwam_known_wlan_free(handle);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2982 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2983 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2984 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2985 /* don't treat _ENTITY_NOT_FOUND as an error */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2986 if (ret == NWAM_ENTITY_NOT_FOUND)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2987 ret = NWAM_SUCCESS;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2988 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2989
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2990 readfail:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2991 /* When nwam_*_read() fails */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2992 free(lname);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2993 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2994 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2995
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2996 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2997 * List profiles or property and its values.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2998 * If the -a option is specified, all properties are listed.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
2999 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3000 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3001 list_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3002 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3003 nwam_error_t ret = NWAM_SUCCESS;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3004 boolean_t list_msg = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3005
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3006 boolean_t list_loc = B_FALSE, list_enm = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3007 boolean_t list_ncp = B_FALSE, list_ncu = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3008 boolean_t list_wlan = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3009
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3010 /* whether all properties should be listed, given by the -a option */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3011 boolean_t all_props = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3012
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3013 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3014 * list_props says whether the properties should be listed.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3015 * Note that, here NCUs are treated as properties of NCPs.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3016 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3017 boolean_t list_props = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3018
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3019 /* determine which properties to list, also validity tests */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3020 if (current_scope == NWAM_SCOPE_GBL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3021 /* res1_type is -1 if only "list -a" is used */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3022 if (cmd->cmd_res1_type == -1) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3023 nerr("'list' requires an object to be specified with "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3024 "the -a option in the global scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3025 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3026 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3027 if (cmd->cmd_res1_type == RT1_LOC) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3028 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3029 list_loc = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3030 } else if (cmd->cmd_res1_type == RT1_ENM) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3031 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3032 list_enm = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3033 } else if (cmd->cmd_res1_type == RT1_WLAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3034 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3035 list_wlan = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3036 } else if (cmd->cmd_res1_type == RT1_NCP) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3037 list_ncp = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3038 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3039 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3040 list_loc = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3041 list_enm = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3042 list_wlan = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3043 list_ncp = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3044 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3045 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3046 if ((current_scope == NWAM_SCOPE_LOC ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3047 current_scope == NWAM_SCOPE_ENM ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3048 current_scope == NWAM_SCOPE_WLAN ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3049 current_scope == NWAM_SCOPE_NCU) &&
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3050 (cmd->cmd_argc >= 1 && cmd->cmd_res1_type != -1)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3051 nerr("Additional options are not allowed with the -a option "
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3052 "at this scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3053 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3054 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3055 if (current_scope == NWAM_SCOPE_LOC) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3056 list_loc = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3057 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3058 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3059 if (current_scope == NWAM_SCOPE_ENM) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3060 list_enm = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3061 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3062 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3063 if (current_scope == NWAM_SCOPE_WLAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3064 list_wlan = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3065 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3066 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3067 if (current_scope == NWAM_SCOPE_NCP) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3068 if (cmd->cmd_res1_type == RT1_ENM ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3069 cmd->cmd_res1_type == RT1_LOC ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3070 cmd->cmd_res1_type == RT1_WLAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3071 nerr("only ncu can be listed at this scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3072 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3073 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3074 if (cmd->cmd_res2_type == RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3075 list_ncu = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3076 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3077 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3078 list_ncp = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3079 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3080 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3081 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3082 if (current_scope == NWAM_SCOPE_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3083 list_ncu = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3084 list_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3085 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3086
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3087 /* Check if the -a option is specified to list all properties */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3088 if (cmd->cmd_res1_type == -1 || cmd->cmd_argc == 2) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3089 int c, argc = 1;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3090 char **argv;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3091 optind = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3092
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3093 /* if res1_type is -1, option is in argv[0], else in argv[1] */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3094 if (cmd->cmd_res1_type == -1)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3095 argv = cmd->cmd_argv;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3096 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3097 argv = &(cmd->cmd_argv[1]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3098 while ((c = getopt(argc, argv, "a")) != EOF) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3099 switch (c) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3100 case 'a':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3101 all_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3102 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3103 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3104 command_usage(CMD_LIST);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3105 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3106 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3107 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3108 if (cmd->cmd_res1_type == -1)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3109 cmd->cmd_argv[0] = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3110 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3111
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3112 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3113 * Now, print objects and/or according to the flags set.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3114 * name, if requested, is in argv[0].
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3115 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3116 if (list_ncp) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3117 list_msg = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3118 if (list_props) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3119 ret = listprop(NWAM_OBJECT_TYPE_NCP, ncp_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3120 cmd->cmd_argv[0], all_props, NULL, -1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3121 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3122 ret = nwam_walk_ncps(list_ncp_callback, &list_msg, 0,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3123 NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3124 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3125 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3126 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3127 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3128
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3129 if (list_ncu) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3130 list_msg = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3131 if (ncp_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3132 nerr("NCP has not been read");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3133 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3134 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3135 if (list_props) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3136 nwam_ncu_class_t ncu_class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3137 nwam_ncu_type_t ncu_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3138
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3139 /* determine the NCU type first */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3140 if (ncu_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3141 ncu_class = (nwam_ncu_class_t)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3142 cmd->cmd_ncu_class_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3143 ncu_type = nwam_ncu_class_to_type(ncu_class);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3144 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3145 if ((ret = nwam_ncu_get_ncu_type(ncu_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3146 &ncu_type)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3147 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3148 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3149 ret = listprop(NWAM_OBJECT_TYPE_NCU, ncu_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3150 cmd->cmd_argv[0], all_props, ncp_h, ncu_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3151 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3152 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3153 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3154 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3155
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3156 if (list_loc) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3157 list_msg = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3158 if (list_props) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3159 ret = listprop(NWAM_OBJECT_TYPE_LOC, loc_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3160 cmd->cmd_argv[0], all_props, NULL, -1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3161 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3162 ret = nwam_walk_locs(list_loc_callback, &list_msg,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3163 NWAM_FLAG_ACTIVATION_MODE_ALL, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3164 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3165 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3166 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3167 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3168
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3169 if (list_enm) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3170 list_msg = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3171 if (list_props) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3172 ret = listprop(NWAM_OBJECT_TYPE_ENM, enm_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3173 cmd->cmd_argv[0], all_props, NULL, -1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3174 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3175 ret = nwam_walk_enms(list_enm_callback, &list_msg,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3176 NWAM_FLAG_ACTIVATION_MODE_ALL, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3177 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3178 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3179 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3180 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3181
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3182 if (list_wlan) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3183 list_msg = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3184 if (list_props) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3185 ret = listprop(NWAM_OBJECT_TYPE_KNOWN_WLAN, wlan_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3186 cmd->cmd_argv[0], all_props, NULL, -1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3187 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3188 ret = nwam_walk_known_wlans(list_wlan_callback,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3189 &list_msg, NWAM_FLAG_KNOWN_WLAN_WALK_PRIORITY_ORDER,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3190 NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3191 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3192 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3193 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3194 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3195
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3196 done:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3197 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3198 nwamerr(ret, "List error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3199 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3200
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3201 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3202 write_export_command(nwam_object_type_t object_type, const char *prop,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3203 nwam_value_t values, FILE *of)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3204 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3205 /* exclude read-only properties */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3206 if (is_prop_read_only(object_type, prop))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3207 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3208
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3209 (void) fprintf(of, "set ");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3210 output_propname(prop, values, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3211 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3212 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3213
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3214 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3215 export_ncu_callback(nwam_ncu_handle_t ncu, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3216 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3217 char *name;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3218 const char **props;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3219 nwam_ncu_type_t type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3220 nwam_ncu_class_t class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3221 nwam_value_t vals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3222 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3223 uint_t num;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3224 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3225 FILE *of = arg;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3226
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3227 assert(of != NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3228
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3229 /* get the NCU's type and class */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3230 if ((ret = nwam_ncu_get_ncu_type(ncu, &type)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3231 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3232 if ((ret = nwam_ncu_get_ncu_class(ncu, &class)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3233 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3234
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3235 if ((ret = nwam_ncu_get_name(ncu, &name)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3236 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3237
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3238 (void) fprintf(of, "create ncu %s \"%s\"\n",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3239 propval_to_str(NWAM_NCU_PROP_CLASS, class), name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3240 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3241 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3242 * Because of dependencies between properties, they have to be
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3243 * exported in the same order as when they are walked.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3244 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3245 if ((ret = nwam_ncu_get_default_proplist(type, class, &props, &num))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3246 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3247 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3248 for (i = 0; i < num; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3249 ret = nwam_ncu_get_prop_value(ncu, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3250 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3251 write_export_command(NWAM_OBJECT_TYPE_NCU, props[i],
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3252 vals, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3253 nwam_value_free(vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3254 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3255 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3256 (void) fprintf(of, "end\n");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3257
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3258 free(props);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3259 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3260 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3261
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3262 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3263 export_ncp_callback(nwam_ncp_handle_t ncp, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3264 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3265 char *name;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3266 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3267 FILE *of = arg;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3268
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3269 assert(of != NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3270
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3271 if ((ret = nwam_ncp_get_name(ncp, &name)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3272 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3273
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3274 /* Do not export "automatic" NCP */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3275 if (NWAM_NCP_AUTOMATIC(name)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3276 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3277 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3278 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3279
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3280 (void) fprintf(of, "create ncp \"%s\"\n", name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3281 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3282
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3283 /* now walk NCUs for this ncp */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3284 ret = nwam_ncp_walk_ncus(ncp, export_ncu_callback, of,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3285 NWAM_FLAG_NCU_TYPE_CLASS_ALL, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3286 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3287 nwamerr(ret, "Export ncp error: failed to walk ncus");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3288 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3289 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3290 (void) fprintf(of, "end\n");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3291 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3292 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3293
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3294 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3295 export_enm_callback(nwam_enm_handle_t enm, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3296 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3297 char *name;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3298 const char **props;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3299 nwam_value_t vals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3300 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3301 uint_t num;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3302 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3303 FILE *of = arg;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3304
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3305 assert(of != NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3306
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3307 if ((ret = nwam_enm_get_name(enm, &name)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3308 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3309
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3310 (void) fprintf(of, "create enm \"%s\"\n", name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3311 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3312 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3313 * Because of dependencies between properties, they have to be
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3314 * exported in the same order as when they are walked.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3315 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3316 if ((ret = nwam_enm_get_default_proplist(&props, &num)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3317 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3318 for (i = 0; i < num; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3319 ret = nwam_enm_get_prop_value(enm, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3320 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3321 write_export_command(NWAM_OBJECT_TYPE_ENM, props[i],
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3322 vals, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3323 nwam_value_free(vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3324 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3325 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3326 (void) fprintf(of, "end\n");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3327
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3328 free(props);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3329 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3330 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3331
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3332 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3333 export_loc_callback(nwam_loc_handle_t loc, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3334 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3335 char *name;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3336 const char **props;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3337 nwam_value_t vals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3338 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3339 uint_t num;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3340 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3341 FILE *of = arg;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3342
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3343 assert(of != NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3344
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3345 if ((ret = nwam_loc_get_name(loc, &name)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3346 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3347
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3348 /* Do not export Automatic, NoNet or Legacy locations */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3349 if (NWAM_LOC_NAME_PRE_DEFINED(name)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3350 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3351 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3352 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3353
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3354 (void) fprintf(of, "create loc \"%s\"\n", name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3355 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3356 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3357 * Because of dependencies between properties, they have to be
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3358 * exported in the same order as when they are walked.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3359 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3360 if ((ret = nwam_loc_get_default_proplist(&props, &num)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3361 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3362 for (i = 0; i < num; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3363 ret = nwam_loc_get_prop_value(loc, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3364 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3365 write_export_command(NWAM_OBJECT_TYPE_LOC, props[i],
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3366 vals, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3367 nwam_value_free(vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3368 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3369 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3370 (void) fprintf(of, "end\n");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3371
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3372 free(props);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3373 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3374 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3375
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3376 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3377 export_wlan_callback(nwam_known_wlan_handle_t wlan, void *arg)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3378 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3379 char *name;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3380 const char **props;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3381 nwam_value_t vals;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3382 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3383 uint_t num;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3384 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3385 FILE *of = arg;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3386
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3387 assert(of != NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3388
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3389 if ((ret = nwam_known_wlan_get_name(wlan, &name)) != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3390 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3391
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3392 (void) fprintf(of, "create wlan \"%s\"\n", name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3393 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3394 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3395 * Because of dependencies between properties, they have to be
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3396 * exported in the same order as when they are walked.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3397 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3398 if ((ret = nwam_known_wlan_get_default_proplist(&props, &num))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3399 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3400 return (ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3401 for (i = 0; i < num; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3402 ret = nwam_known_wlan_get_prop_value(wlan, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3403 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3404 write_export_command(NWAM_OBJECT_TYPE_KNOWN_WLAN,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3405 props[i], vals, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3406 nwam_value_free(vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3407 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3408 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3409 (void) fprintf(of, "end\n");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3410
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3411 free(props);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3412 return (0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3413 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3414
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3415 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3416 * Writes configuration to screen or file (with -f option).
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3417 * Writes a "destroy -a" if option -d is given.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3418 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3419 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3420 export_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3421 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3422 int c;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3423 boolean_t need_to_close = B_FALSE, write_to_file = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3424 boolean_t add_destroy = B_FALSE, lhandle = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3425 char filepath[MAXPATHLEN];
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3426 nwam_error_t ret = NWAM_SUCCESS;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3427 FILE *of = NULL; /* either filename or stdout */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3428
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3429 /* what to export */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3430 boolean_t export_ncp = B_FALSE, export_ncu = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3431 boolean_t export_loc = B_FALSE, export_enm = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3432 boolean_t export_wlan = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3433 char *name = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3434
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3435 /* check for -d and -f flags */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3436 filepath[0] = '\0';
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3437 optind = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3438 while ((c = getopt(cmd->cmd_argc, cmd->cmd_argv, "df:")) != EOF) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3439 switch (c) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3440 case 'f':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3441 write_to_file = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3442 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3443 case 'd':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3444 add_destroy = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3445 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3446 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3447 command_usage(CMD_EXPORT);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3448 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3449 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3450 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3451
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3452 /* determine where to export */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3453 if (!write_to_file) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3454 of = stdout;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3455 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3456 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3457 * If -d was specified with -f, then argv[2] is filename,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3458 * otherwise, argv[1] is filename.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3459 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3460 (void) strlcpy(filepath,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3461 (add_destroy ? cmd->cmd_argv[2] : cmd->cmd_argv[1]),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3462 sizeof (filepath));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3463 if ((of = fopen(filepath, "w")) == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3464 nerr(gettext("opening file '%s': %s"), filepath,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3465 strerror(errno));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3466 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3467 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3468 setbuf(of, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3469 need_to_close = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3470 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3471
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3472 if (add_destroy) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3473 /* only possible in global scope */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3474 if (current_scope == NWAM_SCOPE_GBL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3475 (void) fprintf(of, "destroy -a\n");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3476 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3477 nerr("Option -d is not allowed in non-global scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3478 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3479 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3480 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3481
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3482 /* In the following scopes, only the -f argument is valid */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3483 if (((current_scope == NWAM_SCOPE_LOC ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3484 current_scope == NWAM_SCOPE_ENM ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3485 current_scope == NWAM_SCOPE_WLAN ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3486 current_scope == NWAM_SCOPE_NCU) &&
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3487 cmd->cmd_argc != 0 && !write_to_file)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3488 nerr("'export' does not take arguments at this scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3489 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3490 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3491 if (current_scope == NWAM_SCOPE_NCP) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3492 if (cmd->cmd_res1_type == RT1_ENM ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3493 cmd->cmd_res1_type == RT1_LOC ||
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3494 cmd->cmd_res1_type == RT1_WLAN) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3495 nerr("only ncu can be exported at this scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3496 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3497 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3498 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3499
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3500 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3501 * Determine what objects to export depending on scope and command
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3502 * arguments. If -f is specified, then the object name is argv[2].
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3503 * Otherwise, argv[0] is name, unless exporting all in global
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3504 * scope in which case name is set back to NULL.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3505 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3506 switch (current_scope) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3507 case NWAM_SCOPE_GBL:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3508 name = (write_to_file ? trim_quotes(cmd->cmd_argv[2]) :
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3509 trim_quotes(cmd->cmd_argv[0]));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3510 switch (cmd->cmd_res1_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3511 case RT1_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3512 export_loc = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3513 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3514 case RT1_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3515 export_enm = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3516 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3517 case RT1_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3518 export_wlan = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3519 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3520 case RT1_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3521 export_ncp = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3522 if (cmd->cmd_res2_type == RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3523 nerr("cannot export ncu at from global scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3524 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3525 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3526 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3527 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3528 /* export everything */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3529 export_loc = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3530 export_enm = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3531 export_wlan = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3532 export_ncp = B_TRUE; /* NCP will export the NCUs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3533 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3534 name = NULL; /* exporting all, undo name */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3535 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3536 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3537 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3538 case NWAM_SCOPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3539 export_loc = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3540 ret = nwam_loc_get_name(loc_h, &name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3541 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3542 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3543 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3544 case NWAM_SCOPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3545 export_enm = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3546 ret = nwam_enm_get_name(enm_h, &name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3547 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3548 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3549 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3550 case NWAM_SCOPE_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3551 export_wlan = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3552 ret = nwam_known_wlan_get_name(wlan_h, &name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3553 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3554 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3555 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3556 case NWAM_SCOPE_NCP:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3557 if (cmd->cmd_res2_type == RT2_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3558 export_ncu = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3559 name = (write_to_file ? trim_quotes(cmd->cmd_argv[2]) :
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3560 trim_quotes(cmd->cmd_argv[0]));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3561 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3562 export_ncp = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3563 ret = nwam_ncp_get_name(ncp_h, &name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3564 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3565 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3566 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3567 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3568 case NWAM_SCOPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3569 export_ncu = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3570 ret = nwam_ncu_get_name(ncu_h, &name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3571 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3572 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3573 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3574 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3575 nerr("Invalid scope");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3576 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3577 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3578
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3579 /* Now, export objects according to the flags set */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3580 if (export_ncp) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3581 lhandle = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3582 if (name == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3583 /* export all NCPs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3584 ret = nwam_walk_ncps(export_ncp_callback, of, 0, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3585 } else if (NWAM_NCP_AUTOMATIC(name)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3586 nerr("'%s' ncp cannot be exported", name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3587 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3588 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3589 if (ncp_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3590 ret = nwam_ncp_read(name, 0, &ncp_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3591 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3592 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3593 lhandle = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3594 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3595 /* will export NCUs also */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3596 ret = export_ncp_callback(ncp_h, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3597 if (lhandle) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3598 nwam_ncp_free(ncp_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3599 ncp_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3600 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3601 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3602 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3603 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3604 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3605
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3606 if (export_ncu) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3607 if (name == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3608 /* export all NCUs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3609 ret = nwam_ncp_walk_ncus(ncp_h, export_ncu_callback, of,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3610 NWAM_FLAG_NCU_TYPE_CLASS_ALL, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3611 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3612 if (ncu_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3613 /* no NCU handle -> called from NCP scope */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3614 nwam_ncu_type_t ncu_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3615 nwam_ncu_class_t ncu_class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3616
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3617 ncu_class = (nwam_ncu_class_t)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3618 cmd->cmd_ncu_class_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3619 ncu_type = nwam_ncu_class_to_type(ncu_class);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3620 ret = nwam_ncu_read(ncp_h, name,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3621 ncu_type, 0, &ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3622 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3623 /* one NCU with given name */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3624 ret = export_ncu_callback(ncu_h, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3625 nwam_ncu_free(ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3626 ncu_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3627 } else if (ret == NWAM_ENTITY_MULTIPLE_VALUES) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3628 /* multiple NCUs with given name */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3629 ret = nwam_ncu_read(ncp_h, name,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3630 NWAM_NCU_TYPE_LINK, 0, &ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3631 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3632 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3633 ret = export_ncu_callback(ncu_h, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3634 nwam_ncu_free(ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3635 ncu_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3636
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3637 ret = nwam_ncu_read(ncp_h, name,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3638 NWAM_NCU_TYPE_INTERFACE, 0, &ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3639 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3640 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3641 ret = export_ncu_callback(ncu_h, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3642 nwam_ncu_free(ncu_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3643 ncu_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3644 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3645 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3646 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3647 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3648 /* NCU handle exists */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3649 ret = export_ncu_callback(ncu_h, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3650 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3651 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3652 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3653 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3654 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3655
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3656 if (export_loc) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3657 lhandle = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3658 if (name == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3659 /* export all locations */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3660 ret = nwam_walk_locs(export_loc_callback, of,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3661 NWAM_FLAG_ACTIVATION_MODE_ALL, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3662 } else if (NWAM_LOC_NAME_PRE_DEFINED(name)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3663 nerr("'%s' loc cannot be exported", name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3664 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3665 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3666 if (loc_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3667 ret = nwam_loc_read(name, 0, &loc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3668 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3669 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3670 lhandle = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3671 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3672 ret = export_loc_callback(loc_h, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3673 if (lhandle) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3674 nwam_loc_free(loc_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3675 loc_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3676 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3677 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3678 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3679 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3680 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3681
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3682 if (export_enm) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3683 lhandle = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3684 if (name == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3685 /* export all ENMs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3686 ret = nwam_walk_enms(export_enm_callback, of,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3687 NWAM_FLAG_ACTIVATION_MODE_ALL, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3688 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3689 if (enm_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3690 ret = nwam_enm_read(name, 0, &enm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3691 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3692 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3693 lhandle = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3694 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3695 ret = export_enm_callback(enm_h, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3696 if (lhandle) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3697 nwam_enm_free(enm_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3698 enm_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3699 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3700 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3701 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3702 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3703 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3704
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3705 if (export_wlan) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3706 lhandle = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3707 if (name == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3708 /* export all WLANs */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3709 ret = nwam_walk_known_wlans(export_wlan_callback, of,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3710 NWAM_FLAG_KNOWN_WLAN_WALK_PRIORITY_ORDER, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3711 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3712 if (wlan_h == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3713 ret = nwam_known_wlan_read(name, 0,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3714 &wlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3715 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3716 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3717 lhandle = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3718 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3719 ret = export_wlan_callback(wlan_h, of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3720 if (lhandle) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3721 nwam_known_wlan_free(wlan_h);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3722 wlan_h = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3723 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3724 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3725 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3726 goto fail;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3727 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3728
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3729 fail:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3730 free(name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3731 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3732 nwamerr(ret, "Export error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3733
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3734 done:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3735 if (need_to_close)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3736 (void) fclose(of);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3737 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3738
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3739 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3740 * Get property value. If the -V option is specified, only the value is
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3741 * printed without the property name.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3742 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3743 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3744 get_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3745 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3746 nwam_error_t ret = NWAM_SUCCESS;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3747 nwam_value_t prop_value;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3748 const char *prop;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3749 boolean_t value_only = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3750 nwam_object_type_t object_type = active_object_type();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3751
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3752 /* check if option is -V to print value only */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3753 if (cmd->cmd_argc == 1) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3754 int c;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3755
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3756 optind = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3757 while ((c = getopt(cmd->cmd_argc, cmd->cmd_argv, "V")) != EOF) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3758 switch (c) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3759 case 'V':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3760 value_only = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3761 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3762 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3763 command_usage(CMD_GET);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3764 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3765 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3766 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3767 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3768
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3769 /* property to get is in cmd->cmd_prop_type */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3770 if ((prop = pt_to_prop_name(object_type, cmd->cmd_prop_type)) == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3771 nerr("Get error: invalid %s property: '%s'",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3772 scope_to_str(current_scope), pt_to_str(cmd->cmd_prop_type));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3773 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3774 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3775
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3776 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3777 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3778 ret = nwam_ncu_get_prop_value(ncu_h, prop, &prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3779 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3780 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3781 ret = nwam_loc_get_prop_value(loc_h, prop, &prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3782 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3783 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3784 ret = nwam_enm_get_prop_value(enm_h, prop, &prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3785 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3786 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3787 ret = nwam_known_wlan_get_prop_value(wlan_h, prop, &prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3788 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3789 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3790
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3791 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3792 if (ret == NWAM_ENTITY_NOT_FOUND)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3793 nerr("Get error: property '%s' has not been set", prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3794 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3795 nwamerr(ret, "Get error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3796 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3797 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3798
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3799 if (value_only) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3800 output_prop_val(prop, prop_value, stdout, B_FALSE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3801 (void) printf("\n");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3802 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3803 output_propname(prop, prop_value, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3804 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3805 nwam_value_free(prop_value);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3806 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3807
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3808 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3809 * Clears value of a property.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3810 * Read-only properties cannot be cleared.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3811 * If clearing a property invalidates the object, then that property
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3812 * cannot be cleared.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3813 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3814 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3815 clear_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3816 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3817 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3818 const char *prop;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3819 nwam_object_type_t object_type = active_object_type();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3820
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3821 /* property to clear is in cmd->cmd_prop_type */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3822 if ((prop = pt_to_prop_name(object_type, cmd->cmd_prop_type)) == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3823 nerr("Clear error: invalid %s property: '%s'",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3824 scope_to_str(current_scope), pt_to_str(cmd->cmd_prop_type));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3825 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3826 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3827 if (is_prop_read_only(object_type, prop)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3828 nerr("Clear error: property '%s' is read-only", prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3829 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3830 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3831
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3832 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3833 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3834 ret = nwam_ncu_delete_prop(ncu_h, prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3835 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3836 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3837 ret = nwam_loc_delete_prop(loc_h, prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3838 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3839 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3840 ret = nwam_enm_delete_prop(enm_h, prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3841 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3842 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3843 ret = nwam_known_wlan_delete_prop(wlan_h, prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3844 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3845 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3846
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3847 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3848 if (ret == NWAM_INVALID_ARG || ret == NWAM_ENTITY_NOT_FOUND) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3849 nerr("Clear error: property '%s' has not been set",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3850 prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3851 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3852 nwamerr(ret, "Clear error");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3853 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3854 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3855 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3856
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3857 need_to_commit = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3858 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3859
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3860 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3861 * Prints all the choices available for an enum property [c1|c2|c3].
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3862 * Prints [true|false] for a boolean property.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3863 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3864 static void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3865 print_all_prop_choices(nwam_object_type_t object_type, const char *prop)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3866 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3867 uint64_t i = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3868 const char *str;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3869 boolean_t choices = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3870 nwam_value_type_t value_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3871 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3872
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3873 /* Special case: print object-specific options for activation-mode */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3874 if (strcmp(prop, NWAM_NCU_PROP_ACTIVATION_MODE) == 0) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3875 /* "manual" for all objects */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3876 (void) printf(" [%s|",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3877 propval_to_str(NWAM_NCU_PROP_ACTIVATION_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3878 NWAM_ACTIVATION_MODE_MANUAL));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3879 if (object_type == NWAM_OBJECT_TYPE_NCU) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3880 (void) printf("%s]",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3881 propval_to_str(NWAM_NCU_PROP_ACTIVATION_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3882 NWAM_ACTIVATION_MODE_PRIORITIZED));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3883 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3884 (void) printf("%s|%s]",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3885 propval_to_str(NWAM_NCU_PROP_ACTIVATION_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3886 NWAM_ACTIVATION_MODE_CONDITIONAL_ANY),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3887 propval_to_str(NWAM_NCU_PROP_ACTIVATION_MODE,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3888 NWAM_ACTIVATION_MODE_CONDITIONAL_ALL));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3889 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3890 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3891 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3892
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3893 /* Special case: only "manual" configsrc is allowed for LDAP */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3894 if (strcmp(prop, NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC) == 0) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3895 (void) printf(" [%s]",
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3896 propval_to_str(NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3897 NWAM_CONFIGSRC_MANUAL));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3898 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3899 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3900
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3901 value_type = prop_value_type(object_type, prop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3902 switch (value_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3903 case NWAM_VALUE_TYPE_UINT64:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3904 /* uint64 may be an enum, will print nothing if not an enum */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3905 while ((ret = nwam_uint64_get_value_string(prop, i++, &str))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3906 == NWAM_SUCCESS || ret == NWAM_ENTITY_INVALID_VALUE) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3907 /* No string representation for i, continue. */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3908 if (ret == NWAM_ENTITY_INVALID_VALUE)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3909 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3910
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3911 if (!choices)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3912 (void) printf("%s", " [");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3913 (void) printf("%s%s", choices ? "|" : "", str);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3914 choices = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3915 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3916 if (choices)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3917 (void) putchar(']');
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3918 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3919 case NWAM_VALUE_TYPE_BOOLEAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3920 (void) printf(" [%s|%s]", "true", "false");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3921 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3922 case NWAM_VALUE_TYPE_STRING:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3923 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3924 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3925 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3926
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3927 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3928 * Walk through object properties.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3929 * For newly-created object, the property name with no value is displayed, and
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3930 * the user can input a value for each property.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3931 * For existing object, the current value is displayed and user input overwrites
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3932 * the existing one. If no input is given, the existing value remains.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3933 * Read-only properties are not displayed.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3934 * Read-only objects cannot be walked.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3935 * If the -a option is specified, no properties are skipped.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3936 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3937 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3938 walkprop_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3939 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3940 nwam_error_t ret = NWAM_SUCCESS;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3941 nwam_value_t vals = NULL; /* freed in _wait_input() */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3942 int i;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3943 uint_t prop_num;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3944 const char **props;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3945 boolean_t read_only = B_FALSE, all_props = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3946
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3947 nwam_object_type_t object_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3948 prop_display_entry_t *prop_table;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3949
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3950 if (!interactive_mode) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3951 nerr("'walkprop' is only allowed in interactive mode");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3952 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3953 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3954
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3955 /* check if option -a is specified to show all properties */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3956 if (cmd->cmd_argc == 1) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3957 int c;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3958 optind = 0;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3959 while ((c = getopt(cmd->cmd_argc, cmd->cmd_argv, "a")) != EOF) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3960 switch (c) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3961 case 'a':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3962 all_props = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3963 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3964 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3965 command_usage(CMD_WALKPROP);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3966 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3967 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3968 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3969 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3970
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3971 /* read-only objects cannot be walked */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3972 if (obj1_type == RT1_NCP) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3973 /* must be in NCU scope, NCP scope doesn't get here */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3974 (void) nwam_ncu_get_read_only(ncu_h, &read_only);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3975 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3976 if (read_only) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3977 nerr("'walkprop' cannot be used in read-only objects");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3978 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3979 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3980
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3981 /* get the current object type and the prop_display_table */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3982 object_type = active_object_type();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3983 prop_table = get_prop_display_table(object_type);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3984
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3985 /* get the property list depending on the object type */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3986 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3987 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3988 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3989 nwam_ncu_type_t ncu_type;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3990 nwam_ncu_class_t ncu_class;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3991
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3992 if ((ret = nwam_ncu_get_ncu_type(ncu_h, &ncu_type))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3993 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3994 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3995 if ((ret = nwam_ncu_get_ncu_class(ncu_h, &ncu_class))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3996 != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3997 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3998
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
3999 ret = nwam_ncu_get_default_proplist(ncu_type, ncu_class, &props,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4000 &prop_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4001 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4002 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4003 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4004 ret = nwam_loc_get_default_proplist(&props, &prop_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4005 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4006 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4007 ret = nwam_enm_get_default_proplist(&props, &prop_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4008 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4009 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4010 ret = nwam_known_wlan_get_default_proplist(&props, &prop_num);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4011 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4012 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4013 if (ret != NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4014 nwamerr(ret, "Walkprop error: could not get property list");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4015 return;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4016 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4017
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4018 /* Loop through the properties */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4019 if (all_props)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4020 (void) printf(gettext("Walking all properties ...\n"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4021 for (i = 0; i < prop_num; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4022 char line[NWAM_MAX_VALUE_LEN];
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4023 char **checked = NULL;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4024
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4025 /* check if this property should be displayed */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4026 if (is_prop_read_only(object_type, props[i]))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4027 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4028 if (!all_props &&
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4029 !show_prop_test(object_type, props[i], prop_table,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4030 checked, 0))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4031 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4032
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4033 /* get the existing value for this property */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4034 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4035 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4036 ret = nwam_ncu_get_prop_value(ncu_h, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4037 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4038 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4039 ret = nwam_loc_get_prop_value(loc_h, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4040 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4041 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4042 ret = nwam_enm_get_prop_value(enm_h, props[i], &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4043 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4044 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4045 ret = nwam_known_wlan_get_prop_value(wlan_h, props[i],
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4046 &vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4047 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4048 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4049 /* returns NWAM_ENTITY_NOT_FOUND if no existing value */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4050 if (ret != NWAM_SUCCESS && ret != NWAM_ENTITY_NOT_FOUND)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4051 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4052
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4053 /* print property */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4054 (void) printf("%s", props[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4055 /* print the existing value(s) if they exist */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4056 if (ret == NWAM_SUCCESS) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4057 (void) printf(" (");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4058 output_prop_val(props[i], vals, stdout, B_TRUE);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4059 (void) putchar(')');
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4060 nwam_value_free(vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4061 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4062 /* print choices, won't print anything if there aren't any */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4063 print_all_prop_choices(object_type, props[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4064 (void) printf("> ");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4065
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4066 /* wait for user input */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4067 if (fgets(line, sizeof (line), stdin) == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4068 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4069
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4070 /* if user input new value, existing value is overrode */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4071 if (line[0] != '\n') {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4072 boolean_t is_listprop;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4073 int pt_type = prop_to_pt(object_type, props[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4074
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4075 is_listprop = is_prop_multivalued(object_type,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4076 props[i]);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4077 vals = str_to_nwam_value(object_type, line, pt_type,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4078 is_listprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4079 if (vals == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4080 ret = NWAM_ENTITY_INVALID_VALUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4081 goto repeat;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4082 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4083
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4084 /* set the new value for the property */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4085 switch (object_type) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4086 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4087 ret = nwam_ncu_set_prop_value(ncu_h, props[i],
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4088 vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4089 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4090 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4091 ret = nwam_loc_set_prop_value(loc_h, props[i],
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4092 vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4093 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4094 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4095 ret = nwam_enm_set_prop_value(enm_h, props[i],
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4096 vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4097 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4098 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4099 ret = nwam_known_wlan_set_prop_value(wlan_h,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4100 props[i], vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4101 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4102 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4103 nwam_value_free(vals);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4104
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4105 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4106 goto repeat;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4107
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4108 need_to_commit = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4109 continue;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4110
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4111 repeat:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4112 invalid_set_prop_msg(props[i], ret);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4113 i--; /* decrement i to repeat */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4114 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4115 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4116
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4117 free(props);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4118 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4119
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4120 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4121 * Verify whether all properties of a resource are valid.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4122 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4123 /* ARGSUSED */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4124 void
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4125 verify_func(cmd_t *cmd)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4126 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4127 nwam_error_t ret;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4128 const char *errprop;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4129
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4130 switch (active_object_type()) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4131 case NWAM_OBJECT_TYPE_NCU:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4132 ret = nwam_ncu_validate(ncu_h, &errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4133 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4134 case NWAM_OBJECT_TYPE_LOC:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4135 ret = nwam_loc_validate(loc_h, &errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4136 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4137 case NWAM_OBJECT_TYPE_ENM:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4138 ret = nwam_enm_validate(enm_h, &errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4139 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4140 case NWAM_OBJECT_TYPE_KNOWN_WLAN:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4141 ret = nwam_known_wlan_validate(wlan_h, &errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4142 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4143 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4144 if (ret != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4145 nwamerr(ret, "Verify error on property '%s'", errprop);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4146 else if (interactive_mode)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4147 (void) printf(gettext("All properties verified\n"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4148 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4149
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4150 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4151 * command-line mode (# nwamcfg list or # nwamcfg "select loc test; list")
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4152 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4153 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4154 one_command_at_a_time(int argc, char *argv[])
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4155 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4156 char *command;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4157 size_t len = 2; /* terminal \n\0 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4158 int i, err;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4159
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4160 for (i = 0; i < argc; i++)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4161 len += strlen(argv[i]) + 1;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4162 if ((command = malloc(len)) == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4163 nerr("Out of memory");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4164 return (NWAM_ERR);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4165 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4166 (void) strlcpy(command, argv[0], len);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4167 for (i = 1; i < argc; i++) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4168 (void) strlcat(command, " ", len);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4169 (void) strlcat(command, argv[i], len);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4170 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4171 (void) strlcat(command, "\n", len);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4172 err = string_to_yyin(command);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4173 free(command);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4174 if (err != NWAM_OK)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4175 return (err);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4176 while (!feof(yyin)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4177 yyparse();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4178
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4179 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4180 * If any command on a list of commands give an error,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4181 * don't continue with the remaining commands.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4182 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4183 if (saw_error || time_to_exit)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4184 return (cleanup());
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4185 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4186
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4187 /* if there are changes to commit, commit it */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4188 if (need_to_commit) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4189 do_commit();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4190 /* if need_to_commit is not set, then there was a error */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4191 if (need_to_commit)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4192 return (NWAM_ERR);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4193 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4194
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4195 if (!interactive_mode)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4196 return (cleanup());
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4197 else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4198 yyin = stdin;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4199 return (read_input());
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4200 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4201 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4202
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4203 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4204 * cmd_file is slightly more complicated, as it has to open the command file
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4205 * and set yyin appropriately. Once that is done, though, it just calls
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4206 * read_input(), and only once, since prompting is not possible.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4207 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4208 static int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4209 cmd_file(char *file)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4210 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4211 FILE *infile;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4212 int err;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4213 struct stat statbuf;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4214 boolean_t using_real_file = (strcmp(file, "-") != 0);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4215
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4216 if (using_real_file) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4217 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4218 * nerr() prints a line number in cmd_file_mode, which we do
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4219 * not want here, so temporarily unset it.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4220 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4221 cmd_file_mode = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4222 if ((infile = fopen(file, "r")) == NULL) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4223 nerr(gettext("could not open file '%s': %s"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4224 file, strerror(errno));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4225 return (1);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4226 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4227 if ((err = fstat(fileno(infile), &statbuf)) != 0) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4228 nerr(gettext("could not stat file '%s': %s"),
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4229 file, strerror(errno));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4230 err = 1;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4231 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4232 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4233 if (!S_ISREG(statbuf.st_mode)) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4234 nerr(gettext("'%s' is not a regular file."), file);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4235 err = 1;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4236 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4237 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4238
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4239 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4240 * If -d was passed on the command-line, we need to
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4241 * start by removing any existing configuration.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4242 * Alternatively, the file may begin with 'destroy -a';
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4243 * but in that case, the line will go through the lexer
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4244 * and be processed as it's encountered in the file.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4245 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4246 if (remove_all_configurations && destroy_all() != NWAM_SUCCESS)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4247 goto done;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4248
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4249 /* set up for lexer */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4250 yyin = infile;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4251 cmd_file_mode = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4252 ok_to_prompt = B_FALSE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4253 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4254 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4255 * "-f -" is essentially the same as interactive mode,
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4256 * so treat it that way.
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4257 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4258 interactive_mode = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4259 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4260 /* NWAM_REPEAT is for interactive mode; treat it like NWAM_ERR here. */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4261 if ((err = read_input()) == NWAM_REPEAT)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4262 err = NWAM_ERR;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4263 if (err == NWAM_OK)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4264 (void) printf(gettext("Configuration read.\n"));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4265
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4266 done:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4267 if (using_real_file)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4268 (void) fclose(infile);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4269 return (err);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4270 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4271
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4272 int
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4273 main(int argc, char *argv[])
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4274 {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4275 int err;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4276 char c;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4277
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4278 /* This must be before anything goes to stdout. */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4279 setbuf(stdout, NULL);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4280
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4281 if ((execname = strrchr(argv[0], '/')) == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4282 execname = argv[0];
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4283 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4284 execname++;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4285
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4286 (void) setlocale(LC_ALL, "");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4287 (void) textdomain(TEXT_DOMAIN);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4288
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4289 while ((c = getopt(argc, argv, "?hf:d")) != EOF) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4290 switch (c) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4291 case 'f':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4292 cmd_file_name = optarg;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4293 cmd_file_mode = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4294 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4295 case '?':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4296 case 'h':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4297 cmd_line_usage();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4298 return (NWAM_OK);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4299 case 'd':
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4300 remove_all_configurations = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4301 break;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4302 default:
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4303 cmd_line_usage();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4304 return (NWAM_ERR);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4305 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4306 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4307 /* -d can only be used with -f */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4308 if (remove_all_configurations && !cmd_file_mode) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4309 nerr("Option -d can only be used with -f");
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4310 return (NWAM_ERR);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4311 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4312
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4313 /*
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4314 * This may get set back to FALSE again in cmd_file() if cmd_file_name
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4315 * is a "real" file as opposed to "-" (i.e. meaning use stdin).
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4316 */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4317 if (isatty(STDIN_FILENO))
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4318 ok_to_prompt = B_TRUE;
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4319 if ((gl = new_GetLine(MAX_LINE_LEN, MAX_CMD_HIST)) == NULL)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4320 exit(NWAM_ERR);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4321 if (gl_customize_completion(gl, NULL, cmd_cpl_fn) != 0)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4322 exit(NWAM_ERR);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4323 (void) sigset(SIGINT, SIG_IGN);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4324
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4325 if (optind == argc) {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4326 /* interactive or command-file mode */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4327 if (!cmd_file_mode)
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4328 err = do_interactive();
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4329 else
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4330 err = cmd_file(cmd_file_name);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4331 } else {
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4332 /* command-line mode */
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4333 err = one_command_at_a_time(argc - optind, &(argv[optind]));
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4334 }
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4335 (void) del_GetLine(gl);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4336
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4337 return (err);
8f30d0e611c6 PSARC/2008/532 NWAM Phase 1
Anurag S. Maskey <Anurag.Maskey@Sun.COM>
parents:
diff changeset
4338 }