Annotation of embedaddon/ipsec-tools/src/racoon/isakmp_cfg.h, revision 1.1

1.1     ! misho       1: /*     $NetBSD: isakmp_cfg.h,v 1.6 2006/09/09 16:22:09 manu Exp $      */
        !             2: 
        !             3: /*     $KAME$ */
        !             4: 
        !             5: /*
        !             6:  * Copyright (C) 2004 Emmanuel Dreyfus
        !             7:  * All rights reserved.
        !             8:  * 
        !             9:  * Redistribution and use in source and binary forms, with or without
        !            10:  * modification, are permitted provided that the following conditions
        !            11:  * are met:
        !            12:  * 1. Redistributions of source code must retain the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer.
        !            14:  * 2. Redistributions in binary form must reproduce the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer in the
        !            16:  *    documentation and/or other materials provided with the distribution.
        !            17:  * 3. Neither the name of the project nor the names of its contributors
        !            18:  *    may be used to endorse or promote products derived from this software
        !            19:  *    without specific prior written permission.
        !            20:  * 
        !            21:  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
        !            22:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            23:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            24:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
        !            25:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            26:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            27:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            28:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            29:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            30:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            31:  * SUCH DAMAGE.
        !            32:  */
        !            33: 
        !            34: #ifdef HAVE_LIBPAM
        !            35: #include <security/pam_appl.h>
        !            36: #endif
        !            37: 
        !            38: /* 
        !            39:  * XXX don't forget to update 
        !            40:  * src/racoon/handler.c:exclude_cfg_addr()
        !            41:  * if you add IPv6 capability
        !            42:  */
        !            43: 
        !            44: /* Attribute types */
        !            45: #define INTERNAL_IP4_ADDRESS        1
        !            46: #define INTERNAL_IP4_NETMASK        2
        !            47: #define INTERNAL_IP4_DNS            3
        !            48: #define INTERNAL_IP4_NBNS           4
        !            49: #define INTERNAL_ADDRESS_EXPIRY     5
        !            50: #define INTERNAL_IP4_DHCP           6
        !            51: #define APPLICATION_VERSION         7
        !            52: #define INTERNAL_IP6_ADDRESS        8
        !            53: #define INTERNAL_IP6_NETMASK        9
        !            54: #define INTERNAL_IP6_DNS           10
        !            55: #define INTERNAL_IP6_NBNS          11
        !            56: #define INTERNAL_IP6_DHCP          12
        !            57: #define INTERNAL_IP4_SUBNET        13
        !            58: #define SUPPORTED_ATTRIBUTES       14
        !            59: #define INTERNAL_IP6_SUBNET        15
        !            60: 
        !            61: /* For APPLICATION_VERSION */
        !            62: #define ISAKMP_CFG_RACOON_VERSION "racoon / IPsec-tools"
        !            63: 
        !            64: /* For the wins servers -- XXX find the value somewhere ? */
        !            65: #define MAXWINS 4
        !            66: 
        !            67: /* 
        !            68:  * Global configuration for ISAKMP mode confiration address allocation 
        !            69:  * Read from the mode_cfg section of racoon.conf
        !            70:  */
        !            71: struct isakmp_cfg_port {
        !            72:        char    used;
        !            73: #ifdef HAVE_LIBPAM
        !            74:        pam_handle_t *pam;
        !            75: #endif
        !            76: };
        !            77: 
        !            78: struct isakmp_cfg_config {
        !            79:        in_addr_t               network4;
        !            80:        in_addr_t               netmask4;
        !            81:        in_addr_t               dns4[MAXNS];
        !            82:        int                     dns4_index;
        !            83:        in_addr_t               nbns4[MAXWINS];
        !            84:        int                     nbns4_index;
        !            85:        struct isakmp_cfg_port  *port_pool;
        !            86:        int                     authsource;
        !            87:        int                     groupsource;
        !            88:        char                    **grouplist;
        !            89:        int                     groupcount;
        !            90:        int                     confsource;
        !            91:        int                     accounting;
        !            92:        size_t                  pool_size;
        !            93:        int                     auth_throttle;
        !            94:        /* XXX move this to a unity specific sub-structure */
        !            95:        char                    default_domain[MAXPATHLEN + 1];
        !            96:        char                    motd[MAXPATHLEN + 1];
        !            97:        struct unity_netentry   *splitnet_list;
        !            98:        int                     splitnet_count;
        !            99:        int                     splitnet_type;
        !           100:        char                    *splitdns_list;
        !           101:        int                     splitdns_len;
        !           102:        int                     pfs_group;
        !           103:        int                     save_passwd;
        !           104: };
        !           105: 
        !           106: /* For utmp updating */
        !           107: #define TERMSPEC       "vpn%d"
        !           108: 
        !           109: /* For authsource */
        !           110: #define ISAKMP_CFG_AUTH_SYSTEM 0
        !           111: #define ISAKMP_CFG_AUTH_RADIUS 1
        !           112: #define ISAKMP_CFG_AUTH_PAM    2
        !           113: #define ISAKMP_CFG_AUTH_LDAP   4
        !           114: 
        !           115: /* For groupsource */
        !           116: #define ISAKMP_CFG_GROUP_SYSTEM        0
        !           117: #define ISAKMP_CFG_GROUP_LDAP  1
        !           118: 
        !           119: /* For confsource */
        !           120: #define ISAKMP_CFG_CONF_LOCAL  0
        !           121: #define ISAKMP_CFG_CONF_RADIUS 1
        !           122: #define ISAKMP_CFG_CONF_LDAP   2
        !           123: 
        !           124: /* For accounting */
        !           125: #define ISAKMP_CFG_ACCT_NONE   0
        !           126: #define ISAKMP_CFG_ACCT_RADIUS 1
        !           127: #define ISAKMP_CFG_ACCT_PAM    2
        !           128: #define ISAKMP_CFG_ACCT_LDAP   3
        !           129: #define ISAKMP_CFG_ACCT_SYSTEM 4
        !           130: 
        !           131: /* For pool_size */
        !           132: #define ISAKMP_CFG_MAX_CNX     255
        !           133: 
        !           134: /* For motd */
        !           135: #define ISAKMP_CFG_MOTD        "/etc/motd"
        !           136: 
        !           137: /* For default domain */
        !           138: #define ISAKMP_CFG_DEFAULT_DOMAIN ""
        !           139: 
        !           140: extern struct isakmp_cfg_config isakmp_cfg_config;
        !           141: 
        !           142: /*
        !           143:  * ISAKMP mode config state 
        !           144:  */
        !           145: #define LOGINLEN 31
        !           146: struct isakmp_cfg_state {
        !           147:        int flags;                      /* See below */
        !           148:        unsigned int port;              /* address index */
        !           149:        char login[LOGINLEN + 1];       /* login */
        !           150:        struct in_addr addr4;           /* IPv4 address */
        !           151:        struct in_addr mask4;           /* IPv4 netmask */
        !           152:        struct in_addr dns4[MAXNS];     /* IPv4 DNS (when client only) */
        !           153:        int dns4_index;                 /* Number of IPv4 DNS (client only) */
        !           154:        struct in_addr wins4[MAXWINS];  /* IPv4 WINS (when client only) */
        !           155:        int wins4_index;                /* Number of IPv4 WINS (client only) */
        !           156:        char default_domain[MAXPATHLEN + 1];    /* Default domain recieved */
        !           157:        struct unity_netentry 
        !           158:            *split_include;             /* UNITY_SPLIT_INCLUDE */
        !           159:        int include_count;              /* Number of SPLIT_INCLUDES */
        !           160:        struct unity_netentry 
        !           161:            *split_local;               /* UNITY_LOCAL_LAN */
        !           162:        int local_count;                /* Number of SPLIT_LOCAL */
        !           163:        struct xauth_state xauth;       /* Xauth state, if revelant */          
        !           164:        struct isakmp_ivm *ivm;         /* XXX Use iph1's ivm? */
        !           165:        u_int32_t last_msgid;           /* Last message-ID */
        !           166: };
        !           167: 
        !           168: /* flags */
        !           169: #define ISAKMP_CFG_VENDORID_XAUTH      0x01    /* Supports Xauth */
        !           170: #define ISAKMP_CFG_VENDORID_UNITY      0x02    /* Cisco Unity compliant */
        !           171: #define ISAKMP_CFG_PORT_ALLOCATED      0x04    /* Port allocated */
        !           172: #define ISAKMP_CFG_ADDR4_EXTERN                0x08    /* Address from external config  */
        !           173: #define ISAKMP_CFG_MASK4_EXTERN                0x10    /* Netmask from external config */
        !           174: #define ISAKMP_CFG_ADDR4_LOCAL         0x20    /* Address from local pool */
        !           175: #define ISAKMP_CFG_MASK4_LOCAL         0x40    /* Netmask from local pool */
        !           176: #define ISAKMP_CFG_GOT_ADDR4           0x80    /* Client got address */
        !           177: #define ISAKMP_CFG_GOT_MASK4           0x100   /* Client got mask */
        !           178: #define ISAKMP_CFG_GOT_DNS4            0x200   /* Client got DNS */
        !           179: #define ISAKMP_CFG_GOT_WINS4           0x400   /* Client got WINS */
        !           180: #define ISAKMP_CFG_DELETE_PH1          0x800   /* phase 1 should be deleted */
        !           181: #define ISAKMP_CFG_GOT_DEFAULT_DOMAIN  0x1000  /* Client got default domain */
        !           182: #define ISAKMP_CFG_GOT_SPLIT_INCLUDE   0x2000  /* Client got a split network config */
        !           183: #define ISAKMP_CFG_GOT_SPLIT_LOCAL     0x4000  /* Client got a split LAN config */
        !           184: 
        !           185: struct isakmp_pl_attr;
        !           186: struct ph1handle;
        !           187: struct isakmp_ivm;
        !           188: void isakmp_cfg_r(struct ph1handle *, vchar_t *);
        !           189: int isakmp_cfg_attr_r(struct ph1handle *, u_int32_t, struct isakmp_pl_attr *);
        !           190: int isakmp_cfg_reply(struct ph1handle *, struct isakmp_pl_attr *);
        !           191: int isakmp_cfg_request(struct ph1handle *, struct isakmp_pl_attr *);
        !           192: int isakmp_cfg_set(struct ph1handle *, struct isakmp_pl_attr *);
        !           193: int isakmp_cfg_send(struct ph1handle *, vchar_t *, u_int32_t, int, int);
        !           194: struct isakmp_ivm *isakmp_cfg_newiv(struct ph1handle *, u_int32_t);
        !           195: void isakmp_cfg_rmstate(struct ph1handle *);
        !           196: struct isakmp_cfg_state *isakmp_cfg_mkstate(void);
        !           197: vchar_t *isakmp_cfg_copy(struct ph1handle *, struct isakmp_data *);
        !           198: vchar_t *isakmp_cfg_short(struct ph1handle *, struct isakmp_data *, int);
        !           199: vchar_t *isakmp_cfg_varlen(struct ph1handle *, struct isakmp_data *, char *, size_t);
        !           200: vchar_t *isakmp_cfg_string(struct ph1handle *, struct isakmp_data *, char *);
        !           201: int isakmp_cfg_getconfig(struct ph1handle *);
        !           202: int isakmp_cfg_setenv(struct ph1handle *, char ***, int *);
        !           203: 
        !           204: int isakmp_cfg_resize_pool(int);
        !           205: int isakmp_cfg_getport(struct ph1handle *);
        !           206: int isakmp_cfg_putport(struct ph1handle *, unsigned int);
        !           207: int isakmp_cfg_init(int);
        !           208: #define ISAKMP_CFG_INIT_COLD   1
        !           209: #define ISAKMP_CFG_INIT_WARM   0
        !           210: 
        !           211: #ifdef HAVE_LIBRADIUS
        !           212: struct rad_handle;
        !           213: extern struct rad_handle *radius_acct_state;
        !           214: int isakmp_cfg_radius_common(struct rad_handle *, int); 
        !           215: #endif
        !           216: 
        !           217: #ifdef HAVE_LIBPAM
        !           218: int isakmp_cfg_accounting_pam(int, int);
        !           219: void cleanup_pam(int);
        !           220: #endif
        !           221: 
        !           222: int isakmp_cfg_accounting_system(int, struct sockaddr *, char *, int);

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