Print this page
OS-224 add more zonecfg net properties
OS-216 store all net config info on zone


  40  * Invariants:
  41  *
  42  *      unclaimed_tokens == NULL IFF unclaimed_tokens_size == 0
  43  *      unclaimed_tokens_size == 0 IFF num_unclaimed_tokens == 0
  44  */
  45 static char **unclaimed_tokens;         /* TOKENs produced by Lex (see below) */
  46                                         /* but not claimed by YACC reduction */
  47                                         /* rules */
  48 static unsigned int unclaimed_tokens_size;      /* size of unclaimed_tokens */
  49 static unsigned int num_unclaimed_tokens;       /* number of unclaimed TOKENs */
  50 
  51 int lex_lineno = 1;     /* line number for error reporting */
  52 static int state = INITIAL;
  53 extern boolean_t cmd_file_mode;
  54 extern boolean_t saw_error;
  55 extern void yyerror(char *s);
  56 
  57 static char *create_token(char *s);
  58 %}
  59 
  60 %a 7000
  61 %p 5000
  62 %e 2000
  63 %n 1000

  64 
  65 %{
  66 /*
  67  * The three states below are for tokens, lists and complex property values.
  68  * Note that simple property values are a subset of tokens.
  69  */
  70 %}
  71 %s TSTATE
  72 %s LSTATE
  73 %s CSTATE
  74 %%
  75 
  76 <INITIAL>"#"[^\n]*        { }
  77 
  78 <INITIAL>add      {
  79                         BEGIN TSTATE;
  80                         state = TSTATE;
  81                         return ADD;
  82                 }
  83 


 219 <CSTATE>type      { return TYPE; }
 220 
 221 <TSTATE>value     { return VALUE; }
 222 <CSTATE>value     { return VALUE; }
 223 
 224 <TSTATE>options   { return OPTIONS; }
 225 <CSTATE>options   { return OPTIONS; }
 226 
 227 <TSTATE>allowed-address { return ALLOWED_ADDRESS; }
 228 <CSTATE>allowed-address { return ALLOWED_ADDRESS; }
 229 
 230 <TSTATE>address   { return ADDRESS; }
 231 <CSTATE>address   { return ADDRESS; }
 232 
 233 <TSTATE>physical  { return PHYSICAL; }
 234 <CSTATE>physical  { return PHYSICAL; }
 235 
 236 <TSTATE>defrouter { return DEFROUTER; }
 237 <CSTATE>defrouter { return DEFROUTER; }
 238 












 239 <TSTATE>dir       { return DIR; }
 240 <CSTATE>dir       { return DIR; }
 241 
 242 <TSTATE>special   { return SPECIAL; }
 243 <CSTATE>special   { return SPECIAL; }
 244 
 245 <TSTATE>raw       { return RAW; }
 246 <CSTATE>raw       { return RAW; }
 247 
 248 <TSTATE>name      { return NAME; }
 249 <CSTATE>name      { return NAME; }
 250 
 251 <TSTATE>match     { return MATCH; }
 252 <CSTATE>match     { return MATCH; }
 253 
 254 <TSTATE>priv      { return PRIV; }
 255 <CSTATE>priv      { return PRIV; }
 256 
 257 <TSTATE>limit     { return LIMIT; }
 258 <CSTATE>limit     { return LIMIT; }


 339                         return CLOSE_PAREN;
 340                 }
 341 
 342 <LSTATE>","       { return COMMA; }
 343 <CSTATE>","       { return COMMA; }
 344 
 345 <TSTATE>[^ \t\n\";=\[\]\(\)]+     {
 346                         yylval.strval = create_token(yytext);
 347                         return TOKEN;
 348                 }
 349 
 350 <LSTATE>[^ \t\n\",;=\[\]\(\)]+    {
 351                         yylval.strval = create_token(yytext);
 352                         return TOKEN;
 353                 }
 354 
 355 <CSTATE>[^ \t\n\",;=\(\)]+        {
 356                         yylval.strval = create_token(yytext);
 357                         return TOKEN;
 358                 }







 359 
 360 <TSTATE>\"[^\"\n]*[\"\n] {
 361                         yylval.strval = create_token(yytext + 1);
 362                         if (yylval.strval[yyleng - 2] == '"')
 363                                 yylval.strval[yyleng - 2] = 0;
 364                         return TOKEN;
 365                 }
 366 
 367 <LSTATE>\"[^\"\n]*[\"\n] {
 368                         yylval.strval = create_token(yytext + 1);
 369                         if (yylval.strval[yyleng - 2] == '"')
 370                                 yylval.strval[yyleng - 2] = 0;
 371                         return TOKEN;
 372                 }
 373 
 374 ";"             {
 375                         BEGIN INITIAL;
 376                         return (yytext[0]);
 377                 }
 378 




  40  * Invariants:
  41  *
  42  *      unclaimed_tokens == NULL IFF unclaimed_tokens_size == 0
  43  *      unclaimed_tokens_size == 0 IFF num_unclaimed_tokens == 0
  44  */
  45 static char **unclaimed_tokens;         /* TOKENs produced by Lex (see below) */
  46                                         /* but not claimed by YACC reduction */
  47                                         /* rules */
  48 static unsigned int unclaimed_tokens_size;      /* size of unclaimed_tokens */
  49 static unsigned int num_unclaimed_tokens;       /* number of unclaimed TOKENs */
  50 
  51 int lex_lineno = 1;     /* line number for error reporting */
  52 static int state = INITIAL;
  53 extern boolean_t cmd_file_mode;
  54 extern boolean_t saw_error;
  55 extern void yyerror(char *s);
  56 
  57 static char *create_token(char *s);
  58 %}
  59 
  60 %a 8000
  61 %p 5000
  62 %e 2000
  63 %n 1000
  64 %o 13000
  65 
  66 %{
  67 /*
  68  * The three states below are for tokens, lists and complex property values.
  69  * Note that simple property values are a subset of tokens.
  70  */
  71 %}
  72 %s TSTATE
  73 %s LSTATE
  74 %s CSTATE
  75 %%
  76 
  77 <INITIAL>"#"[^\n]*        { }
  78 
  79 <INITIAL>add      {
  80                         BEGIN TSTATE;
  81                         state = TSTATE;
  82                         return ADD;
  83                 }
  84 


 220 <CSTATE>type      { return TYPE; }
 221 
 222 <TSTATE>value     { return VALUE; }
 223 <CSTATE>value     { return VALUE; }
 224 
 225 <TSTATE>options   { return OPTIONS; }
 226 <CSTATE>options   { return OPTIONS; }
 227 
 228 <TSTATE>allowed-address { return ALLOWED_ADDRESS; }
 229 <CSTATE>allowed-address { return ALLOWED_ADDRESS; }
 230 
 231 <TSTATE>address   { return ADDRESS; }
 232 <CSTATE>address   { return ADDRESS; }
 233 
 234 <TSTATE>physical  { return PHYSICAL; }
 235 <CSTATE>physical  { return PHYSICAL; }
 236 
 237 <TSTATE>defrouter { return DEFROUTER; }
 238 <CSTATE>defrouter { return DEFROUTER; }
 239 
 240 <TSTATE>mac-addr  { return MAC; }
 241 <CSTATE>mac-addr  { return MAC; }
 242 
 243 <TSTATE>vlan-id           { return VLANID; }
 244 <CSTATE>vlan-id           { return VLANID; }
 245 
 246 <TSTATE>global-nic        { return GNIC; }
 247 <CSTATE>global-nic        { return GNIC; }
 248 
 249 <TSTATE>property  { return NPROP; }
 250 <CSTATE>property  { return NPROP; }
 251 
 252 <TSTATE>dir       { return DIR; }
 253 <CSTATE>dir       { return DIR; }
 254 
 255 <TSTATE>special   { return SPECIAL; }
 256 <CSTATE>special   { return SPECIAL; }
 257 
 258 <TSTATE>raw       { return RAW; }
 259 <CSTATE>raw       { return RAW; }
 260 
 261 <TSTATE>name      { return NAME; }
 262 <CSTATE>name      { return NAME; }
 263 
 264 <TSTATE>match     { return MATCH; }
 265 <CSTATE>match     { return MATCH; }
 266 
 267 <TSTATE>priv      { return PRIV; }
 268 <CSTATE>priv      { return PRIV; }
 269 
 270 <TSTATE>limit     { return LIMIT; }
 271 <CSTATE>limit     { return LIMIT; }


 352                         return CLOSE_PAREN;
 353                 }
 354 
 355 <LSTATE>","       { return COMMA; }
 356 <CSTATE>","       { return COMMA; }
 357 
 358 <TSTATE>[^ \t\n\";=\[\]\(\)]+     {
 359                         yylval.strval = create_token(yytext);
 360                         return TOKEN;
 361                 }
 362 
 363 <LSTATE>[^ \t\n\",;=\[\]\(\)]+    {
 364                         yylval.strval = create_token(yytext);
 365                         return TOKEN;
 366                 }
 367 
 368 <CSTATE>[^ \t\n\",;=\(\)]+        {
 369                         yylval.strval = create_token(yytext);
 370                         return TOKEN;
 371                 }
 372 
 373 <CSTATE>\"[^\"\n]*[\"\n] {
 374                         yylval.strval = create_token(yytext + 1);
 375                         if (yylval.strval[yyleng - 2] == '"')
 376                                 yylval.strval[yyleng - 2] = 0;
 377                         return TOKEN;
 378                 }
 379 
 380 <TSTATE>\"[^\"\n]*[\"\n] {
 381                         yylval.strval = create_token(yytext + 1);
 382                         if (yylval.strval[yyleng - 2] == '"')
 383                                 yylval.strval[yyleng - 2] = 0;
 384                         return TOKEN;
 385                 }
 386 
 387 <LSTATE>\"[^\"\n]*[\"\n] {
 388                         yylval.strval = create_token(yytext + 1);
 389                         if (yylval.strval[yyleng - 2] == '"')
 390                                 yylval.strval[yyleng - 2] = 0;
 391                         return TOKEN;
 392                 }
 393 
 394 ";"             {
 395                         BEGIN INITIAL;
 396                         return (yytext[0]);
 397                 }
 398