source: rtems-libbsd/freebsd/lib/libipsec/ipsec_strerror.c @ d48955b

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since d48955b was d48955b, checked in by Sebastian Huber <sebastian.huber@…>, on 11/06/13 at 08:02:16

Add and use <machine/rtems-bsd-user-space.h>

  • Property mode set to 100644
File size: 3.5 KB
Line 
1#include <machine/rtems-bsd-user-space.h>
2
3/*      $KAME: ipsec_strerror.c,v 1.7 2000/07/30 00:45:12 itojun Exp $  */
4
5/*
6 * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 *    notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in the
16 *    documentation and/or other materials provided with the distribution.
17 * 3. Neither the name of the project nor the names of its contributors
18 *    may be used to endorse or promote products derived from this software
19 *    without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34#include <sys/cdefs.h>
35__FBSDID("$FreeBSD$");
36
37#include <rtems/bsd/sys/types.h>
38#include <rtems/bsd/sys/param.h>
39
40#include <string.h>
41#include <netipsec/ipsec.h>
42
43#include "ipsec_strerror.h"
44
45int __ipsec_errcode;
46
47static const char *ipsec_errlist[] = {
48"Success",                                      /*EIPSEC_NO_ERROR*/
49"Not supported",                                /*EIPSEC_NOT_SUPPORTED*/
50"Invalid argument",                             /*EIPSEC_INVAL_ARGUMENT*/
51"Invalid sadb message",                         /*EIPSEC_INVAL_SADBMSG*/
52"Invalid version",                              /*EIPSEC_INVAL_VERSION*/
53"Invalid security policy",                      /*EIPSEC_INVAL_POLICY*/
54"Invalid address specification",                /*EIPSEC_INVAL_ADDRESS*/
55"Invalid ipsec protocol",                       /*EIPSEC_INVAL_PROTO*/
56"Invalid ipsec mode",                           /*EIPSEC_INVAL_MODE*/
57"Invalid ipsec level",                          /*EIPSEC_INVAL_LEVEL*/
58"Invalid SA type",                              /*EIPSEC_INVAL_SATYPE*/
59"Invalid message type",                         /*EIPSEC_INVAL_MSGTYPE*/
60"Invalid extension type",                       /*EIPSEC_INVAL_EXTTYPE*/
61"Invalid algorithm type",                       /*EIPSEC_INVAL_ALGS*/
62"Invalid key length",                           /*EIPSEC_INVAL_KEYLEN*/
63"Invalid address family",                       /*EIPSEC_INVAL_FAMILY*/
64"Invalid prefix length",                        /*EIPSEC_INVAL_PREFIXLEN*/
65"Invalid direciton",                            /*EIPSEC_INVAL_DIR*/
66"SPI range violation",                          /*EIPSEC_INVAL_SPI*/
67"No protocol specified",                        /*EIPSEC_NO_PROTO*/
68"No algorithm specified",                       /*EIPSEC_NO_ALGS*/
69"No buffers available",                         /*EIPSEC_NO_BUFS*/
70"Must get supported algorithms list first",     /*EIPSEC_DO_GET_SUPP_LIST*/
71"Protocol mismatch",                            /*EIPSEC_PROTO_MISMATCH*/
72"Family mismatch",                              /*EIPSEC_FAMILY_MISMATCH*/
73"Too few arguments",                            /*EIPSEC_FEW_ARGUMENTS*/
74NULL,                                           /*EIPSEC_SYSTEM_ERROR*/
75"Unknown error",                                /*EIPSEC_MAX*/
76};
77
78const char *ipsec_strerror(void)
79{
80        if (__ipsec_errcode < 0 || __ipsec_errcode > EIPSEC_MAX)
81                __ipsec_errcode = EIPSEC_MAX;
82
83        return ipsec_errlist[__ipsec_errcode];
84}
85
86void __ipsec_set_strerror(const char *str)
87{
88        __ipsec_errcode = EIPSEC_SYSTEM_ERROR;
89        ipsec_errlist[EIPSEC_SYSTEM_ERROR] = str;
90
91        return;
92}
Note: See TracBrowser for help on using the repository browser.