Print this page


Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/zonecfg/zonecfg_grammar.y
          +++ new/usr/src/cmd/zonecfg/zonecfg_grammar.y
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16   16   * If applicable, add the following below this CDDL HEADER, with the
  17   17   * fields enclosed by brackets "[]" replaced with your own identifying
  18   18   * information: Portions Copyright [yyyy] [name of copyright owner]
  19   19   *
  20   20   * CDDL HEADER END
  21   21   */
  22   22  
  23   23  /*
  24   24   * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  25      - * Copyright 2013, Joyent Inc. All rights reserved.
  26   25   */
  27   26  
  28   27  /*
  29   28   * This file defines zonecfg(1M)'s grammar.
  30   29   *
  31   30   * Reduction rules that consume TOKENs must invoke claim_token() immediately
  32   31   * before freeing the TOKENs or adding them to data structures (e.g., cmd) that
  33   32   * will be cleaned up when the parser finishes or encounters errors.
  34   33   */
  35   34  
↓ open down ↓ 94 lines elided ↑ open up ↑
 130  129  %start commands
 131  130  
 132  131  %token HELP CREATE EXPORT ADD DELETE REMOVE SELECT SET INFO CANCEL END VERIFY
 133  132  %token COMMIT REVERT EXIT SEMICOLON TOKEN ZONENAME ZONEPATH AUTOBOOT POOL NET
 134  133  %token FS ATTR DEVICE RCTL SPECIAL RAW DIR OPTIONS TYPE ADDRESS PHYSICAL
 135  134  %token IPTYPE HOSTID FS_ALLOWED ALLOWED_ADDRESS
 136  135  %token NAME MATCH PRIV LIMIT ACTION VALUE EQUAL OPEN_SQ_BRACKET CLOSE_SQ_BRACKET
 137  136  %token OPEN_PAREN CLOSE_PAREN COMMA DATASET LIMITPRIV BOOTARGS BRAND PSET PCAP
 138  137  %token MCAP NCPUS IMPORTANCE SHARES MAXLWPS MAXSHMMEM MAXSHMIDS MAXMSGIDS
 139  138  %token MAXSEMIDS LOCKED SWAP SCHED CLEAR DEFROUTER ADMIN USER AUTHS MAXPROCS
 140      -%token ZFSPRI MAC VLANID GNIC NPROP UUID
      139 +%token ZFSPRI MAC VLANID GNIC NPROP
 141  140  
 142  141  %type <strval> TOKEN EQUAL OPEN_SQ_BRACKET CLOSE_SQ_BRACKET
 143  142      property_value OPEN_PAREN CLOSE_PAREN COMMA simple_prop_val
 144  143  %type <complex> complex_piece complex_prop_val
 145  144  %type <ival> resource_type NET FS DEVICE RCTL ATTR DATASET PSET PCAP MCAP
 146  145      ADMIN
 147  146  %type <ival> property_name SPECIAL RAW DIR OPTIONS TYPE ADDRESS PHYSICAL NAME
 148  147      MATCH ZONENAME ZONEPATH AUTOBOOT POOL LIMITPRIV BOOTARGS VALUE PRIV LIMIT
 149  148      ACTION BRAND SCHED IPTYPE DEFROUTER HOSTID USER AUTHS FS_ALLOWED
 150      -    ALLOWED_ADDRESS MAC VLANID GNIC NPROP UUID
      149 +    ALLOWED_ADDRESS MAC VLANID GNIC NPROP
 151  150  %type <cmd> command
 152  151  %type <cmd> add_command ADD
 153  152  %type <cmd> cancel_command CANCEL
 154  153  %type <cmd> commit_command COMMIT
 155  154  %type <cmd> create_command CREATE
 156  155  %type <cmd> delete_command DELETE
 157  156  %type <cmd> end_command END
 158  157  %type <cmd> exit_command EXIT
 159  158  %type <cmd> export_command EXPORT
 160  159  %type <cmd> help_command HELP
