1 | /*************************************** 2 | $Revision: 1.5 $ 3 | 4 | Error reporting (er) er_arrays.c - auxiliary routines for parameter arrays 5 | 6 | Status: NOT REVUED, PARTLY TESTED 7 | 8 | Design and implementation by: Marek Bukowy 9 | 10 | ******************/ /****************** 11 | Copyright (c) 1999,2000,2001,2002 RIPE NCC 12 | 13 | All Rights Reserved 14 | 15 | Permission to use, copy, modify, and distribute this software and its 16 | documentation for any purpose and without fee is hereby granted, 17 | provided that the above copyright notice appear in all copies and that 18 | both that copyright notice and this permission notice appear in 19 | supporting documentation, and that the name of the author not be 20 | used in advertising or publicity pertaining to distribution of the 21 | software without specific, written prior permission. 22 | 23 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 24 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL 25 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 26 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 27 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 28 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 29 | ***************************************/ 30 | 31 | #include "rip.h" 32 | 33 | er_ret_t er_getsevval(char *sev) 34 | { 35 | int i; 36 | 37 | for(i=0; er_level_a[i].sev != 0; i++) { 38 | if( strcasecmp(er_level_a[i].chr, sev) == 0 ) { 39 | return er_level_a[i].sev; 40 | } 41 | } 42 | 43 | return 0; 44 | } 45 | 46 | char *er_getsevsym( int sev, int mode ) 47 | { 48 | int i; 49 | 50 | for(i=0; er_level_a[i].sev != 0; i++) { 51 | if (er_level_a[i].sev == sev) { 52 | break; 53 | } 54 | } 55 | 56 | switch( mode & 0x03 ) { 57 | case ER_M_SEVCHAR: /* one-letter severity indication */ 58 | return er_level_a[i].chr; 59 | case ER_M_SEVLONG: /* long severity indication */ 60 | return er_level_a[i].txt; 61 | } 62 | 63 | /* no severity indication */ 64 | return ""; /* "" goes to program text, so returning a 65 | pointer to it is OK */ 66 | } 67 | 68 | char *er_getfacsym(er_fac_code_t faccode) 69 | { 70 | int facidx; 71 | 72 | if( faccode != FAC_NONE ) { 73 | for (facidx=0; facidx<FAC_LAST; facidx++) { 74 | if( er_fac_err[facidx].code == faccode ) { 75 | break; 76 | } 77 | } 78 | return er_fac_err[facidx].name; 79 | } 80 | else return ""; 81 | } 82 | 83 | er_mask_t er_getfacval(char *key) 84 | { 85 | int i; 86 | 87 | for(i=0; er_fac_err[i].code != -1; i++) { 88 | if(strcasecmp(key,er_fac_err[i].name) == 0) { 89 | return er_fac_err[i].code; 90 | } 91 | } 92 | 93 | return 0; 94 | } 95 | 96 | mask_t er_getfacallmask(void) 97 | { 98 | int i = FAC_NONE; 99 | mask_t all = MA_new(MA_END); 100 | 101 | while( ++i != FAC_LAST ) { 102 | MA_set(&all, (unsigned) i, 1); 103 | } 104 | return all; 105 | } 106 | 107 | unsigned int er_getaspval(char *key) 108 | { 109 | int i; 110 | 111 | for(i=0; er_asparr[i].n != NULL; i++) { 112 | if(strcasecmp(key,er_asparr[i].n) == 0) { 113 | return er_asparr[i].v; 114 | } 115 | } 116 | 117 | return 0; 118 | } 119 | 120 | 121 | 122 | 123 | void er_getaspsym(mask_t facmask, int asp, GString *g_reply) 124 | { 125 | int i, found=0; 126 | 127 | for(i=0; er_asparr[i].n != NULL; i++) { 128 | if( MA_isset(facmask, er_asparr[i].f) && asp == er_asparr[i].v) { 129 | g_string_sprintfa(g_reply, "%s|", er_asparr[i].n); 130 | found = 1; 131 | } 132 | } 133 | 134 | if( !found ) { 135 | g_string_sprintfa(g_reply, "0x%x|", asp); 136 | } 137 | 138 | g_string_truncate(g_reply, (int)strlen(g_reply->str)-1); 139 | 140 | } 141 | 142 | er_path_mt er_getpathval(char *key) 143 | { 144 | int i; 145 | 146 | for(i=0; er_pathtypes[i] != NULL; i++) { 147 | if(strcasecmp(key,er_pathtypes[i]) == 0) { 148 | return i; 149 | } 150 | } 151 | 152 | return -1; 153 | } 154 | 155 | int er_getformatval(char *key) 156 | { 157 | int i; 158 | 159 | for(i=0; er_formarr[i].n != NULL; i++) { 160 | if(strcasecmp(key,er_formarr[i].n) == 0) { 161 | return er_formarr[i].v; 162 | } 163 | } 164 | 165 | return -1; 166 | } 167 |