xref: /openbsd-src/sbin/isakmpd/constants.c (revision db3296cf5c1dd9058ceecc3a29fe4aaa0bd26000)
1 /*	$OpenBSD: constants.c,v 1.8 2003/06/03 14:28:16 ho Exp $	*/
2 /*	$EOM: constants.c,v 1.7 1999/04/02 00:57:31 niklas Exp $	*/
3 
4 /*
5  * Copyright (c) 1998, 1999 Niklas Hallqvist.  All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 /*
29  * This code was written under funding by Ericsson Radio Systems.
30  */
31 
32 #include <stdio.h>
33 #include <string.h>
34 
35 #include "sysdep.h"
36 
37 #include "constants.h"
38 
39 int
40 constant_value (struct constant_map *map, char *name)
41 {
42   struct constant_map *entry = map;
43 
44   for (entry = map; entry->name; entry++)
45     if (strcasecmp (entry->name, name) == 0)
46       return entry->value;
47   return 0;
48 }
49 
50 char *
51 constant_lookup (struct constant_map *map, int value)
52 {
53   struct constant_map *entry = map;
54 
55   for (entry = map; entry->name; entry++)
56     if (entry->value == value)
57       return entry->name;
58   return 0;
59 }
60 
61 struct constant_map *
62 constant_link_lookup (struct constant_map *map, int value)
63 {
64   struct constant_map *entry = map;
65 
66   for (entry = map; entry->name; entry++)
67     if (entry->value == value)
68       return entry->link;
69   return 0;
70 }
71 
72 char *
73 constant_name (struct constant_map *map, int value)
74 {
75   static char tmp[32];		/* XXX Ugly, I know.  */
76   char *retval = constant_lookup (map, value);
77 
78   if (!retval)
79     {
80       snprintf (tmp, sizeof tmp, "<Unknown %d>", value);
81       return tmp;
82     }
83   return retval;
84 }
85 
86 char *
87 constant_name_maps (struct constant_map **maps, int value)
88 {
89   static char tmp[32];		/* XXX Ugly, I know.  */
90   char *retval;
91   struct constant_map **map;
92 
93   for (map = maps; *map; map++)
94     {
95       retval = constant_lookup (*map, value);
96       if (retval)
97 	return retval;
98     }
99   snprintf (tmp, sizeof tmp, "<Unknown %d>", value);
100   return tmp;
101 }
102