xref: /openbsd-src/sbin/isakmpd/constants.c (revision e789a0dbec9b2860c6b3ab7cf19fc43325f8e264)
1 /* $OpenBSD: constants.c,v 1.10 2005/04/08 22:32:09 cloder 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 "constants.h"
36 
37 int
constant_value(struct constant_map * map,char * name)38 constant_value(struct constant_map *map, char *name)
39 {
40 	struct constant_map *entry = map;
41 
42 	for (entry = map; entry->name; entry++)
43 		if (strcasecmp(entry->name, name) == 0)
44 			return entry->value;
45 	return 0;
46 }
47 
48 char *
constant_lookup(struct constant_map * map,int value)49 constant_lookup(struct constant_map *map, int value)
50 {
51 	struct constant_map *entry = map;
52 
53 	for (entry = map; entry->name; entry++)
54 		if (entry->value == value)
55 			return entry->name;
56 	return 0;
57 }
58 
59 struct constant_map *
constant_link_lookup(struct constant_map * map,int value)60 constant_link_lookup(struct constant_map *map, int value)
61 {
62 	struct constant_map *entry = map;
63 
64 	for (entry = map; entry->name; entry++)
65 		if (entry->value == value)
66 			return entry->link;
67 	return 0;
68 }
69 
70 char *
constant_name(struct constant_map * map,int value)71 constant_name(struct constant_map *map, int value)
72 {
73 	static char     tmp[32];/* XXX Ugly, I know.  */
74 	char           *retval = constant_lookup(map, value);
75 
76 	if (!retval) {
77 		snprintf(tmp, sizeof tmp, "<Unknown %d>", value);
78 		return tmp;
79 	}
80 	return retval;
81 }
82 
83 char *
constant_name_maps(struct constant_map ** maps,int value)84 constant_name_maps(struct constant_map **maps, int value)
85 {
86 	static char     tmp[32];/* XXX Ugly, I know.  */
87 	char           *retval;
88 	struct constant_map **map;
89 
90 	for (map = maps; *map; map++) {
91 		retval = constant_lookup(*map, value);
92 		if (retval)
93 			return retval;
94 	}
95 	snprintf(tmp, sizeof tmp, "<Unknown %d>", value);
96 	return tmp;
97 }
98