freebsd-dev/sys/netns/ns_error.h
peter a5782dd663 Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"
is an application space macro and the applications are supposed to be free
to use it as they please (but cannot).  This is consistant with the other
BSD's who made this change quite some time ago.  More commits to come.
1999-12-29 04:46:21 +00:00

97 lines
3.9 KiB
C

/*
* Copyright (c) 1984, 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)ns_error.h 8.1 (Berkeley) 6/10/93
* $FreeBSD$
*/
#ifndef _NETNS_NS_ERROR_H_
#define _NETNS_NS_ERROR_H_
/*
* Xerox NS error messages
*/
struct ns_errp {
u_short ns_err_num; /* Error Number */
u_short ns_err_param; /* Error Parameter */
struct idp ns_err_idp; /* Initial segment of offending
packet */
u_char ns_err_lev2[12]; /* at least this much higher
level protocol */
};
struct ns_epidp {
struct idp ns_ep_idp;
struct ns_errp ns_ep_errp;
};
#define NS_ERR_UNSPEC 0 /* Unspecified Error detected at dest. */
#define NS_ERR_BADSUM 1 /* Bad Checksum detected at dest */
#define NS_ERR_NOSOCK 2 /* Specified socket does not exist at dest*/
#define NS_ERR_FULLUP 3 /* Dest. refuses packet due to resource lim.*/
#define NS_ERR_UNSPEC_T 0x200 /* Unspec. Error occured before reaching dest*/
#define NS_ERR_BADSUM_T 0x201 /* Bad Checksum detected in transit */
#define NS_ERR_UNREACH_HOST 0x202 /* Dest cannot be reached from here*/
#define NS_ERR_TOO_OLD 0x203 /* Packet x'd 15 routers without delivery*/
#define NS_ERR_TOO_BIG 0x204 /* Packet too large to be forwarded through
some intermediate gateway. The error
parameter field contains the max packet
size that can be accommodated */
#define NS_ERR_MAX 20
/*
* Variables related to this implementation
* of the network systems error message protocol.
*/
struct ns_errstat {
/* statistics related to ns_err packets generated */
int ns_es_error; /* # of calls to ns_error */
int ns_es_oldshort; /* no error 'cuz old ip too short */
int ns_es_oldns_err; /* no error 'cuz old was ns_err */
int ns_es_outhist[NS_ERR_MAX];
/* statistics related to input messages processed */
int ns_es_badcode; /* ns_err_code out of range */
int ns_es_tooshort; /* packet < IDP_MINLEN */
int ns_es_checksum; /* bad checksum */
int ns_es_badlen; /* calculated bound mismatch */
int ns_es_reflect; /* number of responses */
int ns_es_inhist[NS_ERR_MAX];
u_short ns_es_codes[NS_ERR_MAX];/* which error code for outhist
since we might not know all */
};
#ifdef _KERNEL
struct ns_errstat ns_errstat;
#endif
#endif