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

📄 ip_ipsp.h

📁 MIPS处理器的bootloader,龙芯就是用的修改过的PMON2
💻 H
📖 第 1 页 / 共 2 页
字号:
    u_int8_t         *tdb_dstid;        /* Destination ID for this SA */    u_int8_t         *tdb_amxkey;       /* AH-old only */    union    {	u_int8_t  Iv[ESP_3DES_IVS];     /* That's enough space */	u_int32_t Ivl;        	        /* Make sure this is 4 bytes */	u_int64_t Ivq; 		        /* Make sure this is 8 bytes! */    }IV;#define tdb_iv  IV.Iv#define tdb_ivl IV.Ivl#define tdb_ivq IV.Ivq    u_int32_t         tdb_rpl;	        /* Replay counter */    u_int32_t         tdb_bitmap;       /* Used for replay sliding window */    u_int32_t         tdb_initial;	/* Initial replay value */    u_int32_t         tdb_epoch;	/* Used by the kernfs interface */    u_int16_t         tdb_srcid_len;    u_int16_t         tdb_dstid_len;    u_int16_t         tdb_srcid_type;    u_int16_t         tdb_dstid_type;    struct flow	     *tdb_flow; 	/* Which flows use this SA */    struct tdb       *tdb_bind_out;	/* Outgoing SA to use */    TAILQ_HEAD(tdb_bind_head, tdb) tdb_bind_in;    TAILQ_ENTRY(tdb)  tdb_bind_in_next;	/* Refering Incoming SAs */    TAILQ_HEAD(tdb_inp_head, inpcb) tdb_inp;};#if 0union authctx_old {    MD5_CTX md5ctx;    SHA1_CTX sha1ctx;};union authctx {    MD5_CTX md5ctx;    SHA1_CTX sha1ctx;    RMD160_CTX rmd160ctx;};#endifstruct tdb_ident {    u_int32_t spi;    union sockaddr_union dst;    u_int8_t proto;};struct auth_hash {    int type;    char *name;    u_int16_t keysize;    u_int16_t hashsize;     u_int16_t ctxsize;    void (*Init)(void *);    void (*Update)(void *, u_int8_t *, u_int16_t);    void (*Final)(u_int8_t *, void *);};struct enc_xform {    int type;    char *name;    u_int16_t blocksize, ivsize;    u_int16_t minkey, maxkey;    u_int32_t ivmask;           /* Or all possible modes, zero iv = 1 */     void (*encrypt)(struct tdb *, u_int8_t *);    void (*decrypt)(struct tdb *, u_int8_t *);    void (*setkey)(u_int8_t **, u_int8_t *, int len);    void (*zerokey)(u_int8_t **);};struct ipsecinit{    u_int8_t       *ii_enckey;    u_int8_t       *ii_authkey;    u_int16_t       ii_enckeylen;    u_int16_t       ii_authkeylen;    u_int8_t        ii_encalg;    u_int8_t        ii_authalg;};	  struct xformsw{    u_short		xf_type;	/* Unique ID of xform */    u_short		xf_flags;	/* flags (see below) */    char		*xf_name;	/* human-readable name */    int		(*xf_attach)(void);	/* called at config time */    int		(*xf_init)(struct tdb *, struct xformsw *, struct ipsecinit *);    int		(*xf_zeroize)(struct tdb *); /* termination */    struct mbuf 	*(*xf_input)(struct mbuf *, struct tdb *); /* input */    int		(*xf_output)(struct mbuf *, struct sockaddr_encap *,			     struct tdb *, struct mbuf **);        /* output */};/* xform IDs */#define XF_IP4		1	/* IP inside IP */#define XF_OLD_AH	2	/* RFCs 1828 & 1852 */#define XF_OLD_ESP	3	/* RFCs 1829 & 1851 */#define XF_NEW_AH	4	/* AH HMAC 96bits */#define XF_NEW_ESP	5	/* ESP + auth 96bits + replay counter */#define XF_TCPSIGNATURE	6	/* TCP MD5 Signature option, RFC 2358 *//* xform attributes */#define XFT_AUTH	0x0001#define XFT_CONF	0x0100#define IPSEC_ZEROES_SIZE	64#define IPSEC_KERNFS_BUFSIZE    4096#if BYTE_ORDER == LITTLE_ENDIANstatic __inline u_int64_thtonq(u_int64_t q){    register u_int32_t u, l;    u = q >> 32;    l = (u_int32_t) q;            return htonl(u) | ((u_int64_t)htonl(l) << 32);}#define ntohq(_x) htonq(_x)#elif BYTE_ORDER == BIG_ENDIAN#define htonq(_x) (_x)#define ntohq(_x) htonq(_x)#else#error  "Please fix <machine/endian.h>"#endif                                          #ifdef _KERNEL/* * Protects all tdb lists. * Must at least be splsoftnet (note: do not use splsoftclock as it is * special on some architectures, assuming it is always an spl lowering * operation). */#define spltdb	splsoftnetextern int encdebug;extern int ipsec_in_use;extern u_int8_t hmac_ipad_buffer[64];extern u_int8_t hmac_opad_buffer[64];extern TAILQ_HEAD(expclusterlist_head, tdb) expclusterlist;extern TAILQ_HEAD(explist_head, tdb) explist;extern struct xformsw xformsw[], *xformswNXFORMSW;/* Check if a given tdb has encryption, authentication and/or tunneling */#define TDB_ATTRIB(x) (((x)->tdb_encalgxform ? NOTIFY_SATYPE_CONF : 0)| \		       ((x)->tdb_authalgxform ? NOTIFY_SATYPE_AUTH : 0))/* Traverse spi chain and get attributes */#define SPI_CHAIN_ATTRIB(have, TDB_DIR, TDBP) do {\	int s = spltdb(); \	struct tdb *tmptdb = (TDBP); \	\	(have) = 0; \	while (tmptdb && tmptdb->tdb_xform) { \	        if (tmptdb == NULL || tmptdb->tdb_flags & TDBF_INVALID) \	                break; \                (have) |= TDB_ATTRIB(tmptdb); \                tmptdb = tmptdb->TDB_DIR; \        } \	splx(s); \} while (0)/* Misc. */extern char *inet_ntoa4(struct in_addr);extern char *ipsp_address(union sockaddr_union);/* TDB management routines */extern void tdb_add_inp(struct tdb *tdb, struct inpcb *inp);extern u_int32_t reserve_spi(u_int32_t, u_int32_t, union sockaddr_union *,			     union sockaddr_union *, u_int8_t, int *);extern struct tdb *gettdb(u_int32_t, union sockaddr_union *, u_int8_t);extern void puttdb(struct tdb *);extern void tdb_delete(struct tdb *, int, int);extern int tdb_init(struct tdb *, u_int16_t, struct ipsecinit *);extern void tdb_expiration(struct tdb *, int);/* Flag values for the last argument of tdb_expiration().  */#define TDBEXP_EARLY	1	/* The tdb is likely to end up early.  */#define TDBEXP_TIMEOUT	2	/* Maintain expiration timeout.  */extern int tdb_walk(int (*)(struct tdb *, void *), void *);extern void handle_expirations(void *);/* Flow management routines */extern struct flow *get_flow(void);extern void put_flow(struct flow *, struct tdb *);extern void delete_flow(struct flow *, struct tdb *);extern struct flow *find_flow(union sockaddr_union *, union sockaddr_union *,			      union sockaddr_union *, union sockaddr_union *,			      u_int8_t, struct tdb *);extern struct flow *find_global_flow(union sockaddr_union *,				     union sockaddr_union *,				     union sockaddr_union *,				     union sockaddr_union *, u_int8_t);/* XF_IP4 */extern int ipe4_attach(void);extern int ipe4_init(struct tdb *, struct xformsw *, struct ipsecinit *);extern int ipe4_zeroize(struct tdb *);extern int ipe4_output(struct mbuf *, struct sockaddr_encap *, struct tdb *,		       struct mbuf **);extern void ipe4_input __P((struct mbuf *, ...));extern void ip4_input __P((struct mbuf *, ...));/* XF_OLD_AH */extern int ah_old_attach(void);extern int ah_old_init(struct tdb *, struct xformsw *, struct ipsecinit *);extern int ah_old_zeroize(struct tdb *);extern int ah_old_output(struct mbuf *, struct sockaddr_encap *, struct tdb *,			 struct mbuf **);extern struct mbuf *ah_old_input(struct mbuf *, struct tdb *);/* XF_NEW_AH */extern int ah_new_attach(void);extern int ah_new_init(struct tdb *, struct xformsw *, struct ipsecinit *);extern int ah_new_zeroize(struct tdb *);extern int ah_new_output(struct mbuf *, struct sockaddr_encap *, struct tdb *,			 struct mbuf **);extern struct mbuf *ah_new_input(struct mbuf *, struct tdb *);/* XF_OLD_ESP */extern int esp_old_attach(void);extern int esp_old_init(struct tdb *, struct xformsw *, struct ipsecinit *);extern int esp_old_zeroize(struct tdb *);extern int esp_old_output(struct mbuf *, struct sockaddr_encap *, struct tdb *,			  struct mbuf **);extern struct mbuf *esp_old_input(struct mbuf *, struct tdb *);/* XF_NEW_ESP */extern int esp_new_attach(void);extern int esp_new_init(struct tdb *, struct xformsw *, struct ipsecinit *);extern int esp_new_zeroize(struct tdb *);extern int esp_new_output(struct mbuf *, struct sockaddr_encap *, struct tdb *,			  struct mbuf **);extern struct mbuf *esp_new_input(struct mbuf *, struct tdb *);/* XF_TCPSIGNATURE */extern int tcp_signature_tdb_attach __P((void));extern int tcp_signature_tdb_init __P((struct tdb *, struct xformsw *,				       struct ipsecinit *));extern int tcp_signature_tdb_zeroize __P((struct tdb *));extern struct mbuf *tcp_signature_tdb_input __P((struct mbuf *, struct tdb *));extern int tcp_signature_tdb_output __P((struct mbuf *,					 struct sockaddr_encap *, struct tdb *,					 struct mbuf **));/* Padding */extern caddr_t m_pad(struct mbuf *, int, int);/* Replay window */extern int checkreplaywindow32(u_int32_t, u_int32_t, u_int32_t *, u_int32_t,                               u_int32_t *);extern unsigned char ipseczeroes[];#endif /* _KERNEL */#endif /* _NETINET_IPSP_H_ */

⌨️ 快捷键说明

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