OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / freeswan / klips / net / ipsec / ipsec_eroute.h
1 /*
2  * @(#) declarations of eroute structures
3  *
4  * Copyright (C) 1996, 1997  John Ioannidis.
5  * Copyright (C) 1998, 1999, 2000, 2001  Richard Guy Briggs <rgb@freeswan.org>
6  * Copyright (C) 2001                    Michael Richardson <mcr@freeswan.org>
7  * 
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License as published by the
10  * Free Software Foundation; either version 2 of the License, or (at your
11  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
12  * 
13  * This program is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16  * for more details.
17  *
18  * RCSID $Id: ipsec_eroute.h,v 1.2 2001/11/26 09:16:13 rgb Exp $
19  *
20  * derived from ipsec_encap.h 1.15 on 2001/9/18 by mcr.
21  *
22  */
23
24 #ifndef _IPSEC_EROUTE_H_
25
26 #include "radij.h"
27 #include "ipsec_encap.h"
28 #include "ipsec_radij.h"
29
30 /*
31  * The "type" is really part of the address as far as the routing
32  * system is concerned. By using only one bit in the type field
33  * for each type, we sort-of make sure that different types of
34  * encapsulation addresses won't be matched against the wrong type.
35  */
36
37 /*
38  * An entry in the radix tree 
39  */
40
41 struct rjtentry
42 {
43         struct  radij_node rd_nodes[2]; /* tree glue, and other values */
44 #define rd_key(r)       ((struct sockaddr_encap *)((r)->rd_nodes->rj_key))
45 #define rd_mask(r)      ((struct sockaddr_encap *)((r)->rd_nodes->rj_mask))
46         short   rd_flags;
47         short   rd_count;
48 };
49
50 struct ident
51 {
52         __u16   type;   /* identity type */
53         __u64   id;     /* identity id */
54         __u8    len;    /* identity len */
55         caddr_t data;   /* identity data */
56 };
57
58 /*
59  * An encapsulation route consists of a pointer to a 
60  * radix tree entry and a SAID (a destination_address/SPI/protocol triple).
61  */
62
63 struct eroute
64 {
65         struct rjtentry er_rjt;
66         struct sa_id er_said;
67         uint32_t er_pid;
68         uint32_t er_count;
69         uint64_t er_lasttime;
70         struct sockaddr_encap er_eaddr; /* MCR get rid of _encap, it is silly*/
71         struct sockaddr_encap er_emask;
72         struct ident er_ident_s;
73         struct ident er_ident_d;
74         struct sk_buff* er_first;
75         struct sk_buff* er_last;
76 };
77
78 #define er_dst er_said.dst
79 #define er_spi er_said.spi
80 #define er_proto er_said.proto
81
82 #define _IPSEC_EROUTE_H_
83 #endif /* _IPSEC_EROUTE_H_ */
84
85 /*
86  * $Log: ipsec_eroute.h,v $
87  * Revision 1.2  2001/11/26 09:16:13  rgb
88  * Merge MCR's ipsec_sa, eroute, proc and struct lifetime changes.
89  *
90  * Revision 1.1.2.1  2001/09/25 02:18:54  mcr
91  *      struct eroute moved to ipsec_eroute.h
92  *
93  *
94  * Local variables:
95  * c-file-style: "linux"
96  * End:
97  *
98  */