Blame opensm/osm_qos_parser_l.l

Packit 13e616
%{
Packit 13e616
/*
Packit 13e616
 * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
Packit 13e616
 * Copyright (c) 2002-2008 Mellanox Technologies LTD. All rights reserved.
Packit 13e616
 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
Packit 13e616
 *
Packit 13e616
 * This software is available to you under a choice of one of two
Packit 13e616
 * licenses.  You may choose to be licensed under the terms of the GNU
Packit 13e616
 * General Public License (GPL) Version 2, available from the file
Packit 13e616
 * COPYING in the main directory of this source tree, or the
Packit 13e616
 * OpenIB.org BSD license below:
Packit 13e616
 *
Packit 13e616
 *     Redistribution and use in source and binary forms, with or
Packit 13e616
 *     without modification, are permitted provided that the following
Packit 13e616
 *     conditions are met:
Packit 13e616
 *
Packit 13e616
 *      - Redistributions of source code must retain the above
Packit 13e616
 *        copyright notice, this list of conditions and the following
Packit 13e616
 *        disclaimer.
Packit 13e616
 *
Packit 13e616
 *      - Redistributions in binary form must reproduce the above
Packit 13e616
 *        copyright notice, this list of conditions and the following
Packit 13e616
 *        disclaimer in the documentation and/or other materials
Packit 13e616
 *        provided with the distribution.
Packit 13e616
 *
Packit 13e616
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Packit 13e616
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Packit 13e616
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Packit 13e616
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
Packit 13e616
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
Packit 13e616
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
Packit 13e616
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
Packit 13e616
 * SOFTWARE.
Packit 13e616
 *
Packit 13e616
 */
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * Abstract:
Packit 13e616
 *    Lexer of OSM QoS parser.
Packit 13e616
 *
Packit 13e616
 * Environment:
Packit 13e616
 *    Linux User Mode
Packit 13e616
 *
Packit 13e616
 * Author:
Packit 13e616
 *    Yevgeny Kliteynik, Mellanox
Packit 13e616
 */
Packit 13e616
Packit 13e616
#include <opensm/osm_file_ids.h>
Packit 13e616
#define FILE_ID OSM_FILE_QOS_PARSER_L_L
Packit 13e616
#include <opensm/osm_qos_policy.h>
Packit 13e616
#include "osm_qos_parser_y.h"
Packit 13e616
Packit 13e616
#define HANDLE_IF_IN_DESCRIPTION   if (in_description) { yylval = strdup(yytext); return TK_TEXT; }
Packit 13e616
Packit 13e616
#define SAVE_POS save_pos()
Packit 13e616
static void save_pos();
Packit 13e616
Packit 13e616
extern int column_num;
Packit 13e616
extern int line_num;
Packit 13e616
extern FILE * yyin;
Packit 13e616
extern YYSTYPE yylval;
Packit 13e616
Packit 13e616
boolean_t in_description = FALSE;
Packit 13e616
boolean_t in_list_of_hex_num_ranges = FALSE;
Packit 13e616
boolean_t in_node_type = FALSE;
Packit 13e616
boolean_t in_list_of_numbers = FALSE;
Packit 13e616
boolean_t in_list_of_strings = FALSE;
Packit 13e616
boolean_t in_list_of_num_pairs = FALSE;
Packit 13e616
boolean_t in_asterisk_or_list_of_numbers = FALSE;
Packit 13e616
boolean_t in_list_of_num_ranges = FALSE;
Packit 13e616
boolean_t in_single_string = FALSE;
Packit 13e616
boolean_t in_single_number = FALSE;
Packit 13e616
Packit 13e616
static void reset_new_line_flags();
Packit 13e616
#define RESET_NEW_LINE_FLAGS reset_new_line_flags()
Packit 13e616
Packit 13e616
#define START_USE            {in_description = TRUE;}     /* list of strings including whitespace (description) */
Packit 13e616
#define START_PORT_GUID      {in_list_of_hex_num_ranges = TRUE;} /* comma-separated list of hex num ranges */
Packit 13e616
#define START_PORT_NAME      {in_list_of_strings = TRUE;} /* comma-separated list of following strings: ../../.. */
Packit 13e616
#define START_PARTITION      {in_single_string = TRUE;}   /* single string w/o whitespaces (partition name) */
Packit 13e616
#define START_NAME           {in_single_string = TRUE;}   /* single string w/o whitespaces (port group name) */
Packit 13e616
#define START_QOS_LEVEL_NAME {in_single_string = TRUE;}   /* single string w/o whitespaces (qos level name in match rule) */
Packit 13e616
Packit 13e616
#define START_NODE_TYPE     {in_node_type = TRUE;}       /* comma-separated list of node types (ROUTER,CA,...) */
Packit 13e616
#define START_SL2VL_TABLE   {in_list_of_numbers = TRUE;} /* comma-separated list of hex or dec numbers */
Packit 13e616
Packit 13e616
#define START_GROUP         {in_list_of_strings = TRUE;} /* list of strings w/o whitespaces (group names) */
Packit 13e616
#define START_ACROSS        {in_list_of_strings = TRUE;} /* list of strings w/o whitespaces (group names) */
Packit 13e616
#define START_ACROSS_TO     {in_list_of_strings = TRUE;} /* list of strings w/o whitespaces (group names) */
Packit 13e616
#define START_ACROSS_FROM   {in_list_of_strings = TRUE;} /* list of strings w/o whitespaces (group names) */
Packit 13e616
#define START_SOURCE        {in_list_of_strings = TRUE;} /* list of strings w/o whitespaces (group names) */
Packit 13e616
#define START_DESTINATION   {in_list_of_strings = TRUE;} /* list of strings w/o whitespaces (group names) */
Packit 13e616
Packit 13e616
#define START_VLARB_HIGH    {in_list_of_num_pairs = TRUE;} /* comma-separated list of hex or dec num pairs: "num1:num2" */
Packit 13e616
#define START_VLARB_LOW     {in_list_of_num_pairs = TRUE;} /* comma-separated list of hex or dec num pairs: "num1:num2" */
Packit 13e616
Packit 13e616
#define START_TO            {in_asterisk_or_list_of_numbers = TRUE;} /* (asterisk) or (comma-separated list of hex or dec numbers) */
Packit 13e616
#define START_FROM          {in_asterisk_or_list_of_numbers = TRUE;} /* (asterisk) or (comma-separated list of hex or dec numbers) */
Packit 13e616
Packit 13e616
#define START_PATH_BITS     {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
#define START_QOS_CLASS     {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
#define START_SERVICE_ID    {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
#define START_PKEY          {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
Packit 13e616
#define START_SL               {in_single_number = TRUE;}   /* single number */
Packit 13e616
#define START_VLARB_HIGH_LIMIT {in_single_number = TRUE;}   /* single number */
Packit 13e616
#define START_MTU_LIMIT        {in_single_number = TRUE;}   /* single number */
Packit 13e616
#define START_RATE_LIMIT       {in_single_number = TRUE;}   /* single number */
Packit 13e616
#define START_PACKET_LIFE      {in_single_number = TRUE;}   /* single number */
Packit 13e616
Packit 13e616
#define START_ULP_DEFAULT       {in_single_number = TRUE;}      /* single number */
Packit 13e616
#define START_ULP_ANY           {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
#define START_ULP_SDP_DEFAULT   {in_single_number = TRUE;}      /* single number */
Packit 13e616
#define START_ULP_SDP_PORT      {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
#define START_ULP_RDS_DEFAULT   {in_single_number = TRUE;}      /* single number */
Packit 13e616
#define START_ULP_RDS_PORT      {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
#define START_ULP_ISER_DEFAULT  {in_single_number = TRUE;}      /* single number */
Packit 13e616
#define START_ULP_ISER_PORT     {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
#define START_ULP_SRP_GUID      {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
#define START_ULP_IPOIB_DEFAULT {in_single_number = TRUE;}      /* single number */
Packit 13e616
#define START_ULP_IPOIB_PKEY    {in_list_of_num_ranges = TRUE;} /* comma-separated list of hex or dec num ranges */
Packit 13e616
Packit 13e616
Packit 13e616
%}
Packit 13e616
Packit 13e616
%option nounput noinput
Packit 13e616
Packit 13e616
QOS_ULPS_START          qos\-ulps
Packit 13e616
QOS_ULPS_END            end\-qos\-ulps
Packit 13e616
PORT_GROUPS_START       port\-groups
Packit 13e616
PORT_GROUPS_END         end\-port\-groups
Packit 13e616
PORT_GROUP_START        port\-group
Packit 13e616
PORT_GROUP_END          end\-port\-group
Packit 13e616
PORT_NUM                port\-num
Packit 13e616
NAME                    name
Packit 13e616
USE                     use
Packit 13e616
PORT_GUID               port\-guid
Packit 13e616
TARGET_PORT_GUID        target\-port\-guid
Packit 13e616
SOURCE_PORT_GUID        source\-port\-guid
Packit 13e616
SOURCE_TARGET_PORT_GUID source\-target\-port\-guid
Packit 13e616
PORT_NAME               port\-name
Packit 13e616
PARTITION               partition
Packit 13e616
NODE_TYPE               node\-type
Packit 13e616
QOS_SETUP_START         qos\-setup
Packit 13e616
QOS_SETUP_END           end\-qos\-setup
Packit 13e616
VLARB_TABLES_START      vlarb\-tables
Packit 13e616
VLARB_TABLES_END        end\-vlarb\-tables
Packit 13e616
VLARB_SCOPE_START       vlarb\-scope
Packit 13e616
VLARB_SCOPE_END         end\-vlarb\-scope
Packit 13e616
GROUP                   group
Packit 13e616
ACROSS                  across
Packit 13e616
VLARB_HIGH              vlarb\-high
Packit 13e616
VLARB_LOW               vlarb\-low
Packit 13e616
VLARB_HIGH_LIMIT        vl\-high\-limit
Packit 13e616
SL2VL_TABLES_START      sl2vl\-tables
Packit 13e616
SL2VL_TABLES_END        end\-sl2vl\-tables
Packit 13e616
SL2VL_SCOPE_START       sl2vl\-scope
Packit 13e616
SL2VL_SCOPE_END         end\-sl2vl\-scope
Packit 13e616
TO                      to
Packit 13e616
FROM                    from
Packit 13e616
ACROSS_TO               across\-to
Packit 13e616
ACROSS_FROM             across\-from
Packit 13e616
SL2VL_TABLE             sl2vl\-table
Packit 13e616
QOS_LEVELS_START        qos\-levels
Packit 13e616
QOS_LEVELS_END          end\-qos\-levels
Packit 13e616
QOS_LEVEL_START         qos\-level
Packit 13e616
QOS_LEVEL_END           end\-qos\-level
Packit 13e616
SL                      sl
Packit 13e616
MTU_LIMIT               mtu\-limit
Packit 13e616
RATE_LIMIT              rate\-limit
Packit 13e616
PACKET_LIFE             packet\-life
Packit 13e616
PATH_BITS               path\-bits
Packit 13e616
QOS_MATCH_RULES_START   qos\-match\-rules
Packit 13e616
QOS_MATCH_RULES_END     end\-qos\-match\-rules
Packit 13e616
QOS_MATCH_RULE_START    qos\-match\-rule
Packit 13e616
QOS_MATCH_RULE_END      end\-qos\-match\-rule
Packit 13e616
QOS_CLASS               qos\-class
Packit 13e616
SOURCE                  source
Packit 13e616
DESTINATION             destination
Packit 13e616
SERVICE_ID              service\-id
Packit 13e616
PKEY                    pkey
Packit 13e616
QOS_LEVEL_NAME          qos\-level\-name
Packit 13e616
Packit 13e616
ROUTER                  [Rr][Oo][Uu][Tt][Ee][Rr]
Packit 13e616
CA                      [Cc][Aa]
Packit 13e616
SWITCH                  [Ss][Ww][Ii][Tt][Cc][Hh]
Packit 13e616
SELF                    [Ss][Ee][Ll][Ff]
Packit 13e616
ALL                     [Aa][Ll][Ll]
Packit 13e616
Packit 13e616
ULP_SDP                 [Ss][Dd][Pp]
Packit 13e616
ULP_SRP                 [Ss][Rr][Pp]
Packit 13e616
ULP_RDS                 [Rr][Dd][Ss]
Packit 13e616
ULP_IPOIB               [Ii][Pp][Oo][Ii][Bb]
Packit 13e616
ULP_ISER                [Ii][Ss][Ee][Rr]
Packit 13e616
ULP_ANY                 [Aa][Nn][Yy]
Packit 13e616
ULP_DEFAULT             [Dd][Ee][Ff][Aa][Uu][Ll][Tt]
Packit 13e616
Packit 13e616
WHITE                   [ \t]+
Packit 13e616
NEW_LINE                \n
Packit 13e616
COMMENT		            \#.*\n
Packit 13e616
WHITE_DOTDOT_WHITE      [ \t]*:[ \t]*
Packit 13e616
WHITE_COMMA_WHITE       [ \t]*,[ \t]*
Packit 13e616
QUOTED_TEXT             \"[^\"]*\"
Packit 13e616
Packit 13e616
%%
Packit 13e616
Packit 13e616
Packit 13e616
{COMMENT}               { SAVE_POS; RESET_NEW_LINE_FLAGS; } /* swallow comment */
Packit 13e616
{WHITE}{NEW_LINE}       { SAVE_POS; RESET_NEW_LINE_FLAGS; } /* trailing blanks with new line */
Packit 13e616
{WHITE}                 { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; }
Packit 13e616
{NEW_LINE}              { SAVE_POS; RESET_NEW_LINE_FLAGS; }
Packit 13e616
Packit 13e616
{QOS_ULPS_START}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_ULPS_START; }
Packit 13e616
{QOS_ULPS_END}          { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_ULPS_END; }
Packit 13e616
Packit 13e616
{PORT_GROUPS_START}     { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_PORT_GROUPS_START; }
Packit 13e616
{PORT_GROUPS_END}       { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_PORT_GROUPS_END; }
Packit 13e616
{PORT_GROUP_START}      { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_PORT_GROUP_START; }
Packit 13e616
{PORT_GROUP_END}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_PORT_GROUP_END; }
Packit 13e616
Packit 13e616
{QOS_SETUP_START}       { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_SETUP_START; }
Packit 13e616
{QOS_SETUP_END}         { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_SETUP_END; }
Packit 13e616
{VLARB_TABLES_START}    { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_VLARB_TABLES_START; }
Packit 13e616
{VLARB_TABLES_END}      { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_VLARB_TABLES_END; }
Packit 13e616
{VLARB_SCOPE_START}     { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_VLARB_SCOPE_START; }
Packit 13e616
{VLARB_SCOPE_END}       { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_VLARB_SCOPE_END; }
Packit 13e616
Packit 13e616
{SL2VL_TABLES_START}    { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_SL2VL_TABLES_START; }
Packit 13e616
{SL2VL_TABLES_END}      { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_SL2VL_TABLES_END; }
Packit 13e616
{SL2VL_SCOPE_START}     { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_SL2VL_SCOPE_START; }
Packit 13e616
{SL2VL_SCOPE_END}       { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_SL2VL_SCOPE_END; }
Packit 13e616
Packit 13e616
{QOS_LEVELS_START}      { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_LEVELS_START; }
Packit 13e616
{QOS_LEVELS_END}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_LEVELS_END; }
Packit 13e616
{QOS_LEVEL_START}       { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_LEVEL_START; }
Packit 13e616
{QOS_LEVEL_END}         { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_LEVEL_END; }
Packit 13e616
Packit 13e616
{QOS_MATCH_RULES_START} { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_MATCH_RULES_START; }
Packit 13e616
{QOS_MATCH_RULES_END}   { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_MATCH_RULES_END; }
Packit 13e616
{QOS_MATCH_RULE_START}  { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_MATCH_RULE_START; }
Packit 13e616
{QOS_MATCH_RULE_END}    { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; return TK_QOS_MATCH_RULE_END; }
Packit 13e616
Packit 13e616
{PORT_GUID}{WHITE_DOTDOT_WHITE}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_PORT_GUID;    return TK_PORT_GUID;  }
Packit 13e616
{PORT_NAME}{WHITE_DOTDOT_WHITE}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_PORT_NAME;    return TK_PORT_NAME;  }
Packit 13e616
{PARTITION}{WHITE_DOTDOT_WHITE}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_PARTITION;    return TK_PARTITION;  }
Packit 13e616
{NODE_TYPE}{WHITE_DOTDOT_WHITE}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_NODE_TYPE;    return TK_NODE_TYPE;  }
Packit 13e616
{NAME}{WHITE_DOTDOT_WHITE}             { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_NAME;         return TK_NAME;       }
Packit 13e616
{USE}{WHITE_DOTDOT_WHITE}              { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_USE;          return TK_USE;        }
Packit 13e616
{GROUP}{WHITE_DOTDOT_WHITE}            { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_GROUP;        return TK_GROUP;      }
Packit 13e616
{VLARB_HIGH}{WHITE_DOTDOT_WHITE}       { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_VLARB_HIGH;   return TK_VLARB_HIGH; }
Packit 13e616
{VLARB_LOW}{WHITE_DOTDOT_WHITE}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_VLARB_LOW;    return TK_VLARB_LOW;  }
Packit 13e616
{VLARB_HIGH_LIMIT}{WHITE_DOTDOT_WHITE} { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_VLARB_HIGH_LIMIT; return TK_VLARB_HIGH_LIMIT;}
Packit 13e616
{TO}{WHITE_DOTDOT_WHITE}               { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_TO;           return TK_TO;         }
Packit 13e616
{FROM}{WHITE_DOTDOT_WHITE}             { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_FROM;         return TK_FROM;       }
Packit 13e616
{ACROSS_TO}{WHITE_DOTDOT_WHITE}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ACROSS_TO;    return TK_ACROSS_TO;  }
Packit 13e616
{ACROSS_FROM}{WHITE_DOTDOT_WHITE}      { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ACROSS_FROM;  return TK_ACROSS_FROM;}
Packit 13e616
{ACROSS}{WHITE_DOTDOT_WHITE}           { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ACROSS;       return TK_ACROSS;     }
Packit 13e616
{SL2VL_TABLE}{WHITE_DOTDOT_WHITE}      { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_SL2VL_TABLE;  return TK_SL2VL_TABLE;}
Packit 13e616
{SL}{WHITE_DOTDOT_WHITE}               { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_SL;           return TK_SL;         }
Packit 13e616
{MTU_LIMIT}{WHITE_DOTDOT_WHITE}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_MTU_LIMIT;    return TK_MTU_LIMIT;  }
Packit 13e616
{RATE_LIMIT}{WHITE_DOTDOT_WHITE}       { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_RATE_LIMIT;   return TK_RATE_LIMIT; }
Packit 13e616
{PACKET_LIFE}{WHITE_DOTDOT_WHITE}      { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_PACKET_LIFE;  return TK_PACKET_LIFE;}
Packit 13e616
{PATH_BITS}{WHITE_DOTDOT_WHITE}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_PATH_BITS;    return TK_PATH_BITS;  }
Packit 13e616
{QOS_CLASS}{WHITE_DOTDOT_WHITE}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_QOS_CLASS;    return TK_QOS_CLASS;  }
Packit 13e616
{SOURCE}{WHITE_DOTDOT_WHITE}           { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_SOURCE;       return TK_SOURCE;     }
Packit 13e616
{DESTINATION}{WHITE_DOTDOT_WHITE}      { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_DESTINATION;  return TK_DESTINATION;}
Packit 13e616
{SERVICE_ID}{WHITE_DOTDOT_WHITE}       { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_SERVICE_ID;   return TK_SERVICE_ID; }
Packit 13e616
{PKEY}{WHITE_DOTDOT_WHITE}             { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_PKEY;         return TK_PKEY;       }
Packit 13e616
{QOS_LEVEL_NAME}{WHITE_DOTDOT_WHITE}   { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_QOS_LEVEL_NAME; return TK_QOS_LEVEL_NAME;}
Packit 13e616
Packit 13e616
{ROUTER}                  { SAVE_POS; if (in_node_type) return TK_NODE_TYPE_ROUTER; yylval = strdup(yytext); return TK_TEXT; }
Packit 13e616
{CA}                      { SAVE_POS; if (in_node_type) return TK_NODE_TYPE_CA;     yylval = strdup(yytext); return TK_TEXT; }
Packit 13e616
{SWITCH}                  { SAVE_POS; if (in_node_type) return TK_NODE_TYPE_SWITCH; yylval = strdup(yytext); return TK_TEXT; }
Packit 13e616
{SELF}                    { SAVE_POS; if (in_node_type) return TK_NODE_TYPE_SELF;   yylval = strdup(yytext); return TK_TEXT; }
Packit 13e616
{ALL}                     { SAVE_POS; if (in_node_type) return TK_NODE_TYPE_ALL;    yylval = strdup(yytext); return TK_TEXT; }
Packit 13e616
Packit 13e616
{ULP_DEFAULT}{WHITE_DOTDOT_WHITE}              { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_DEFAULT; return TK_ULP_DEFAULT; }
Packit 13e616
{ULP_ANY}{WHITE_COMMA_WHITE}{SERVICE_ID}       { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_ANY; return TK_ULP_ANY_SERVICE_ID; }
Packit 13e616
{ULP_ANY}{WHITE_COMMA_WHITE}{PKEY}             { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_ANY; return TK_ULP_ANY_PKEY; }
Packit 13e616
{ULP_ANY}{WHITE_COMMA_WHITE}{TARGET_PORT_GUID} { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_ANY; return TK_ULP_ANY_TARGET_PORT_GUID; }
Packit 13e616
{ULP_ANY}{WHITE_COMMA_WHITE}{SOURCE_PORT_GUID} { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_ANY; return TK_ULP_ANY_SOURCE_PORT_GUID; }
Packit 13e616
{ULP_ANY}{WHITE_COMMA_WHITE}{SOURCE_TARGET_PORT_GUID} { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_ANY; return TK_ULP_ANY_SOURCE_TARGET_PORT_GUID; }
Packit 13e616
Packit 13e616
{ULP_SDP}{WHITE_DOTDOT_WHITE}                  { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_SDP_DEFAULT; return TK_ULP_SDP_DEFAULT; }
Packit 13e616
{ULP_SDP}{WHITE_COMMA_WHITE}{PORT_NUM}         { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_SDP_PORT; return TK_ULP_SDP_PORT; }
Packit 13e616
Packit 13e616
{ULP_RDS}{WHITE_DOTDOT_WHITE}                  { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_RDS_DEFAULT; return TK_ULP_RDS_DEFAULT; }
Packit 13e616
{ULP_RDS}{WHITE_COMMA_WHITE}{PORT_NUM}         { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_RDS_PORT; return TK_ULP_RDS_PORT; }
Packit 13e616
Packit 13e616
{ULP_ISER}{WHITE_DOTDOT_WHITE}                 { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_SDP_DEFAULT; return TK_ULP_ISER_DEFAULT; }
Packit 13e616
{ULP_ISER}{WHITE_COMMA_WHITE}{PORT_NUM}        { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_SDP_PORT; return TK_ULP_ISER_PORT; }
Packit 13e616
Packit 13e616
{ULP_SRP}{WHITE_COMMA_WHITE}{TARGET_PORT_GUID} { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_SRP_GUID; return TK_ULP_SRP_GUID; }
Packit 13e616
Packit 13e616
{ULP_IPOIB}{WHITE_DOTDOT_WHITE}                { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_IPOIB_DEFAULT; return TK_ULP_IPOIB_DEFAULT; }
Packit 13e616
{ULP_IPOIB}{WHITE_COMMA_WHITE}{PKEY}           { SAVE_POS; HANDLE_IF_IN_DESCRIPTION; START_ULP_IPOIB_PKEY; return TK_ULP_IPOIB_PKEY; }
Packit 13e616
Packit 13e616
0[xX][0-9a-fA-F]+  {
Packit 13e616
                        SAVE_POS;
Packit 13e616
                        yylval = strdup(yytext);
Packit 13e616
                        if (in_description || in_list_of_strings || in_single_string)
Packit 13e616
                            return TK_TEXT;
Packit 13e616
                        return TK_NUMBER;
Packit 13e616
                    }
