Fix ...$ to : $
[obnox/wireshark/wip.git] / plugins / mate / mate_grammar.lemon
index 6b71a53fa6d0159b6d45cbe53b41704c37c8effd..f5f9e03fe4a28a269f6c4e26e44c2cdf70d3926a 100644 (file)
@@ -5,7 +5,7 @@
 *
 * Copyright 2005, Luis E. Garcia Ontanon <luis.ontanon@gmail.com>
 *
-* $Id $
+* $Id$
 *
 * Ethereal - Network traffic analyzer
 * By Gerald Combs <gerald@ethereal.com>
@@ -27,6 +27,7 @@
 */
 
 #include "mate.h"
+#include "mate_grammar.h"
 
 #define DUMMY void*
 
@@ -94,9 +95,9 @@ typedef struct _gog_statements {
        LoAL* current_gogkeys;
 } gog_statement_t;
 
-static void configuration_error(mate_config* mc, gchar* fmt, ...) {
+static void configuration_error(mate_config* mc, const gchar* fmt, ...) {
        static gchar error_buffer[256];
-       gchar* incl;
+       const gchar* incl;
        gint i;
        mate_config_frame* current_frame;
        va_list list;
@@ -357,6 +358,8 @@ action_mode(A) ::= INSERT_KW. { A = AVPL_INSERT; }
 pdu_decl ::= PDU_KW NAME(NAME) PROTO_KW field(FIELD) TRANSPORT_KW proto_stack(STACK) pdu_setup(SETUP) SEMICOLON. {
        mate_cfg_pdu* cfg  = new_pducfg(NAME);
        extraction_t *extraction, *next_extraction;
+       GPtrArray* transport_stack = g_ptr_array_new();
+       int i;
        
        if (! cfg ) configuration_error(mc,"could not create Pdu %s.",NAME);
 
@@ -367,8 +370,15 @@ pdu_decl ::= PDU_KW NAME(NAME) PROTO_KW field(FIELD) TRANSPORT_KW proto_stack(ST
        cfg->drop_unassigned = (SETUP->flags) ? SETUP->flags->drop_unassigned : mc->defaults.pdu.drop_unassigned;
        
        g_string_sprintfa(mc->protos_filter,"||%s",FIELD->abbrev);
+
+       /* flip the transport_stack */
+       for (i = STACK->len - 1; STACK->len; i--) {
+               g_ptr_array_add(transport_stack,g_ptr_array_remove_index(STACK,i));
+       }
+       
+       g_ptr_array_free(STACK,FALSE);
        
-       cfg->transport_ranges = STACK;
+       cfg->transport_ranges = transport_stack;
        cfg->payload_ranges = SETUP->payload;
        
        if (SETUP->criteria) {