6 * Common Development and Distribution License (the "License").
7 * You may not use this file except in compliance with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22
23 /*
24 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
26 */
27
28 #include <stdio.h>
29 #include <sys/types.h>
30
31 #include "nwamcfg.h"
32
33 static cmd_t *cmd = NULL; /* Command being processed */
34
35 /* yacc externals */
36 extern int yydebug;
37 extern void yyerror(char *s);
38
39 extern boolean_t newline_terminated;
40
41 %}
42
43 %union {
44 int ival;
45 char *strval;
50
51 %token CANCEL CLEAR COMMIT CREATE DESTROY END EXIT EXPORT GET HELP
52 %token LIST REVERT SELECT SET VERIFY WALKPROP
53 %token LOC NCP NCU ENM WLAN
54 %token PHYS IP
55 %token TOKEN EQUAL OPTION
56 %token UNKNOWN ACTIVATION_MODE CONDITIONS ENABLED
57 %token TYPE CLASS PARENT PRIORITY_GROUP PRIORITY_MODE
58 %token LINK_MACADDR LINK_AUTOPUSH LINK_MTU
59 %token IP_VERSION IPV4_ADDRSRC IPV4_ADDR IPV4_DEFAULT_ROUTE
60 %token IPV6_ADDRSRC IPV6_ADDR IPV6_DEFAULT_ROUTE
61 %token ENM_STATE ENM_FMRI ENM_START ENM_STOP
62 %token LOC_NAMESERVICES LOC_NAMESERVICES_CONFIG
63 %token LOC_DNS_CONFIGSRC LOC_DNS_DOMAIN LOC_DNS_SERVERS LOC_DNS_SEARCH
64 %token LOC_NIS_CONFIGSRC LOC_NIS_SERVERS
65 %token LOC_LDAP_CONFIGSRC LOC_LDAP_SERVERS
66 %token LOC_DEFAULT_DOMAIN LOC_NFSV4_DOMAIN
67 %token LOC_IPF_CONFIG LOC_IPF_V6_CONFIG
68 %token LOC_IPNAT_CONFIG LOC_IPPOOL_CONFIG LOC_IKE_CONFIG LOC_IPSECPOL_CONFIG
69 %token WLAN_BSSIDS WLAN_PRIORITY WLAN_KEYNAME WLAN_KEYSLOT WLAN_SECURITY_MODE
70
71 %type <strval> TOKEN EQUAL OPTION
72 %type <ival> resource1_type LOC NCP ENM WLAN
73 %type <ival> resource2_type NCU
74 %type <ival> ncu_class_type PHYS IP
75 %type <ival> property_type UNKNOWN ACTIVATION_MODE CONDITIONS ENABLED
76 TYPE CLASS PARENT PRIORITY_GROUP PRIORITY_MODE
77 LINK_MACADDR LINK_AUTOPUSH LINK_MTU
78 IP_VERSION IPV4_ADDRSRC IPV4_ADDR IPV4_DEFAULT_ROUTE
79 IPV6_ADDRSRC IPV6_ADDR IPV6_DEFAULT_ROUTE
80 ENM_STATE ENM_FMRI ENM_START ENM_STOP
81 LOC_NAMESERVICES LOC_NAMESERVICES_CONFIG
82 LOC_DNS_CONFIGSRC LOC_DNS_DOMAIN LOC_DNS_SERVERS LOC_DNS_SEARCH
83 LOC_NIS_CONFIGSRC LOC_NIS_SERVERS
84 LOC_LDAP_CONFIGSRC LOC_LDAP_SERVERS
85 LOC_DEFAULT_DOMAIN LOC_NFSV4_DOMAIN
86 LOC_IPF_CONFIG LOC_IPF_V6_CONFIG
87 LOC_IPNAT_CONFIG LOC_IPPOOL_CONFIG LOC_IKE_CONFIG LOC_IPSECPOL_CONFIG
88 WLAN_BSSIDS WLAN_PRIORITY WLAN_KEYNAME WLAN_KEYSLOT WLAN_SECURITY_MODE
89 %type <cmd> command
90 %type <cmd> cancel_command CANCEL
91 %type <cmd> clear_command CLEAR
92 %type <cmd> commit_command COMMIT
93 %type <cmd> create_command CREATE
94 %type <cmd> destroy_command DESTROY
95 %type <cmd> end_command END
96 %type <cmd> exit_command EXIT
97 %type <cmd> export_command EXPORT
98 %type <cmd> get_command GET
99 %type <cmd> help_command HELP
100 %type <cmd> list_command LIST
101 %type <cmd> revert_command REVERT
102 %type <cmd> select_command SELECT
103 %type <cmd> set_command SET
104 %type <cmd> verify_command VERIFY
105 %type <cmd> walkprop_command WALKPROP
106 %type <cmd> terminator
107
108 %%
600 YYERROR;
601 }
602 | LIST OPTION
603 {
604 /* list -a */
605 if (($$ = alloc_cmd()) == NULL)
606 YYERROR;
607 cmd = $$;
608 $$->cmd_num = CMD_LIST;
609 $$->cmd_handler = &list_func;
610 $$->cmd_res1_type = -1; /* special value */
611 $$->cmd_argc = 1;
612 $$->cmd_argv[0] = $2;
613 $$->cmd_argv[1] = NULL;
614 }
615 | LIST resource1_type
616 {
617 command_usage(CMD_LIST);
618 YYERROR;
619 }
620 | LIST resource2_type
621 {
622 command_usage(CMD_LIST);
623 YYERROR;
624 }
625 | LIST resource1_type TOKEN
626 {
627 /* list enm/loc/ncp test */
628 if (($$ = alloc_cmd()) == NULL)
629 YYERROR;
630 cmd = $$;
631 $$->cmd_num = CMD_LIST;
632 $$->cmd_handler = &list_func;
633 $$->cmd_res1_type = $2;
634 $$->cmd_argc = 1;
635 $$->cmd_argv[0] = $3;
636 $$->cmd_argv[1] = NULL;
637 }
638 | LIST resource2_type TOKEN
639 {
640 /* list ncu test (all ncu's named test) */
641 if (($$ = alloc_cmd()) == NULL)
642 YYERROR;
643 cmd = $$;
644 $$->cmd_num = CMD_LIST;
726 select_command: SELECT
727 {
728 command_usage(CMD_SELECT);
729 YYERROR;
730 }
731 | SELECT TOKEN
732 {
733 command_usage(CMD_SELECT);
734 YYERROR;
735 }
736 | SELECT resource1_type
737 {
738 command_usage(CMD_SELECT);
739 YYERROR;
740 }
741 | SELECT resource2_type
742 {
743 command_usage(CMD_SELECT);
744 YYERROR;
745 }
746 | SELECT resource1_type TOKEN
747 {
748 /* select enm/loc/ncp test */
749 if (($$ = alloc_cmd()) == NULL)
750 YYERROR;
751 cmd = $$;
752 $$->cmd_num = CMD_SELECT;
753 $$->cmd_handler = &select_func;
754 $$->cmd_res1_type = $2;
755 $$->cmd_argc = 1;
756 $$->cmd_argv[0] = $3;
757 $$->cmd_argv[1] = NULL;
758 }
759 | SELECT resource2_type TOKEN
760 {
761 /* select ncu test (class inferred) */
762 if (($$ = alloc_cmd()) == NULL)
763 YYERROR;
764 cmd = $$;
765 $$->cmd_num = CMD_SELECT;
883 | LOC_DNS_DOMAIN { $$ = PT_LOC_DNS_DOMAIN; }
884 | LOC_DNS_SERVERS { $$ = PT_LOC_DNS_SERVERS; }
885 | LOC_DNS_SEARCH { $$ = PT_LOC_DNS_SEARCH; }
886 | LOC_NIS_CONFIGSRC { $$ = PT_LOC_NIS_CONFIGSRC; }
887 | LOC_NIS_SERVERS { $$ = PT_LOC_NIS_SERVERS; }
888 | LOC_LDAP_CONFIGSRC { $$ = PT_LOC_LDAP_CONFIGSRC; }
889 | LOC_LDAP_SERVERS { $$ = PT_LOC_LDAP_SERVERS; }
890 | LOC_DEFAULT_DOMAIN { $$ = PT_LOC_DEFAULT_DOMAIN; }
891 | LOC_NFSV4_DOMAIN { $$ = PT_LOC_NFSV4_DOMAIN; }
892 | LOC_IPF_CONFIG { $$ = PT_LOC_IPF_CONFIG; }
893 | LOC_IPF_V6_CONFIG { $$ = PT_LOC_IPF_V6_CONFIG; }
894 | LOC_IPNAT_CONFIG { $$ = PT_LOC_IPNAT_CONFIG; }
895 | LOC_IPPOOL_CONFIG { $$ = PT_LOC_IPPOOL_CONFIG; }
896 | LOC_IKE_CONFIG { $$ = PT_LOC_IKE_CONFIG; }
897 | LOC_IPSECPOL_CONFIG { $$ = PT_LOC_IPSECPOL_CONFIG; }
898 | WLAN_BSSIDS { $$ = PT_WLAN_BSSIDS; }
899 | WLAN_PRIORITY { $$ = PT_WLAN_PRIORITY; }
900 | WLAN_KEYNAME { $$ = PT_WLAN_KEYNAME; }
901 | WLAN_KEYSLOT { $$ = PT_WLAN_KEYSLOT; }
902 | WLAN_SECURITY_MODE { $$ = PT_WLAN_SECURITY_MODE; }
903
904 %%
|
6 * Common Development and Distribution License (the "License").
7 * You may not use this file except in compliance with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22
23 /*
24 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
26 * Copyright (c) 2016, Chris Fraire <cfraire@me.com>.
27 */
28
29 #include <stdio.h>
30 #include <sys/types.h>
31
32 #include "nwamcfg.h"
33
34 static cmd_t *cmd = NULL; /* Command being processed */
35
36 /* yacc externals */
37 extern int yydebug;
38 extern void yyerror(char *s);
39
40 extern boolean_t newline_terminated;
41
42 %}
43
44 %union {
45 int ival;
46 char *strval;
51
52 %token CANCEL CLEAR COMMIT CREATE DESTROY END EXIT EXPORT GET HELP
53 %token LIST REVERT SELECT SET VERIFY WALKPROP
54 %token LOC NCP NCU ENM WLAN
55 %token PHYS IP
56 %token TOKEN EQUAL OPTION
57 %token UNKNOWN ACTIVATION_MODE CONDITIONS ENABLED
58 %token TYPE CLASS PARENT PRIORITY_GROUP PRIORITY_MODE
59 %token LINK_MACADDR LINK_AUTOPUSH LINK_MTU
60 %token IP_VERSION IPV4_ADDRSRC IPV4_ADDR IPV4_DEFAULT_ROUTE
61 %token IPV6_ADDRSRC IPV6_ADDR IPV6_DEFAULT_ROUTE
62 %token ENM_STATE ENM_FMRI ENM_START ENM_STOP
63 %token LOC_NAMESERVICES LOC_NAMESERVICES_CONFIG
64 %token LOC_DNS_CONFIGSRC LOC_DNS_DOMAIN LOC_DNS_SERVERS LOC_DNS_SEARCH
65 %token LOC_NIS_CONFIGSRC LOC_NIS_SERVERS
66 %token LOC_LDAP_CONFIGSRC LOC_LDAP_SERVERS
67 %token LOC_DEFAULT_DOMAIN LOC_NFSV4_DOMAIN
68 %token LOC_IPF_CONFIG LOC_IPF_V6_CONFIG
69 %token LOC_IPNAT_CONFIG LOC_IPPOOL_CONFIG LOC_IKE_CONFIG LOC_IPSECPOL_CONFIG
70 %token WLAN_BSSIDS WLAN_PRIORITY WLAN_KEYNAME WLAN_KEYSLOT WLAN_SECURITY_MODE
71 %token IP_PRIMARY IP_REQHOST
72
73 %type <strval> TOKEN EQUAL OPTION
74 %type <ival> resource1_type LOC NCP ENM WLAN
75 %type <ival> resource2_type NCU
76 %type <ival> ncu_class_type PHYS IP
77 %type <ival> property_type UNKNOWN ACTIVATION_MODE CONDITIONS ENABLED
78 TYPE CLASS PARENT PRIORITY_GROUP PRIORITY_MODE
79 LINK_MACADDR LINK_AUTOPUSH LINK_MTU
80 IP_VERSION IPV4_ADDRSRC IPV4_ADDR IPV4_DEFAULT_ROUTE
81 IPV6_ADDRSRC IPV6_ADDR IPV6_DEFAULT_ROUTE
82 ENM_STATE ENM_FMRI ENM_START ENM_STOP
83 LOC_NAMESERVICES LOC_NAMESERVICES_CONFIG
84 LOC_DNS_CONFIGSRC LOC_DNS_DOMAIN LOC_DNS_SERVERS LOC_DNS_SEARCH
85 LOC_NIS_CONFIGSRC LOC_NIS_SERVERS
86 LOC_LDAP_CONFIGSRC LOC_LDAP_SERVERS
87 LOC_DEFAULT_DOMAIN LOC_NFSV4_DOMAIN
88 LOC_IPF_CONFIG LOC_IPF_V6_CONFIG
89 LOC_IPNAT_CONFIG LOC_IPPOOL_CONFIG LOC_IKE_CONFIG LOC_IPSECPOL_CONFIG
90 WLAN_BSSIDS WLAN_PRIORITY WLAN_KEYNAME WLAN_KEYSLOT WLAN_SECURITY_MODE
91 IP_PRIMARY IP_REQHOST
92 %type <cmd> command
93 %type <cmd> cancel_command CANCEL
94 %type <cmd> clear_command CLEAR
95 %type <cmd> commit_command COMMIT
96 %type <cmd> create_command CREATE
97 %type <cmd> destroy_command DESTROY
98 %type <cmd> end_command END
99 %type <cmd> exit_command EXIT
100 %type <cmd> export_command EXPORT
101 %type <cmd> get_command GET
102 %type <cmd> help_command HELP
103 %type <cmd> list_command LIST
104 %type <cmd> revert_command REVERT
105 %type <cmd> select_command SELECT
106 %type <cmd> set_command SET
107 %type <cmd> verify_command VERIFY
108 %type <cmd> walkprop_command WALKPROP
109 %type <cmd> terminator
110
111 %%
603 YYERROR;
604 }
605 | LIST OPTION
606 {
607 /* list -a */
608 if (($$ = alloc_cmd()) == NULL)
609 YYERROR;
610 cmd = $$;
611 $$->cmd_num = CMD_LIST;
612 $$->cmd_handler = &list_func;
613 $$->cmd_res1_type = -1; /* special value */
614 $$->cmd_argc = 1;
615 $$->cmd_argv[0] = $2;
616 $$->cmd_argv[1] = NULL;
617 }
618 | LIST resource1_type
619 {
620 command_usage(CMD_LIST);
621 YYERROR;
622 }
623 | LIST OPTION resource1_type
624 {
625 command_usage(CMD_LIST);
626 YYERROR;
627 }
628 | LIST resource2_type
629 {
630 command_usage(CMD_LIST);
631 YYERROR;
632 }
633 | LIST OPTION resource2_type
634 {
635 command_usage(CMD_LIST);
636 YYERROR;
637 }
638 | LIST OPTION resource2_type ncu_class_type
639 {
640 command_usage(CMD_LIST);
641 YYERROR;
642 }
643 | LIST resource1_type TOKEN
644 {
645 /* list enm/loc/ncp test */
646 if (($$ = alloc_cmd()) == NULL)
647 YYERROR;
648 cmd = $$;
649 $$->cmd_num = CMD_LIST;
650 $$->cmd_handler = &list_func;
651 $$->cmd_res1_type = $2;
652 $$->cmd_argc = 1;
653 $$->cmd_argv[0] = $3;
654 $$->cmd_argv[1] = NULL;
655 }
656 | LIST resource2_type TOKEN
657 {
658 /* list ncu test (all ncu's named test) */
659 if (($$ = alloc_cmd()) == NULL)
660 YYERROR;
661 cmd = $$;
662 $$->cmd_num = CMD_LIST;
744 select_command: SELECT
745 {
746 command_usage(CMD_SELECT);
747 YYERROR;
748 }
749 | SELECT TOKEN
750 {
751 command_usage(CMD_SELECT);
752 YYERROR;
753 }
754 | SELECT resource1_type
755 {
756 command_usage(CMD_SELECT);
757 YYERROR;
758 }
759 | SELECT resource2_type
760 {
761 command_usage(CMD_SELECT);
762 YYERROR;
763 }
764 | SELECT resource2_type ncu_class_type
765 {
766 command_usage(CMD_SELECT);
767 YYERROR;
768 }
769 | SELECT resource1_type TOKEN
770 {
771 /* select enm/loc/ncp test */
772 if (($$ = alloc_cmd()) == NULL)
773 YYERROR;
774 cmd = $$;
775 $$->cmd_num = CMD_SELECT;
776 $$->cmd_handler = &select_func;
777 $$->cmd_res1_type = $2;
778 $$->cmd_argc = 1;
779 $$->cmd_argv[0] = $3;
780 $$->cmd_argv[1] = NULL;
781 }
782 | SELECT resource2_type TOKEN
783 {
784 /* select ncu test (class inferred) */
785 if (($$ = alloc_cmd()) == NULL)
786 YYERROR;
787 cmd = $$;
788 $$->cmd_num = CMD_SELECT;
906 | LOC_DNS_DOMAIN { $$ = PT_LOC_DNS_DOMAIN; }
907 | LOC_DNS_SERVERS { $$ = PT_LOC_DNS_SERVERS; }
908 | LOC_DNS_SEARCH { $$ = PT_LOC_DNS_SEARCH; }
909 | LOC_NIS_CONFIGSRC { $$ = PT_LOC_NIS_CONFIGSRC; }
910 | LOC_NIS_SERVERS { $$ = PT_LOC_NIS_SERVERS; }
911 | LOC_LDAP_CONFIGSRC { $$ = PT_LOC_LDAP_CONFIGSRC; }
912 | LOC_LDAP_SERVERS { $$ = PT_LOC_LDAP_SERVERS; }
913 | LOC_DEFAULT_DOMAIN { $$ = PT_LOC_DEFAULT_DOMAIN; }
914 | LOC_NFSV4_DOMAIN { $$ = PT_LOC_NFSV4_DOMAIN; }
915 | LOC_IPF_CONFIG { $$ = PT_LOC_IPF_CONFIG; }
916 | LOC_IPF_V6_CONFIG { $$ = PT_LOC_IPF_V6_CONFIG; }
917 | LOC_IPNAT_CONFIG { $$ = PT_LOC_IPNAT_CONFIG; }
918 | LOC_IPPOOL_CONFIG { $$ = PT_LOC_IPPOOL_CONFIG; }
919 | LOC_IKE_CONFIG { $$ = PT_LOC_IKE_CONFIG; }
920 | LOC_IPSECPOL_CONFIG { $$ = PT_LOC_IPSECPOL_CONFIG; }
921 | WLAN_BSSIDS { $$ = PT_WLAN_BSSIDS; }
922 | WLAN_PRIORITY { $$ = PT_WLAN_PRIORITY; }
923 | WLAN_KEYNAME { $$ = PT_WLAN_KEYNAME; }
924 | WLAN_KEYSLOT { $$ = PT_WLAN_KEYSLOT; }
925 | WLAN_SECURITY_MODE { $$ = PT_WLAN_SECURITY_MODE; }
926 | IP_PRIMARY { $$ = PT_IP_PRIMARY; }
927 | IP_REQHOST { $$ = PT_IP_REQHOST; }
928
929 %%
|