Annotation of embedaddon/strongswan/src/starter/confread.h, revision 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>