Packit 13e616
Packit 13e616
[0-9]+              {
Packit 13e616
                        SAVE_POS;
Packit 13e616
                        yylval = strdup(yytext);
Packit 13e616
                        if (in_description || in_list_of_strings || in_single_string)
Packit 13e616
                            return TK_TEXT;
Packit 13e616
                        return TK_NUMBER;
Packit 13e616
                    }
Packit 13e616
Packit 13e616
Packit 13e616
-                   {
Packit 13e616
                        SAVE_POS;
Packit 13e616
                        if (in_description || in_list_of_strings || in_single_string)
Packit 13e616
                        {
Packit 13e616
                            yylval = strdup(yytext);
Packit 13e616
                            return TK_TEXT;
Packit 13e616
                        }
Packit 13e616
                        return TK_DASH;
Packit 13e616
                    }
Packit 13e616
Packit 13e616
:                   {
Packit 13e616
                        SAVE_POS;
Packit 13e616
                        if (in_description || in_list_of_strings || in_single_string)
Packit 13e616
                        {
Packit 13e616
                            yylval = strdup(yytext);
Packit 13e616
                            return TK_TEXT;
Packit 13e616
                        }
Packit 13e616
                        return TK_DOTDOT;
Packit 13e616
                    }
Packit 13e616
Packit 13e616
,                   {
Packit 13e616
                        SAVE_POS;
Packit 13e616
                        if (in_description)
Packit 13e616
                        {
Packit 13e616
                            yylval = strdup(yytext);
Packit 13e616
                            return TK_TEXT;
Packit 13e616
                        }
Packit 13e616
                        return TK_COMMA;
Packit 13e616
                    }
Packit 13e616
Packit 13e616
\*                  {
Packit 13e616
                        SAVE_POS;
Packit 13e616
                        if (in_description || in_list_of_strings || in_single_string)
Packit 13e616
                        {
Packit 13e616
                            yylval = strdup(yytext);
Packit 13e616
                            return TK_TEXT;
Packit 13e616
                        }
Packit 13e616
                        return TK_ASTERISK;
Packit 13e616
                    }
Packit 13e616
Packit 13e616
{QUOTED_TEXT}       {
Packit 13e616
                        SAVE_POS;
Packit 13e616
                        yylval = strdup(&yytext[1]);
Packit 13e616
                        yylval[strlen(yylval)-1] = '\0';
Packit 13e616
                        return TK_TEXT;
Packit 13e616
                    }
Packit 13e616
Packit 13e616
.                   { SAVE_POS; yylval = strdup(yytext); return TK_TEXT;}
Packit 13e616
Packit 13e616
<<EOF>>             {
Packit 13e616
                        YY_NEW_FILE;
Packit 13e616
                        yyterminate();
Packit 13e616
                    }
Packit 13e616
%%
Packit 13e616
Packit 13e616
Packit 13e616
/*********************************************
Packit 13e616
 *********************************************/
Packit 13e616
Packit 13e616
static void save_pos()
Packit 13e616
{
Packit 13e616
    int i;
Packit 13e616
    for (i = 0; i < yyleng; i++)
Packit 13e616
    {
Packit 13e616
        if (yytext[i] == '\n')
Packit 13e616
        {
Packit 13e616
            line_num ++;
Packit 13e616
            column_num = 1;
Packit 13e616
        }
Packit 13e616
        else
Packit 13e616
            column_num ++;
Packit 13e616
    }
Packit 13e616
}
Packit 13e616
Packit 13e616
/*********************************************
Packit 13e616
 *********************************************/
Packit 13e616
Packit 13e616
static void reset_new_line_flags()
Packit 13e616
{
Packit 13e616
    in_description = FALSE;
Packit 13e616
    in_list_of_hex_num_ranges = FALSE;
Packit 13e616
    in_node_type = FALSE;
Packit 13e616
    in_list_of_numbers = FALSE;
Packit 13e616
    in_list_of_strings = FALSE;
Packit 13e616
    in_list_of_num_pairs = FALSE;
Packit 13e616
    in_asterisk_or_list_of_numbers = FALSE;
Packit 13e616
    in_list_of_num_ranges = FALSE;
Packit 13e616
    in_single_string = FALSE;
Packit 13e616
    in_single_number = FALSE;
Packit 13e616
}