Mercurial > illumos > illumos-gate
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 |
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 } |