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 |