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

📄 ip_ipsp.h

📁 MIPS处理器的bootloader,龙芯就是用的修改过的PMON2
💻 H
📖 第 1 页 / 共 2 页
字号:
/*	$OpenBSD: ip_ipsp.h,v 1.42 1999/09/29 09:11:21 niklas Exp $	*//* * The authors of this code are John Ioannidis (ji@tla.org), * Angelos D. Keromytis (kermit@csd.uch.gr), * Niels Provos (provos@physnet.uni-hamburg.de) and * Niklas Hallqvist (niklas@appli.se). * * This code was written by John Ioannidis for BSD/OS in Athens, Greece,  * in November 1995. * * Ported to OpenBSD and NetBSD, with additional transforms, in December 1996, * by Angelos D. Keromytis. * * Additional transforms and features in 1997 and 1998 by Angelos D. Keromytis * and Niels Provos. * * Additional features in 1999 by Angelos D. Keromytis and Niklas Hallqvist. * * Copyright (c) 1995, 1996, 1997, 1998, 1999 by John Ioannidis, * Angelos D. Keromytis and Niels Provos. * Copyright (c) 1999 Niklas Hallqvist. * * Permission to use, copy, and modify this software without fee * is hereby granted, provided that this entire notice is included in * all copies of any software which is or includes a copy or * modification of this software.  * You may use this code under the GNU public license if you so wish. Please * contribute changes back to the authors under this freer than GPL license * so that we may further the use of strong encryption without limitations to * all. * * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR * IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR * PURPOSE. */#ifndef _NETINET_IPSP_H_#define _NETINET_IPSP_H_/* * IPSP global definitions. */#include <sys/types.h>#include <sys/queue.h>#include <netinet/in.h>#if 0#include <sys/md5k.h>#include <netinet/ip_sha1.h>#include <netinet/ip_rmd160.h>#include <netinet/ip_blf.h>#include <netinet/ip_cast.h>#include <netinet/ip_skipjack.h>#endifunion sockaddr_union{    struct sockaddr     sa;    struct sockaddr_in  sin;    struct sockaddr_in6 sin6;};/* HMAC key sizes */#define MD5HMAC96_KEYSIZE       16#define SHA1HMAC96_KEYSIZE      20#define RIPEMD160HMAC96_KEYSIZE 20/* IV lengths */#define ESP_DES_IVS		8#define ESP_3DES_IVS		8#define ESP_BLF_IVS             8#define ESP_CAST_IVS            8#define ESP_SKIPJACK_IVS	8#define ESP_MAX_IVS		8       /* Keep updated *//* Block sizes -- it is assumed that they're powers of 2 */#define ESP_DES_BLKS		8#define ESP_3DES_BLKS		8#define ESP_BLF_BLKS            8#define ESP_CAST_BLKS           8#define ESP_SKIPJACK_BLKS	8#define ESP_MAX_BLKS            8       /* Keep updated */#define HMAC_BLOCK_LEN		64#define AH_HMAC_HASHLEN		12	/* 96 bits of authenticator */#define AH_HMAC_RPLENGTH        4	/* 32 bits of replay counter */#define AH_HMAC_INITIAL_RPL	1	/* Replay counter initial value *//* HMAC definitions */#define HMAC_IPAD_VAL           0x36#define HMAC_OPAD_VAL           0x5C#define HMAC_BLOCK_LEN          64/* Authenticator lengths */#define AH_MD5_ALEN		16#define AH_SHA1_ALEN		20#define AH_RMD160_ALEN		20#define AH_ALEN_MAX		20 	/* Keep updated *//* Reserved SPI numbers */#define SPI_LOCAL_USE		0#define SPI_RESERVED_MIN	1#define SPI_RESERVED_MAX	255struct sockaddr_encap{    u_int8_t	sen_len;		/* length */    u_int8_t	sen_family;		/* PF_KEY */    u_int16_t	sen_type;		/* see SENT_* */    union    {	u_int8_t	Data[16];	/* other stuff mapped here */	struct				/* SENT_IP4 */	{	    struct in_addr Src;	    struct in_addr Dst;	    u_int16_t Sport;	    u_int16_t Dport;	    u_int8_t Proto;	    u_int8_t Filler[3];	} Sip4;	struct				/* SENT_IPSP */	{	    struct in_addr Dst;	    u_int32_t Spi;	    u_int8_t Sproto;	    u_int8_t Filler[7];	} Sipsp;    } Sen;};#define sen_data	Sen.Data#define sen_ip_src	Sen.Sip4.Src#define sen_ip_dst	Sen.Sip4.Dst#define sen_proto	Sen.Sip4.Proto#define sen_sport	Sen.Sip4.Sport#define sen_dport	Sen.Sip4.Dport#define sen_ipsp_dst	Sen.Sipsp.Dst#define sen_ipsp_spi	Sen.Sipsp.Spi#define sen_ipsp_sproto	Sen.Sipsp.Sproto/* * The "type" is really part of the address as far as the routing * system is concerned. By using only one bit in the type field * for each type, we sort-of make sure that different types of * encapsulation addresses won't be matched against the wrong type. *  */#define SENT_IP4	0x0001		/* data is two struct in_addr */#define SENT_IPSP	0x0002		/* data as in IP4 plus SPI *//* * SENT_HDRLEN is the length of the "header" * SENT_*_LEN are the lengths of various forms of sen_data * SENT_*_OFF are the offsets in the sen_data array of various fields */#define SENT_HDRLEN	(2 * sizeof(u_int8_t) + sizeof(u_int16_t))#define SENT_IP4_SRCOFF	(0)#define SENT_IP4_DSTOFF (sizeof (struct in_addr))#define SENT_IP4_LEN	20#define SENT_IPSP_LEN	20#define NOTIFY_SOFT_EXPIRE      0       /* Soft expiration of SA */#define NOTIFY_HARD_EXPIRE      1       /* Hard expiration of SA */#define NOTIFY_REQUEST_SA       2       /* Establish an SA */  #define NOTIFY_SATYPE_CONF      1       /* SA should do encryption */#define NOTIFY_SATYPE_AUTH      2       /* SA should do authentication */#define NOTIFY_SATYPE_TUNNEL    4       /* SA should use tunneling *//* * For encapsulation routes are possible not only for the destination * address but also for the protocol, source and destination ports * if available */struct route_enc {    struct rtentry *re_rt;    struct sockaddr_encap re_dst;};struct flow{    struct flow          *flow_next;	/* Next in flow chain */    struct flow          *flow_prev;	/* Previous in flow chain */    struct tdb           *flow_sa;	/* Pointer to the SA */    union sockaddr_union  flow_src;   	/* Source address */    union sockaddr_union  flow_srcmask; /* Source netmask */    union sockaddr_union  flow_dst;	/* Destination address */    union sockaddr_union  flow_dstmask;	/* Destination netmask */    u_int8_t	          flow_proto;	/* Transport protocol, if applicable */    u_int8_t	          foo[3];	/* Alignment */};struct tdb				/* tunnel descriptor block */{    struct tdb	     *tdb_hnext;  	/* Next in hash chain */    struct tdb	     *tdb_onext;        /* Next in output */    struct tdb	     *tdb_inext;        /* Previous in output */    struct xformsw   *tdb_xform;	/* Transformation to use */    struct enc_xform *tdb_encalgxform;  /* Encryption algorithm xform */    struct auth_hash *tdb_authalgxform; /* Authentication algorithm xform */#define TDBF_UNIQUE	      0x00001	/* This should not be used by others */#define TDBF_TIMER            0x00002	/* Absolute expiration timer in use */#define TDBF_BYTES            0x00004	/* Check the byte counters */#define TDBF_ALLOCATIONS      0x00008	/* Check the flows counters */#define TDBF_INVALID          0x00010	/* This SPI is not valid yet/anymore */#define TDBF_FIRSTUSE         0x00020	/* Expire after first use */#define TDBF_HALFIV           0x00040   /* Use half-length IV (ESP old only) */#define TDBF_SOFT_TIMER       0x00080	/* Soft expiration */#define TDBF_SOFT_BYTES       0x00100	/* Soft expiration */#define TDBF_SOFT_ALLOCATIONS 0x00200	/* Soft expiration */#define TDBF_SOFT_FIRSTUSE    0x00400	/* Soft expiration */#define TDBF_PFS              0x00800	/* Ask for PFS from Key Mgmt. */#define TDBF_TUNNELING        0x01000	/* Force IP-IP encapsulation */    u_int32_t	      tdb_flags;  	/* Flags related to this TDB */    TAILQ_ENTRY(tdb)  tdb_expnext;	/* Expiration cluster list link */    TAILQ_ENTRY(tdb)  tdb_explink;	/* Expiration ordered list link */    u_int32_t         tdb_exp_allocations;  /* Expire after so many flows */    u_int32_t         tdb_soft_allocations; /* Expiration warning */     u_int32_t         tdb_cur_allocations;  /* Total number of allocations */    u_int64_t         tdb_exp_bytes;    /* Expire after so many bytes passed */    u_int64_t         tdb_soft_bytes;	/* Expiration warning */    u_int64_t         tdb_cur_bytes;	/* Current count of bytes */    u_int64_t         tdb_exp_timeout;	/* When does the SPI expire */    u_int64_t         tdb_soft_timeout;	/* Send a soft-expire warning */    u_int64_t         tdb_established;	/* When was the SPI established */    u_int64_t	      tdb_timeout;	/* Next absolute expiration time.  */    u_int64_t	      tdb_first_use;	  /* When was it first used */    u_int64_t         tdb_soft_first_use; /* Soft warning */    u_int64_t         tdb_exp_first_use;  /* Expire if tdb_first_use +					   * tdb_exp_first_use <= curtime */    u_int32_t	      tdb_spi;    	/* SPI */    u_int16_t         tdb_amxkeylen;    /* AH-old only */    u_int16_t         tdb_ivlen;        /* IV length */    u_int8_t	      tdb_sproto;	/* IPsec protocol */    u_int8_t          tdb_wnd;          /* Replay window */    u_int8_t          tdb_satype;       /* SA type (RFC2367, PF_KEY) */    u_int8_t          tdb_FILLER;       /* Padding */        union sockaddr_union tdb_dst;	/* Destination address for this SA */    union sockaddr_union tdb_src;	/* Source address for this SA */    union sockaddr_union tdb_proxy;    u_int8_t         *tdb_key;          /* Key material (schedules) */    u_int8_t         *tdb_ictx;         /* Authentication contexts */    u_int8_t         *tdb_octx;    u_int8_t         *tdb_srcid;        /* Source ID for this SA */

⌨️ 快捷键说明

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