⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ip.h

📁 VRTX 商用嵌入式实时操作系统
💻 H
字号:
/***************************************************************************
*
*               Copyright (c) 1993 READY SYSTEMS CORPORATION.
*
*       All rights reserved. READY SYSTEMS' source code is an unpublished
*       work and the use of a copyright notice does not imply otherwise.
*       This source code contains confidential, trade secret material of
*       READY SYSTEMS. Any attempt or participation in deciphering, decoding,
*       reverse engineering or in any way altering the source code is
*       strictly prohibited, unless the prior written consent of
*       READY SYSTEMS is obtained.
*
*
*       Module Name:            ip.h
*
*       Identification:         @(#) 2.2 ip.h
*
*       Date:                   9/16/94  17:36:03
*
****************************************************************************
*/

/*
 RCS header identifier - $Id: ip.h,v 1.1 1995/05/03 02:10:08 nenad Exp nenad $
*/
/*
 * Copyrighted as an unpublished work.
 * (c) Copyright 1987-1993 Lachman Technology, Incorporated
 * All rights reserved.
 * 
 * RESTRICTED RIGHTS
 * 
 * These programs are supplied under a license.  They may be used,
 * disclosed, and/or copied only as permitted under such license
 * agreement.  Any copy must contain the above copyright notice and
 * this restricted rights notice.  Use, copying, and/or disclosure
 * of the programs is strictly prohibited unless otherwise provided
 * in the license agreement.
 */
/*
 * Copyright (c) 1985 Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the University of California, Berkeley.  The name of the
 * University may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

#ifndef ip_h
#define ip_h

#ifdef __cplusplus
extern "C" {
#endif

/* ip.h	6.1	83/07/29	 */

/*
 * Definitions for internet protocol version 4. Per RFC 791, September 1981. 
 */
#define	IPVERSION	4

/*
 * Structure of an internet header, naked of options. 
 *
 * We declare ip_len and ip_off to be short, rather than u_short pragmatically
 * since otherwise unsigned comparisons can result against negative integers
 * quite easily, and fail in subtle ways. 
 */
struct ip {
#if defined(vax) || defined(i386) || defined(I960)
	u_char          ip_hl:4,/* header length */
	                ip_v:4;	/* version */
#else
	u_char          ip_v:4,	/* version */
	                ip_hl:4;/* header length */
#endif
	u_char          ip_tos;	/* type of service in IP hdr */
	short           ip_len;	/* total length */
	u_short         ip_id;	/* identification */
	short           ip_off;	/* fragment offset field */
#define	IP_DF 0x4000		/* dont fragment flag */
#define	IP_MF 0x2000		/* more fragments flag */
	u_char          ip_ttl;	/* time to live */
	u_char          ip_p;	/* protocol */
	u_short         ip_sum;	/* checksum */
	struct in_addr  ip_src, ip_dst;	/* source and dest address */
};

/*
 * Definitions for IP type of service (ip_tos)
 */
#define IPTOS_LOWDELAY		0x10
#define IPTOS_THROUGHPUT	0x08
#define IPTOS_RELIABILITY	0x04

/*
 * Definitions for IP precedence (also in ip_tos) (hopefully unused)
 */
#define IPTOS_PREC_NETCONTROL		0xe0
#define IPTOS_PREC_INTERNETCONTROL	0xc0
#define IPTOS_PREC_CRITIC_ECP		0xa0
#define IPTOS_PREC_FLASHOVERRIDE	0x80
#define IPTOS_PREC_FLASH		0x60
#define IPTOS_PREC_IMMEDIATE		0x40
#define IPTOS_PREC_PRIORITY		0x20
#define IPTOS_PREC_ROUTINE		0x00

#define IPPREC(x)		((u_char) (x) & 0xe0)
#define IPTOS(x)		((u_char) (x) & 0x1c)

#define IP_MAXPACKET 65535		/* maximum packet size */
/*
 * Definitions for options. 
 */
#define	IPOPT_COPIED(o)		((o)&0x80)
#define	IPOPT_CLASS(o)		((o)&0x60)
#define	IPOPT_NUMBER(o)		((o)&0x1f)

#define	IPOPT_CONTROL		0x00
#define	IPOPT_RESERVED1		0x20
#define	IPOPT_DEBMEAS		0x40
#define	IPOPT_RESERVED2		0x60

#define	IPOPT_EOL		0	/* end of option list */
#define	IPOPT_NOP		1	/* no operation */

#define	IPOPT_RR		7	/* record packet route */
#define	IPOPT_TS		68	/* timestamp */
#define	IPOPT_SECURITY		130	/* provide s,c,h,tcc */
#define	IPOPT_LSRR		131	/* loose source route */
#define	IPOPT_SATID		136	/* satnet id */
#define	IPOPT_SSRR		137	/* strict source route */

/*
 * Offsets to fields in options other than EOL and NOP. 
 */
#define	IPOPT_OPTVAL		0	/* option ID */
#define	IPOPT_OLEN		1	/* option length */
#define IPOPT_OFFSET		2	/* offset within option */
#define	IPOPT_MINOFF		4	/* min value of above */

/*
 * Time stamp option structure. 
 */
struct ip_timestamp {
	u_char          ipt_code;	/* IPOPT_TS */
	u_char          ipt_len;/* size of structure (variable) */
	u_char          ipt_ptr;/* index of current entry */
#if defined(vax) || defined(i386) || defined(I960)
	u_char          ipt_flg:4,	/* flags, see below */
	                ipt_oflw:4;	/* overflow counter */
#else
	u_char          ipt_oflw:4,	/* overflow counter */
	                ipt_flg:4;	/* flags, see below */
#endif
	union ipt_timestamp {
		n_long          ipt_time[1];
		struct ipt_ta {
			struct in_addr  ipt_addr;
			n_long          ipt_time;
		}               ipt_ta[1];
	} ipt_timestamp;
};

/* flag bits for ipt_flg */
#define	IPOPT_TS_TSONLY		0	/* timestamps only */
#define	IPOPT_TS_TSANDADDR	1	/* timestamps and addresses */
#define	IPOPT_TS_PRESPEC	2	/* specified modules only */

/* bits for security (not byte swapped) */
#define	IPOPT_SECUR_UNCLASS	0x0000
#define	IPOPT_SECUR_CONFID	0xf135
#define	IPOPT_SECUR_EFTO	0x789a
#define	IPOPT_SECUR_MMMM	0xbc4d
#define	IPOPT_SECUR_RESTR	0xaf13
#define	IPOPT_SECUR_SECRET	0xd788
#define	IPOPT_SECUR_TOPSECRET	0x6bc5

/*
 * Internet implementation parameters. 
 */
#define	MAXTTL		255	/* maximum time to live (seconds) */
#define	IPFRAGTTL	60	/* time to live for frags, slowhz */
#define	IPTTLDEC	1	/* subtracted when forwarding */

#define	IP_MSS		576	/* default maximum segment size */

#ifdef __cplusplus
}
#endif

#endif				/* ip_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -