1 %{ 2 /* 3 * CDDL HEADER START 4 * 5 * The contents of this file are subject to the terms of the 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; 47 cmd_t *cmd; 48 } 49 50 %start commands 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 %% 112 113 commands: command terminator 114 { 115 if ($1 != NULL) { 116 if ($1->cmd_handler != NULL) 117 if (check_scope($1->cmd_num)) 118 $1->cmd_handler($1); 119 free_cmd($1); 120 } 121 return (0); 122 } 123 | command error terminator 124 { 125 if ($1 != NULL) 126 free_cmd($1); 127 if (YYRECOVERING()) 128 YYABORT; 129 yyclearin; 130 yyerrok; 131 } 132 | error terminator 133 { 134 if (YYRECOVERING()) 135 YYABORT; 136 yyclearin; 137 yyerrok; 138 } 139 | terminator 140 { 141 return (0); 142 } 143 144 command: cancel_command 145 | clear_command 146 | commit_command 147 | create_command 148 | destroy_command 149 | end_command 150 | exit_command 151 | export_command 152 | get_command 153 | help_command 154 | list_command 155 | revert_command 156 | select_command 157 | set_command 158 | verify_command 159 | walkprop_command 160 161 terminator: '\n' { newline_terminated = B_TRUE; } 162 | ';' { newline_terminated = B_FALSE; } 163 164 cancel_command: CANCEL 165 { 166 if (($$ = alloc_cmd()) == NULL) 167 YYERROR; 168 cmd = $$; 169 $$->cmd_num = CMD_CANCEL; 170 $$->cmd_handler = &cancel_func; 171 $$->cmd_argc = 0; 172 $$->cmd_argv[0] = NULL; 173 } 174 175 clear_command: CLEAR 176 { 177 command_usage(CMD_CLEAR); 178 YYERROR; 179 } 180 | CLEAR TOKEN 181 { 182 properr($2); 183 YYERROR; 184 } 185 | CLEAR property_type 186 { 187 /* clear prop */ 188 if (($$ = alloc_cmd()) == NULL) 189 YYERROR; 190 cmd = $$; 191 $$->cmd_num = CMD_CLEAR; 192 $$->cmd_handler = &clear_func; 193 $$->cmd_prop_type = $2; 194 $$->cmd_argc = 0; 195 $$->cmd_argv[0] = NULL; 196 } 197 198 commit_command: COMMIT 199 { 200 if (($$ = alloc_cmd()) == NULL) 201 YYERROR; 202 cmd = $$; 203 $$->cmd_num = CMD_COMMIT; 204 $$->cmd_handler = &commit_func; 205 $$->cmd_argc = 0; 206 $$->cmd_argv[0] = NULL; 207 } 208 209 create_command: CREATE 210 { 211 command_usage(CMD_CREATE); 212 YYERROR; 213 } 214 | CREATE TOKEN 215 { 216 command_usage(CMD_CREATE); 217 YYERROR; 218 } 219 | CREATE resource1_type 220 { 221 command_usage(CMD_CREATE); 222 YYERROR; 223 } 224 | CREATE resource2_type 225 { 226 command_usage(CMD_CREATE); 227 YYERROR; 228 } 229 | CREATE resource1_type TOKEN 230 { 231 /* create enm/loc/ncp test */ 232 if (($$ = alloc_cmd()) == NULL) 233 YYERROR; 234 cmd = $$; 235 $$->cmd_num = CMD_CREATE; 236 $$->cmd_handler = &create_func; 237 $$->cmd_res1_type = $2; 238 $$->cmd_argc = 1; 239 $$->cmd_argv[0] = $3; 240 $$->cmd_argv[1] = NULL; 241 } 242 | CREATE resource2_type ncu_class_type TOKEN 243 { 244 /* create ncu ip/phys test */ 245 if (($$ = alloc_cmd()) == NULL) 246 YYERROR; 247 cmd = $$; 248 $$->cmd_num = CMD_CREATE; 249 $$->cmd_handler = &create_func; 250 $$->cmd_res1_type = RT1_NCP; 251 $$->cmd_res2_type = $2; 252 $$->cmd_ncu_class_type = $3; 253 $$->cmd_argc = 1; 254 $$->cmd_argv[0] = $4; 255 $$->cmd_argv[1] = NULL; 256 } 257 | CREATE OPTION TOKEN resource1_type TOKEN 258 { 259 /* create -t old enm/loc/ncp test */ 260 if (($$ = alloc_cmd()) == NULL) 261 YYERROR; 262 cmd = $$; 263 $$->cmd_num = CMD_CREATE; 264 $$->cmd_handler = &create_func; 265 $$->cmd_res1_type = $4; 266 $$->cmd_argc = 3; 267 $$->cmd_argv[0] = $2; 268 $$->cmd_argv[1] = $3; 269 $$->cmd_argv[2] = $5; 270 $$->cmd_argv[3] = NULL; 271 } 272 | CREATE OPTION TOKEN resource2_type ncu_class_type TOKEN 273 { 274 /* create -t old ncu ip/phys test */ 275 if (($$ = alloc_cmd()) == NULL) 276 YYERROR; 277 cmd = $$; 278 $$->cmd_num = CMD_CREATE; 279 $$->cmd_handler = &create_func; 280 $$->cmd_res1_type = RT1_NCP; 281 $$->cmd_res2_type = $4; 282 $$->cmd_ncu_class_type = $5; 283 $$->cmd_argc = 3; 284 $$->cmd_argv[0] = $2; 285 $$->cmd_argv[1] = $3; 286 $$->cmd_argv[2] = $6; 287 $$->cmd_argv[3] = NULL; 288 } 289 290 destroy_command: DESTROY 291 { 292 command_usage(CMD_DESTROY); 293 YYERROR; 294 } 295 | DESTROY OPTION 296 { 297 /* destroy -a */ 298 if (($$ = alloc_cmd()) == NULL) 299 YYERROR; 300 cmd = $$; 301 $$->cmd_num = CMD_DESTROY; 302 $$->cmd_handler = &destroy_func; 303 $$->cmd_res1_type = -1; /* special value */ 304 $$->cmd_argc = 1; 305 $$->cmd_argv[0] = $2; 306 $$->cmd_argv[1] = NULL; 307 } 308 | DESTROY resource1_type 309 { 310 command_usage(CMD_DESTROY); 311 YYERROR; 312 } 313 | DESTROY resource2_type 314 { 315 command_usage(CMD_DESTROY); 316 YYERROR; 317 } 318 | DESTROY resource1_type TOKEN 319 { 320 /* destroy enm/loc/ncp test */ 321 if (($$ = alloc_cmd()) == NULL) 322 YYERROR; 323 cmd = $$; 324 $$->cmd_num = CMD_DESTROY; 325 $$->cmd_handler = &destroy_func; 326 $$->cmd_res1_type = $2; 327 $$->cmd_argc = 1; 328 $$->cmd_argv[0] = $3; 329 $$->cmd_argv[1] = NULL; 330 } 331 | DESTROY resource2_type TOKEN 332 { 333 /* destroy ncu test (class inferred) */ 334 if (($$ = alloc_cmd()) == NULL) 335 YYERROR; 336 cmd = $$; 337 $$->cmd_num = CMD_DESTROY; 338 $$->cmd_handler = &destroy_func; 339 $$->cmd_res1_type = RT1_NCP; 340 $$->cmd_res2_type = $2; 341 $$->cmd_ncu_class_type = NCU_CLASS_ANY; 342 $$->cmd_argc = 1; 343 $$->cmd_argv[0] = $3; 344 $$->cmd_argv[1] = NULL; 345 } 346 | DESTROY resource2_type ncu_class_type TOKEN 347 { 348 /* destroy ncu ip/phys test */ 349 if (($$ = alloc_cmd()) == NULL) 350 YYERROR; 351 cmd = $$; 352 $$->cmd_num = CMD_DESTROY; 353 $$->cmd_handler = &destroy_func; 354 $$->cmd_res1_type = RT1_NCP; 355 $$->cmd_res2_type = $2; 356 $$->cmd_ncu_class_type = $3; 357 $$->cmd_argc = 1; 358 $$->cmd_argv[0] = $4; 359 $$->cmd_argv[1] = NULL; 360 } 361 362 end_command: END 363 { 364 if (($$ = alloc_cmd()) == NULL) 365 YYERROR; 366 cmd = $$; 367 $$->cmd_num = CMD_END; 368 $$->cmd_handler = &end_func; 369 $$->cmd_argc = 0; 370 $$->cmd_argv[0] = NULL; 371 } 372 373 exit_command: EXIT 374 { 375 if (($$ = alloc_cmd()) == NULL) 376 YYERROR; 377 cmd = $$; 378 $$->cmd_num = CMD_EXIT; 379 $$->cmd_handler = &exit_func; 380 $$->cmd_argc = 0; 381 $$->cmd_argv[0] = NULL; 382 } 383 384 export_command: EXPORT 385 { 386 if (($$ = alloc_cmd()) == NULL) 387 YYERROR; 388 cmd = $$; 389 $$->cmd_num = CMD_EXPORT; 390 $$->cmd_handler = &export_func; 391 $$->cmd_argc = 0; 392 $$->cmd_argv[0] = NULL; 393 } 394 | EXPORT TOKEN 395 { 396 command_usage(CMD_EXPORT); 397 YYERROR; 398 } 399 | EXPORT OPTION 400 { 401 /* export -d */ 402 if (($$ = alloc_cmd()) == NULL) 403 YYERROR; 404 cmd = $$; 405 $$->cmd_num = CMD_EXPORT; 406 $$->cmd_handler = &export_func; 407 $$->cmd_argc = 1; 408 $$->cmd_argv[0] = $2; 409 $$->cmd_argv[1] = NULL; 410 } 411 | EXPORT OPTION TOKEN 412 { 413 /* export -f file */ 414 if (($$ = alloc_cmd()) == NULL) 415 YYERROR; 416 cmd = $$; 417 $$->cmd_num = CMD_EXPORT; 418 $$->cmd_handler = &export_func; 419 $$->cmd_argc = 2; 420 $$->cmd_argv[0] = $2; 421 $$->cmd_argv[1] = $3; 422 $$->cmd_argv[2] = NULL; 423 } 424 | EXPORT OPTION OPTION TOKEN 425 { 426 /* export -d -f file */ 427 if (($$ = alloc_cmd()) == NULL) 428 YYERROR; 429 cmd = $$; 430 $$->cmd_num = CMD_EXPORT; 431 $$->cmd_handler = &export_func; 432 $$->cmd_argc = 3; 433 $$->cmd_argv[0] = $2; 434 $$->cmd_argv[1] = $3; 435 $$->cmd_argv[2] = $4; 436 $$->cmd_argv[3] = NULL; 437 } 438 | EXPORT resource1_type TOKEN 439 { 440 /* export enm/loc/ncp test */ 441 if (($$ = alloc_cmd()) == NULL) 442 YYERROR; 443 cmd = $$; 444 $$->cmd_num = CMD_EXPORT; 445 $$->cmd_handler = &export_func; 446 $$->cmd_res1_type = $2; 447 $$->cmd_argc = 1; 448 $$->cmd_argv[0] = $3; 449 $$->cmd_argv[1] = NULL; 450 } 451 | EXPORT resource2_type TOKEN 452 { 453 /* export ncu test (all ncu's named test) */ 454 if (($$ = alloc_cmd()) == NULL) 455 YYERROR; 456 cmd = $$; 457 $$->cmd_num = CMD_EXPORT; 458 $$->cmd_handler = &export_func; 459 $$->cmd_res1_type = RT1_NCP; 460 $$->cmd_res2_type = $2; 461 $$->cmd_ncu_class_type = NCU_CLASS_ANY; 462 $$->cmd_argc = 1; 463 $$->cmd_argv[0] = $3; 464 $$->cmd_argv[1] = NULL; 465 } 466 | EXPORT resource2_type ncu_class_type TOKEN 467 { 468 /* export ncu ip/phys test */ 469 if (($$ = alloc_cmd()) == NULL) 470 YYERROR; 471 cmd = $$; 472 $$->cmd_num = CMD_EXPORT; 473 $$->cmd_handler = &export_func; 474 $$->cmd_res1_type = RT1_NCP; 475 $$->cmd_res2_type = $2; 476 $$->cmd_ncu_class_type = $3; 477 $$->cmd_argc = 1; 478 $$->cmd_argv[0] = $4; 479 $$->cmd_argv[1] = NULL; 480 } 481 | EXPORT OPTION TOKEN resource1_type TOKEN 482 { 483 /* export -f file enm/loc/ncp test */ 484 if (($$ = alloc_cmd()) == NULL) 485 YYERROR; 486 cmd = $$; 487 $$->cmd_num = CMD_EXPORT; 488 $$->cmd_handler = &export_func; 489 $$->cmd_res1_type = $4; 490 $$->cmd_argc = 3; 491 $$->cmd_argv[0] = $2; 492 $$->cmd_argv[1] = $3; 493 $$->cmd_argv[2] = $5; 494 $$->cmd_argv[3] = NULL; 495 } 496 | EXPORT OPTION TOKEN resource2_type TOKEN 497 { 498 /* export -f file ncu test (all ncu's named test) */ 499 if (($$ = alloc_cmd()) == NULL) 500 YYERROR; 501 cmd = $$; 502 $$->cmd_num = CMD_EXPORT; 503 $$->cmd_handler = &export_func; 504 $$->cmd_res1_type = RT1_NCP; 505 $$->cmd_res2_type = $4; 506 $$->cmd_ncu_class_type = NCU_CLASS_ANY; 507 $$->cmd_argc = 3; 508 $$->cmd_argv[0] = $2; 509 $$->cmd_argv[1] = $3; 510 $$->cmd_argv[2] = $5; 511 $$->cmd_argv[3] = NULL; 512 } 513 | EXPORT OPTION TOKEN resource2_type ncu_class_type TOKEN 514 { 515 /* export -f file ncu ip/phys test */ 516 if (($$ = alloc_cmd()) == NULL) 517 YYERROR; 518 cmd = $$; 519 $$->cmd_num = CMD_EXPORT; 520 $$->cmd_handler = &export_func; 521 $$->cmd_res1_type = RT1_NCP; 522 $$->cmd_res2_type = $4; 523 $$->cmd_ncu_class_type = $5; 524 $$->cmd_argc = 3; 525 $$->cmd_argv[0] = $2; 526 $$->cmd_argv[1] = $3; 527 $$->cmd_argv[2] = $6; 528 $$->cmd_argv[3] = NULL; 529 } 530 531 get_command: GET 532 { 533 command_usage(CMD_GET); 534 YYERROR; 535 } 536 | GET TOKEN 537 { 538 properr($2); 539 YYERROR; 540 } 541 | GET property_type 542 { 543 /* get prop */ 544 if (($$ = alloc_cmd()) == NULL) 545 YYERROR; 546 cmd = $$; 547 $$->cmd_num = CMD_GET; 548 $$->cmd_handler = &get_func; 549 $$->cmd_prop_type = $2; 550 $$->cmd_argc = 0; 551 $$->cmd_argv[0] = NULL; 552 } 553 | GET OPTION property_type 554 { 555 /* get -V prop */ 556 if (($$ = alloc_cmd()) == NULL) 557 YYERROR; 558 cmd = $$; 559 $$->cmd_num = CMD_GET; 560 $$->cmd_handler = &get_func; 561 $$->cmd_prop_type = $3; 562 $$->cmd_argc = 1; 563 $$->cmd_argv[0] = $2; 564 $$->cmd_argv[1] = NULL; 565 } 566 567 help_command: HELP 568 { 569 if (($$ = alloc_cmd()) == NULL) 570 YYERROR; 571 cmd = $$; 572 $$->cmd_num = CMD_HELP; 573 $$->cmd_handler = &help_func; 574 $$->cmd_argc = 0; 575 $$->cmd_argv[0] = NULL; 576 } 577 | HELP TOKEN 578 { 579 /* help command */ 580 if (($$ = alloc_cmd()) == NULL) 581 YYERROR; 582 cmd = $$; 583 $$->cmd_num = CMD_HELP; 584 $$->cmd_handler = &help_func; 585 $$->cmd_argc = 1; 586 $$->cmd_argv[0] = $2; 587 $$->cmd_argv[1] = NULL; 588 } 589 590 list_command: LIST 591 { 592 if (($$ = alloc_cmd()) == NULL) 593 YYERROR; 594 cmd = $$; 595 $$->cmd_num = CMD_LIST; 596 $$->cmd_handler = &list_func; 597 $$->cmd_argc = 0; 598 $$->cmd_argv[0] = NULL; 599 } 600 | LIST TOKEN 601 { 602 command_usage(CMD_LIST); 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; 663 $$->cmd_handler = &list_func; 664 $$->cmd_res1_type = RT1_NCP; 665 $$->cmd_res2_type = $2; 666 $$->cmd_ncu_class_type = NCU_CLASS_ANY; 667 $$->cmd_argc = 1; 668 $$->cmd_argv[0] = $3; 669 $$->cmd_argv[1] = NULL; 670 } 671 | LIST resource2_type ncu_class_type TOKEN 672 { 673 /* list ncu ip/phys test */ 674 if (($$ = alloc_cmd()) == NULL) 675 YYERROR; 676 cmd = $$; 677 $$->cmd_num = CMD_LIST; 678 $$->cmd_handler = &list_func; 679 $$->cmd_res1_type = RT1_NCP; 680 $$->cmd_res2_type = $2; 681 $$->cmd_ncu_class_type = $3; 682 $$->cmd_argc = 1; 683 $$->cmd_argv[0] = $4; 684 $$->cmd_argv[1] = NULL; 685 } 686 | LIST OPTION resource1_type TOKEN 687 { 688 /* list -a enm/loc/ncp test */ 689 if (($$ = alloc_cmd()) == NULL) 690 YYERROR; 691 cmd = $$; 692 $$->cmd_num = CMD_LIST; 693 $$->cmd_handler = &list_func; 694 $$->cmd_res1_type = $3; 695 $$->cmd_argc = 2; 696 $$->cmd_argv[0] = $4; 697 $$->cmd_argv[1] = $2; 698 $$->cmd_argv[2] = NULL; 699 } 700 | LIST OPTION resource2_type TOKEN 701 { 702 /* list -a ncu test (all ncu's named test) */ 703 if (($$ = alloc_cmd()) == NULL) 704 YYERROR; 705 cmd = $$; 706 $$->cmd_num = CMD_LIST; 707 $$->cmd_handler = &list_func; 708 $$->cmd_res1_type = RT1_NCP; 709 $$->cmd_res2_type = $3; 710 $$->cmd_ncu_class_type = NCU_CLASS_ANY; 711 $$->cmd_argc = 2; 712 $$->cmd_argv[0] = $4; 713 $$->cmd_argv[1] = $2; 714 $$->cmd_argv[2] = NULL; 715 } 716 | LIST OPTION resource2_type ncu_class_type TOKEN 717 { 718 /* list -a ncu ip/phys test */ 719 if (($$ = alloc_cmd()) == NULL) 720 YYERROR; 721 cmd = $$; 722 $$->cmd_num = CMD_LIST; 723 $$->cmd_handler = &list_func; 724 $$->cmd_res1_type = RT1_NCP; 725 $$->cmd_res2_type = $3; 726 $$->cmd_ncu_class_type = $4; 727 $$->cmd_argc = 2; 728 $$->cmd_argv[0] = $5; 729 $$->cmd_argv[1] = $2; 730 $$->cmd_argv[2] = NULL; 731 } 732 733 revert_command: REVERT 734 { 735 if (($$ = alloc_cmd()) == NULL) 736 YYERROR; 737 cmd = $$; 738 $$->cmd_num = CMD_REVERT; 739 $$->cmd_handler = &revert_func; 740 $$->cmd_argc = 0; 741 $$->cmd_argv[0] = NULL; 742 } 743 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; 789 $$->cmd_handler = &select_func; 790 $$->cmd_res1_type = RT1_NCP; 791 $$->cmd_res2_type = $2; 792 $$->cmd_ncu_class_type = NCU_CLASS_ANY; 793 $$->cmd_argc = 1; 794 $$->cmd_argv[0] = $3; 795 $$->cmd_argv[1] = NULL; 796 } 797 | SELECT resource2_type ncu_class_type TOKEN 798 { 799 /* select ncu ip/phys test */ 800 if (($$ = alloc_cmd()) == NULL) 801 YYERROR; 802 cmd = $$; 803 $$->cmd_num = CMD_SELECT; 804 $$->cmd_handler = &select_func; 805 $$->cmd_res1_type = RT1_NCP; 806 $$->cmd_res2_type = $2; 807 $$->cmd_ncu_class_type = $3; 808 $$->cmd_argc = 1; 809 $$->cmd_argv[0] = $4; 810 $$->cmd_argv[1] = NULL; 811 } 812 813 set_command: SET 814 { 815 command_usage(CMD_SET); 816 YYERROR; 817 } 818 | SET TOKEN 819 { 820 properr($2); 821 YYERROR; 822 } 823 | SET property_type EQUAL TOKEN 824 { 825 /* set prop=value */ 826 if (($$ = alloc_cmd()) == NULL) 827 YYERROR; 828 cmd = $$; 829 $$->cmd_num = CMD_SET; 830 $$->cmd_handler = &set_func; 831 $$->cmd_prop_type = $2; 832 $$->cmd_argc = 1; 833 $$->cmd_argv[0] = $4; 834 $$->cmd_argv[1] = NULL; 835 } 836 837 verify_command: VERIFY 838 { 839 if (($$ = alloc_cmd()) == NULL) 840 YYERROR; 841 cmd = $$; 842 $$->cmd_num = CMD_VERIFY; 843 $$->cmd_handler = &verify_func; 844 $$->cmd_argc = 0; 845 $$->cmd_argv[0] = NULL; 846 } 847 848 walkprop_command: WALKPROP 849 { 850 if (($$ = alloc_cmd()) == NULL) 851 YYERROR; 852 cmd = $$; 853 $$->cmd_num = CMD_WALKPROP; 854 $$->cmd_handler = &walkprop_func; 855 $$->cmd_argc = 0; 856 $$->cmd_argv[0] = NULL; 857 } 858 | WALKPROP OPTION 859 { 860 /* walkprop -a */ 861 if (($$ = alloc_cmd()) == NULL) 862 YYERROR; 863 cmd = $$; 864 $$->cmd_num = CMD_WALKPROP; 865 $$->cmd_handler = &walkprop_func; 866 $$->cmd_argc = 1; 867 $$->cmd_argv[0] = $2; 868 $$->cmd_argv[1] = NULL; 869 } 870 871 resource1_type: LOC { $$ = RT1_LOC; } 872 | NCP { $$ = RT1_NCP; } 873 | ENM { $$ = RT1_ENM; } 874 | WLAN { $$ = RT1_WLAN; } 875 876 resource2_type: NCU { $$ = RT2_NCU; } 877 878 ncu_class_type: PHYS { $$ = NCU_CLASS_PHYS; } 879 | IP { $$ = NCU_CLASS_IP; } 880 881 property_type: UNKNOWN { $$ = PT_UNKNOWN; } 882 | ACTIVATION_MODE { $$ = PT_ACTIVATION_MODE; } 883 | CONDITIONS { $$ = PT_CONDITIONS; } 884 | ENABLED { $$ = PT_ENABLED; } 885 | TYPE { $$ = PT_TYPE; } 886 | CLASS { $$ = PT_CLASS; } 887 | PARENT { $$ = PT_PARENT; } 888 | PRIORITY_GROUP { $$ = PT_PRIORITY_GROUP; } 889 | PRIORITY_MODE { $$ = PT_PRIORITY_MODE; } 890 | LINK_MACADDR { $$ = PT_LINK_MACADDR; } 891 | LINK_AUTOPUSH { $$ = PT_LINK_AUTOPUSH; } 892 | LINK_MTU { $$ = PT_LINK_MTU; } 893 | IP_VERSION { $$ = PT_IP_VERSION; } 894 | IPV4_ADDRSRC { $$ = PT_IPV4_ADDRSRC; } 895 | IPV4_ADDR { $$ = PT_IPV4_ADDR; } 896 | IPV4_DEFAULT_ROUTE { $$ = PT_IPV4_DEFAULT_ROUTE; } 897 | IPV6_ADDRSRC { $$ = PT_IPV6_ADDRSRC; } 898 | IPV6_ADDR { $$ = PT_IPV6_ADDR; } 899 | IPV6_DEFAULT_ROUTE { $$ = PT_IPV6_DEFAULT_ROUTE; } 900 | ENM_FMRI { $$ = PT_ENM_FMRI; } 901 | ENM_START { $$ = PT_ENM_START; } 902 | ENM_STOP { $$ = PT_ENM_STOP; } 903 | LOC_NAMESERVICES { $$ = PT_LOC_NAMESERVICES; } 904 | LOC_NAMESERVICES_CONFIG { $$ = PT_LOC_NAMESERVICES_CONFIG; } 905 | LOC_DNS_CONFIGSRC { $$ = PT_LOC_DNS_CONFIGSRC; } 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 %% 930