00001 #ifndef _IP_H 00002 #define _IP_H 00003 00004 /* 00005 * Copyright (C) 2001-2002 by egnite Software GmbH. All rights reserved. 00006 * 00007 * Redistribution and use in source and binary forms, with or without 00008 * modification, are permitted provided that the following conditions 00009 * are met: 00010 * 00011 * 1. Redistributions of source code must retain the above copyright 00012 * notice, this list of conditions and the following disclaimer. 00013 * 2. Redistributions in binary form must reproduce the above copyright 00014 * notice, this list of conditions and the following disclaimer in the 00015 * documentation and/or other materials provided with the distribution. 00016 * 3. All advertising materials mentioning features or use of this 00017 * software must display the following acknowledgement: 00018 * 00019 * This product includes software developed by egnite Software GmbH 00020 * and its contributors. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY EGNITE SOFTWARE GMBH AND CONTRIBUTORS 00023 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00024 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00025 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EGNITE 00026 * SOFTWARE GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00027 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00028 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 00029 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 00030 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00031 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 00032 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00033 * SUCH DAMAGE. 00034 * 00035 * For additional information see http://www.ethernut.de/ 00036 * 00037 * - 00038 * Portions Copyright (c) 1993 by Digital Equipment Corporation. 00039 * 00040 * Permission to use, copy, modify, and distribute this software for any 00041 * purpose with or without fee is hereby granted, provided that the above 00042 * copyright notice and this permission notice appear in all copies, and that 00043 * the name of Digital Equipment Corporation not be used in advertising or 00044 * publicity pertaining to distribution of the document or software without 00045 * specific, written prior permission. 00046 * 00047 * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL 00048 * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES 00049 * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT 00050 * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 00051 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 00052 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS 00053 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 00054 * SOFTWARE. 00055 */ 00056 00057 /* 00058 * $Log: ip.h,v $ 00059 * Revision 1.1 2002/08/01 17:34:30 harald 00060 * First check in 00061 * 00062 */ 00063 00064 #include "types.h" 00065 00066 /*! 00067 * \addtogroup xgStack 00068 */ 00069 /*@{*/ 00070 00071 #define INADDR_BROADCAST (u_long)0xffffffff 00072 00073 /* 00074 * Protocols 00075 */ 00076 #define IPPROTO_IP 0 /*!< \brief Dummy for IP. */ 00077 #define IPPROTO_ICMP 1 /*!< \brief Control message protocol. */ 00078 #define IPPROTO_TCP 6 /*!< \brief Transmission control protocol. */ 00079 #define IPPROTO_UDP 17 /*!< \brief User datagram protocol. */ 00080 00081 #define IPVERSION 4 /*!< \brief IP protocol version. */ 00082 00083 #define IP_DF 0x4000 /*!< \brief Don't fragment flag. */ 00084 #define IP_MF 0x2000 /*!< \brief More fragments flag. */ 00085 #define IP_OFFMASK 0x1fff /*!< \brief Mask for fragmenting bits. */ 00086 00087 typedef struct ip { 00088 u_char ip_hl:4, /*!< \brief Header length. */ 00089 ip_v:4; /*!< \brief Version. */ 00090 u_char ip_tos; /*!< \brief Type of service. */ 00091 short ip_len; /*!< \brief Total length. */ 00092 u_short ip_id; /*!< \brief Identification. */ 00093 short ip_off; /*!< \brief Fragment offset field. */ 00094 u_char ip_ttl; /*!< \brief Time to live. */ 00095 u_char ip_p; /*!< \brief Protocol. */ 00096 u_short ip_sum; /*!< \brief Checksum. */ 00097 u_long ip_src; /*!< \brief Source IP address. */ 00098 u_long ip_dst; /*!< \brief Destination IP address. */ 00099 } IPHDR; 00100 00101 /*@}*/ 00102 00103 extern u_short IpChkSum(u_short partial_csum, void *buf, u_short count); 00104 extern int IpInput(u_char proto, u_short tms); 00105 extern int IpOutput(u_long dst, u_char proto, u_short len); 00106 00107 #endif