|
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 |
}
|