Annotation of embedaddon/strongswan/src/starter/confread.h, revision 1.1.1.1

1.1       misho       1: /* strongSwan IPsec config file parser
                      2:  * Copyright (C) 2001-2002 Mathieu Lafon
                      3:  * Arkoon Network Security
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify it
                      6:  * under the terms of the GNU General Public License as published by the
                      7:  * Free Software Foundation; either version 2 of the License, or (at your
                      8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful, but
                     11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     13:  * for more details.
                     14:  */
                     15: 
                     16: #ifndef _IPSEC_CONFREAD_H_
                     17: #define _IPSEC_CONFREAD_H_
                     18: 
                     19: #include <kernel/kernel_ipsec.h>
                     20: 
                     21: typedef enum {
                     22:                STARTUP_NO,
                     23:                STARTUP_ADD,
                     24:                STARTUP_ROUTE,
                     25:                STARTUP_START
                     26: } startup_t;
                     27: 
                     28: typedef enum {
                     29:                STATE_IGNORE,
                     30:                STATE_TO_ADD,
                     31:                STATE_ADDED,
                     32:                STATE_REPLACED,
                     33:                STATE_INVALID
                     34: } starter_state_t;
                     35: 
                     36: typedef enum {
                     37:                /* shared with ike_version_t */
                     38:                KEY_EXCHANGE_IKE = 0,
                     39:                KEY_EXCHANGE_IKEV1 = 1,
                     40:                KEY_EXCHANGE_IKEV2 = 2,
                     41: } keyexchange_t;
                     42: 
                     43: typedef enum {
                     44:                STRICT_NO,
                     45:                STRICT_YES,
                     46:                STRICT_IFURI,
                     47: } strict_t;
                     48: 
                     49: typedef enum {
                     50:                CERT_ALWAYS_SEND,
                     51:                CERT_SEND_IF_ASKED,
                     52:                CERT_NEVER_SEND,
                     53:                CERT_YES_SEND,          /* synonym for CERT_ALWAYS_SEND */
                     54:                CERT_NO_SEND,           /* synonym for CERT_NEVER_SEND */
                     55: } certpolicy_t;
                     56: 
                     57: typedef enum {
                     58:                DPD_ACTION_NONE,
                     59:                DPD_ACTION_CLEAR,
                     60:                DPD_ACTION_HOLD,
                     61:                DPD_ACTION_RESTART,
                     62:                DPD_ACTION_UNKNOWN,
                     63: } dpd_action_t;
                     64: 
                     65: typedef enum {
                     66:                /* same as in ike_cfg.h */
                     67:                FRAGMENTATION_NO,
                     68:                FRAGMENTATION_ACCEPT,
                     69:                FRAGMENTATION_YES,
                     70:                FRAGMENTATION_FORCE,
                     71: } fragmentation_t;
                     72: 
                     73: typedef enum {
                     74:                /* IPsec options */
                     75:                SA_OPTION_COMPRESS      = 1 << 1, /* use IPComp */
                     76: 
                     77:                /* IKE and other other options */
                     78:                SA_OPTION_DONT_REKEY    = 1 << 2, /* don't rekey state either Phase */
                     79:                SA_OPTION_DONT_REAUTH   = 1 << 3, /* don't reauthenticate on rekeying, IKEv2 only */
                     80:                SA_OPTION_MODECFG_PUSH  = 1 << 4, /* is modecfg pushed by server? */
                     81:                SA_OPTION_XAUTH_SERVER  = 1 << 5, /* are we an XAUTH server? */
                     82:                SA_OPTION_MOBIKE                = 1 << 6, /* enable MOBIKE for IKEv2  */
                     83:                SA_OPTION_FORCE_ENCAP   = 1 << 7, /* force UDP encapsulation */
                     84: } sa_option_t;
                     85: 
                     86: typedef struct starter_end starter_end_t;
                     87: 
                     88: struct starter_end {
                     89:                char            *auth;
                     90:                char            *auth2;
                     91:                char            *id;
                     92:                char            *id2;
                     93:                char            *rsakey;
                     94:                char            *cert;
                     95:                char            *cert2;
                     96:                char            *ca;
                     97:                char            *ca2;
                     98:                char            *groups;
                     99:                char            *groups2;
                    100:                char            *cert_policy;
                    101:                char            *host;
                    102:                u_int           ikeport;
                    103:                char            *subnet;
                    104:                bool            modecfg;
                    105:                certpolicy_t    sendcert;
                    106:                bool            firewall;
                    107:                bool            hostaccess;
                    108:                bool            allow_any;
                    109:                char            *updown;
                    110:                uint16_t       from_port;
                    111:                uint16_t       to_port;
                    112:                uint8_t        protocol;
                    113:                char            *sourceip;
                    114:                char            *dns;
                    115: };
                    116: 
                    117: typedef struct starter_conn starter_conn_t;
                    118: 
                    119: struct starter_conn {
                    120:                char            *name;
                    121:                startup_t       startup;
                    122:                starter_state_t state;
                    123: 
                    124:                keyexchange_t   keyexchange;
                    125:                char            *eap_identity;
                    126:                char            *aaa_identity;
                    127:                char            *xauth_identity;
                    128:                char            *authby;
                    129:                ipsec_mode_t    mode;
                    130:                bool            proxy_mode;
                    131:                fragmentation_t fragmentation;
                    132:                u_int           ikedscp;
                    133:                sa_option_t     options;
                    134:                time_t          sa_ike_life_seconds;
                    135:                time_t          sa_ipsec_life_seconds;
                    136:                time_t          sa_rekey_margin;
                    137:                uint64_t       sa_ipsec_life_bytes;
                    138:                uint64_t       sa_ipsec_margin_bytes;
                    139:                uint64_t       sa_ipsec_life_packets;
                    140:                uint64_t       sa_ipsec_margin_packets;
                    141:                unsigned long   sa_keying_tries;
                    142:                unsigned long   sa_rekey_fuzz;
                    143:                uint32_t       reqid;
                    144:                mark_t          mark_in;
                    145:                mark_t          mark_out;
                    146:                uint32_t       replay_window;
                    147:                uint32_t       tfc;
                    148:                bool            install_policy;
                    149:                bool            aggressive;
                    150:                starter_end_t   left, right;
                    151: 
                    152:                unsigned long   id;
                    153: 
                    154:                char            *esp;
                    155:                char            *ah;
                    156:                char            *ike;
                    157: 
                    158:                time_t          dpd_delay;
                    159:                time_t          dpd_timeout;
                    160:                dpd_action_t    dpd_action;
                    161:                int             dpd_count;
                    162: 
                    163:                dpd_action_t    close_action;
                    164: 
                    165:                bool            sha256_96;
                    166: 
                    167:                time_t          inactivity;
                    168: 
                    169:                bool            me_mediation;
                    170:                char            *me_mediated_by;
                    171:                char            *me_peerid;
                    172: 
                    173:                starter_conn_t *next;
                    174: };
                    175: 
                    176: typedef struct starter_ca starter_ca_t;
                    177: 
                    178: struct starter_ca {
                    179:                char            *name;
                    180:                startup_t       startup;
                    181:                starter_state_t state;
                    182: 
                    183:                char            *cacert;
                    184:                char            *crluri;
                    185:                char            *crluri2;
                    186:                char            *ocspuri;
                    187:                char            *ocspuri2;
                    188:                char            *certuribase;
                    189: 
                    190:                bool            strict;
                    191: 
                    192:                starter_ca_t    *next;
                    193: };
                    194: 
                    195: typedef struct starter_config starter_config_t;
                    196: 
                    197: struct starter_config {
                    198:                struct {
                    199:                                char     *charondebug;
                    200:                                bool     uniqueids;
                    201:                                bool     cachecrls;
                    202:                                strict_t strictcrlpolicy;
                    203:                } setup;
                    204: 
                    205:                /* number of encountered parsing errors */
                    206:                u_int err;
                    207:                u_int non_fatal_err;
                    208: 
                    209:                /* connections list */
                    210:                starter_ca_t *ca_first, *ca_last;
                    211: 
                    212:                /* connections list */
                    213:                starter_conn_t *conn_first, *conn_last;
                    214: };
                    215: 
                    216: starter_config_t *confread_load(const char *file);
                    217: void confread_free(starter_config_t *cfg);
                    218: 
                    219: #endif /* _IPSEC_CONFREAD_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>