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