↓ open down ↓ 484 lines elided ↑ open up ↑
 645  644          }
 646  645          |       INFO FS_ALLOWED
 647  646          {
 648  647                  if (($$ = alloc_cmd()) == NULL)
 649  648                          YYERROR;
 650  649                  cmd = $$;
 651  650                  $$->cmd_handler = &info_func;
 652  651                  $$->cmd_res_type = RT_FS_ALLOWED;
 653  652                  $$->cmd_prop_nv_pairs = 0;
 654  653          }
 655      -        |       INFO UUID
 656      -        {
 657      -                if (($$ = alloc_cmd()) == NULL)
 658      -                        YYERROR;
 659      -                cmd = $$;
 660      -                $$->cmd_handler = &info_func;
 661      -                $$->cmd_res_type = RT_UUID;
 662      -                $$->cmd_prop_nv_pairs = 0;
 663      -        }
 664      -        |       INFO ZFSPRI
 665      -        {
 666      -                if (($$ = alloc_cmd()) == NULL)
 667      -                        YYERROR;
 668      -                cmd = $$;
 669      -                $$->cmd_handler = &info_func;
 670      -                $$->cmd_res_type = RT_ZFSPRI;
 671      -                $$->cmd_prop_nv_pairs = 0;
 672      -        }
 673  654          |       INFO resource_type property_name EQUAL property_value
 674  655          {
 675  656                  if (($$ = alloc_cmd()) == NULL)
 676  657                          YYERROR;
 677  658                  cmd = $$;
 678  659                  $$->cmd_handler = &info_func;
 679  660                  $$->cmd_res_type = $2;
 680  661                  $$->cmd_prop_nv_pairs = 1;
 681  662                  $$->cmd_prop_name[0] = $3;
 682  663                  $$->cmd_property_ptr[0] = &property[0];
↓ open down ↓ 64 lines elided ↑ open up ↑
 747  728          | REMOVE property_name property_value
 748  729          {
 749  730                  if (($$ = alloc_cmd()) == NULL)
 750  731                          YYERROR;
 751  732                  cmd = $$;
 752  733                  $$->cmd_handler = &remove_func;
 753  734                  $$->cmd_prop_nv_pairs = 1;
 754  735                  $$->cmd_prop_name[0] = $2;
 755  736                  $$->cmd_property_ptr[0] = &property[0];
 756  737          }
 757      -        | REMOVE TOKEN property_name property_value
 758      -        {
 759      -                if (($$ = alloc_cmd()) == NULL)
 760      -                        YYERROR;
 761      -                cmd = $$;
 762      -                $$->cmd_handler = &remove_func;
 763      -                $$->cmd_argc = 1;
 764      -                $$->cmd_argv[0] = claim_token($2);
 765      -                $$->cmd_argv[1] = NULL;
 766      -                $$->cmd_prop_nv_pairs = 1;
 767      -                $$->cmd_prop_name[0] = $3;
 768      -                $$->cmd_property_ptr[0] = &property[0];
 769      -        }
 770  738          | REMOVE resource_type property_name EQUAL property_value
 771  739          {
 772  740                  if (($$ = alloc_cmd()) == NULL)
 773  741                          YYERROR;
 774  742                  cmd = $$;
 775  743                  $$->cmd_handler = &remove_func;
 776  744                  $$->cmd_res_type = $2;
 777  745                  $$->cmd_prop_nv_pairs = 1;
 778  746                  $$->cmd_prop_name[0] = $3;
 779  747                  $$->cmd_property_ptr[0] = &property[0];
 780  748          }
 781      -        | REMOVE TOKEN resource_type property_name EQUAL property_value
 782      -        {
 783      -                if (($$ = alloc_cmd()) == NULL)
 784      -                        YYERROR;
 785      -                cmd = $$;
 786      -                $$->cmd_handler = &remove_func;
 787      -                $$->cmd_res_type = $3;
 788      -                $$->cmd_argc = 1;
 789      -                $$->cmd_argv[0] = claim_token($2);
 790      -                $$->cmd_argv[1] = NULL;
 791      -                $$->cmd_prop_nv_pairs = 1;
 792      -                $$->cmd_prop_name[0] = $4;
 793      -                $$->cmd_property_ptr[0] = &property[0];
 794      -        }
 795  749          | REMOVE resource_type property_name EQUAL property_value property_name EQUAL property_value
 796  750          {
 797  751                  if (($$ = alloc_cmd()) == NULL)
 798  752                          YYERROR;
 799  753                  cmd = $$;
 800  754                  $$->cmd_handler = &remove_func;
 801  755                  $$->cmd_res_type = $2;
 802  756                  $$->cmd_prop_nv_pairs = 2;
 803  757                  $$->cmd_prop_name[0] = $3;
 804  758                  $$->cmd_property_ptr[0] = &property[0];
 805  759                  $$->cmd_prop_name[1] = $6;
 806  760                  $$->cmd_property_ptr[1] = &property[1];
 807  761          }
 808      -        | REMOVE TOKEN resource_type property_name EQUAL property_value property_name EQUAL property_value
 809      -        {
 810      -                if (($$ = alloc_cmd()) == NULL)
 811      -                        YYERROR;
 812      -                cmd = $$;
 813      -                $$->cmd_handler = &remove_func;
 814      -                $$->cmd_res_type = $3;
 815      -                $$->cmd_argc = 1;
 816      -                $$->cmd_argv[0] = claim_token($2);
 817      -                $$->cmd_argv[1] = NULL;
 818      -                $$->cmd_prop_nv_pairs = 2;
 819      -                $$->cmd_prop_name[0] = $4;
 820      -                $$->cmd_property_ptr[0] = &property[0];
 821      -                $$->cmd_prop_name[1] = $7;
 822      -                $$->cmd_property_ptr[1] = &property[1];
 823      -        }
 824  762          | REMOVE resource_type property_name EQUAL property_value property_name EQUAL property_value property_name EQUAL property_value
 825  763          {
 826  764                  if (($$ = alloc_cmd()) == NULL)
 827  765                          YYERROR;
 828  766                  cmd = $$;
 829  767                  $$->cmd_handler = &remove_func;
 830  768                  $$->cmd_res_type = $2;
 831  769                  $$->cmd_prop_nv_pairs = 3;
 832  770                  $$->cmd_prop_name[0] = $3;
 833  771                  $$->cmd_property_ptr[0] = &property[0];
 834  772                  $$->cmd_prop_name[1] = $6;
 835  773                  $$->cmd_property_ptr[1] = &property[1];
 836  774                  $$->cmd_prop_name[2] = $9;
 837  775                  $$->cmd_property_ptr[2] = &property[2];
 838  776          }
 839      -        | REMOVE TOKEN resource_type property_name EQUAL property_value property_name EQUAL property_value property_name EQUAL property_value
 840      -        {
 841      -                if (($$ = alloc_cmd()) == NULL)
 842      -                        YYERROR;
 843      -                cmd = $$;
 844      -                $$->cmd_handler = &remove_func;
 845      -                $$->cmd_res_type = $3;
 846      -                $$->cmd_argc = 1;
 847      -                $$->cmd_argv[0] = claim_token($2);
 848      -                $$->cmd_argv[1] = NULL;
 849      -                $$->cmd_prop_nv_pairs = 3;
 850      -                $$->cmd_prop_name[0] = $4;
 851      -                $$->cmd_property_ptr[0] = &property[0];
 852      -                $$->cmd_prop_name[1] = $7;
 853      -                $$->cmd_property_ptr[1] = &property[1];
 854      -                $$->cmd_prop_name[2] = $10;
 855      -                $$->cmd_property_ptr[2] = &property[2];
 856      -        }
 857  777  
 858  778  revert_command: REVERT
 859  779          {
 860  780                  if (($$ = alloc_cmd()) == NULL)
 861  781                          YYERROR;
 862  782                  cmd = $$;
 863  783                  $$->cmd_handler = &revert_func;
 864  784                  $$->cmd_argc = 0;
 865  785                  $$->cmd_argv[0] = NULL;
 866  786          }
↓ open down ↓ 210 lines elided ↑ open up ↑
1077  997          | MAXPROCS      { $$ = PT_MAXPROCS; }
1078  998          | MAXSHMMEM     { $$ = PT_MAXSHMMEM; }
1079  999          | MAXSHMIDS     { $$ = PT_MAXSHMIDS; }
1080 1000          | MAXMSGIDS     { $$ = PT_MAXMSGIDS; }
1081 1001          | MAXSEMIDS     { $$ = PT_MAXSEMIDS; }
1082 1002          | SCHED         { $$ = PT_SCHED; }
1083 1003          | HOSTID        { $$ = PT_HOSTID; }
1084 1004          | USER          { $$ = PT_USER; }
1085 1005          | AUTHS         { $$ = PT_AUTHS; }
1086 1006          | FS_ALLOWED    { $$ = PT_FS_ALLOWED; }
1087      -        | UUID          { $$ = PT_UUID; }
1088      -        | ZFSPRI        { $$ = PT_ZFSPRI; }
1089 1007  
1090 1008  /*
1091 1009   * The grammar builds data structures from the bottom up.  Thus various
1092 1010   * strings are lexed into TOKENs or commands or resource or property values.
1093 1011   * Below is where the resource and property values are built up into more
1094 1012   * complex data structures.
1095 1013   *
1096 1014   * There are three kinds of properties: simple (single valued), complex
1097 1015   * (one or more name=value pairs) and list (concatenation of one or more
1098 1016   * simple or complex properties).
↓ open down ↓ 129 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX