/*====================================================================* * * Copyright (c) 2013 Qualcomm Atheros, Inc. * * All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted (subject to the limitations * in the disclaimer below) provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * * Neither the name of Qualcomm Atheros nor the names of * its contributors may be used to endorse or promote products * derived from this software without specific prior written * permission. * * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE * COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *--------------------------------------------------------------------*/ /*====================================================================* * * void ruledump (struct rule * rule, FILE * fp); * * *--------------------------------------------------------------------*/ #ifndef RULEDUMP_SOURCE #define RULEDUMP_SOURCE #include <stdio.h> #include "../tools/memory.h" #include "../plc/rules.h" /*====================================================================* * * cspec_dump (struct cspec * cspec); * * *--------------------------------------------------------------------*/ void cspec_dump (struct cspec * cspec) { printf ("cspec->CSPEC_VERSION=%d\n", LE16TOH (cspec->CSPEC_VERSION)); printf ("cspec->VLAN_TAG=%d\n", LE16TOH (cspec->VLAN_TAG)); return; } /*====================================================================* * * MMEClassifierDump (struct MMEClassifier * classifier); * * *--------------------------------------------------------------------*/ void MMEClassifierDump (struct MMEClassifier * classifier) { char string [48]; printf ("classifier->CR_PID=0x%02X\n", (unsigned)(classifier->CR_PID)); printf ("classifier->CR_OPERAND=0x%02X\n", classifier->CR_OPERAND); hexdecode (classifier->CR_VALUE, sizeof (classifier->CR_VALUE), string, sizeof (string)); printf ("classifier->CR_VALUE=%s\n", string); return; } /*====================================================================* * * PIBClassifierDump (struct PIBClassifier * classifier); * * *--------------------------------------------------------------------*/ void PIBClassifierDump (struct PIBClassifier * classifier) { char string [48]; printf ("classifier->CR_PID=0x%08X\n", LE32TOH (classifier->CR_PID)); printf ("classifier->CR_OPERAND=0x%08X\n", LE32TOH (classifier->CR_OPERAND)); hexdecode (classifier->CR_VALUE, sizeof (classifier->CR_VALUE), string, sizeof (string)); printf ("classifier->CR_VALUE=%s\n", string); return; } /*====================================================================* * * MMERuleDump (struct MMERule * rule); * * *--------------------------------------------------------------------*/ void MMERuleDump (struct MMERule * rule) { unsigned count; printf ("rule->MCONTROL=%d\n", rule->MCONTROL); printf ("rule->MVOLATILITY=%d\n", rule->MVOLATILITY); printf ("rule->MACTION=%d\n", rule->MACTION); printf ("rule->MOPERAND=%d\n", rule->MOPERAND); printf ("rule->NUM_CLASSIFIERS=%d\n", rule->NUM_CLASSIFIERS); for (count = 0; count < rule->NUM_CLASSIFIERS; count++) { MMEClassifierDump (&rule->CLASSIFIER [count]); } cspec_dump (&rule->cspec); printf ("\n"); return; } /*====================================================================* * * PIBRuleDump (struct PIBRule * rule); * * *--------------------------------------------------------------------*/ void PIBRuleDump (struct PIBRule * rule) { unsigned count; printf ("rule->MCONTROL=%d\n", rule->MCONTROL); printf ("rule->MVOLATILITY=%d\n", rule->MVOLATILITY); printf ("rule->MACTION=%d\n", rule->MACTION); printf ("rule->MOPERAND=%d\n", rule->MOPERAND); printf ("rule->NUM_CLASSIFIERS=%d\n", LE32TOH (rule->NUM_CLASSIFIERS)); for (count = 0; count < LE32TOH (rule->NUM_CLASSIFIERS); count++) { PIBClassifierDump (&rule->CLASSIFIER [count]); } cspec_dump (&rule->cspec); printf ("\n"); return; } /*====================================================================* * * classifier_priority_map_dump (struct classifier_priority_map * classifier_priority_map); * * *--------------------------------------------------------------------*/ void classifier_priority_map_dump (struct classifier_priority_map * classifier_priority_map) { printf ("classifier_priority_map->Priority=%d\n", LE32TOH (classifier_priority_map->Priority)); PIBClassifierDump (&classifier_priority_map->CLASSIFIER); return; } /*====================================================================* * * auto_connection_dump (struct auto_connection * auto_connection); * * *--------------------------------------------------------------------*/ void auto_connection_dump (struct auto_connection * auto_connection) { unsigned count; printf ("auto_connection->MACTION=%d\n", auto_connection->MACTION); printf ("auto_connection->MOPERAND=%d\n", auto_connection->MOPERAND); printf ("auto_connection->NUM_CLASSIFIERS=%d\n", LE16TOH (auto_connection->NUM_CLASSIFIERS)); for (count = 0; count < LE16TOH (auto_connection->NUM_CLASSIFIERS); count++) { PIBClassifierDump (&auto_connection->CLASSIFIER [count]); } cspec_dump (&auto_connection->cspec); return; } /*====================================================================* * * PIBClassifiersDump (struct PIBClassifiers * classifiers); * * *--------------------------------------------------------------------*/ void PIBClassifiersDump (struct PIBClassifiers * classifiers) { unsigned count; printf ("classifiers->priority_count=%d\n", LE32TOH (classifiers->priority_count)); printf ("classifiers->autoconn_count=%d\n", LE32TOH (classifiers->autoconn_count)); printf ("\n"); printf ("-------- PRIORITY MAPS --------\n\n"); for (count = 0; count < LE32TOH (classifiers->priority_count); count++) { classifier_priority_map_dump (&classifiers->classifier_priority_map [count]); } printf ("\n"); printf ("-------- AUTO CONNECTIONS --------\n\n"); for (count = 0; count < LE32TOH (classifiers->autoconn_count); count++) { auto_connection_dump (&classifiers->auto_connection [count]); } printf ("\n"); return; } /*====================================================================* * *--------------------------------------------------------------------*/ #endif