]> git.ipfire.org Git - people/ms/strongswan.git/blame - programs/charon/lib/types.c
- import of strongswan-2.7.0
[people/ms/strongswan.git] / programs / charon / lib / types.c
CommitLineData
f1a8e321
MW
1/**
2 * @file types.c
3 *
b23b556a 4 * @brief Generic types.
f1a8e321
MW
5 *
6 */
7
8/*
9 * Copyright (C) 2005 Jan Hutter, Martin Willi
10 * Hochschule fuer Technik Rapperswil
11 *
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public License as published by the
14 * Free Software Foundation; either version 2 of the License, or (at your
15 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20 * for more details.
21 */
5113680f
MW
22
23#include <string.h>
24
f1a8e321
MW
25#include "types.h"
26
27
b23b556a
JH
28/**
29 * String mappings for type status_t.
30 */
f1a8e321
MW
31mapping_t status_m[] = {
32 {SUCCESS, "SUCCESS"},
33 {FAILED, "FAILED"},
34 {OUT_OF_RES, "OUT_OF_RES"},
35 {ALREADY_DONE, "ALREADY_DONE"},
36 {NOT_SUPPORTED, "NOT_SUPPORTED"},
37 {INVALID_ARG, "INVALID_ARG"},
38 {NOT_FOUND, "NOT_FOUND"},
39 {PARSE_ERROR, "PARSE_ERROR"},
40 {VERIFY_ERROR, "VERIFY_ERROR"},
41 {INVALID_STATE, "INVALID_STATE"},
56aeee49 42 {DELETE_ME, "DELETE_ME"},
e314700c 43 {CREATED, "CREATED"},
f1a8e321
MW
44 {MAPPING_END, NULL}
45};
46
b23b556a
JH
47/**
48 * Empty chunk.
49 */
da932591 50chunk_t CHUNK_INITIALIZER = {NULL,0};
5113680f
MW
51
52/**
53 * Described in header.
54 */
55chunk_t chunk_clone(chunk_t chunk)
56{
57 chunk_t clone = CHUNK_INITIALIZER;
58
59 if (chunk.ptr && chunk.len > 0)
60 {
61 clone.ptr = malloc(chunk.len);
62 clone.len = chunk.len;
63 memcpy(clone.ptr, chunk.ptr, chunk.len);
64 }
65
66 return clone;
67}
68
69/**
70 * Described in header.
71 */
72void chunk_free(chunk_t *chunk)
73{
74 free(chunk->ptr);
75 chunk->ptr = NULL;
76 chunk->len = 0;
77}
78
79/**
80 * Described in header.
81 */
82chunk_t chunk_alloc(size_t bytes)
83{
84 chunk_t new_chunk;
85 new_chunk.ptr = malloc(bytes);
86 new_chunk.len = bytes;
87 return new_chunk;
88}
89
ec6582cc
MW
90/**
91 * Described in header.
92 */
93bool chunk_equals(chunk_t a, chunk_t b)
94{
95 if (a.ptr == NULL || b.ptr == NULL ||
96 a.len != b.len ||
97 memcmp(a.ptr, b.ptr, a.len) != 0)
98 {
99 return FALSE;
100 }
101 return TRUE;
102}
5113680f
MW
103
104/**
105 * Described in header.
106 */
107void *clalloc(void * pointer, size_t size)
108{
5113680f
MW
109 void *data;
110 data = malloc(size);
111
112 memcpy(data, pointer,size);
113
114 return (data);
115}