Annotation of embedaddon/strongswan/src/starter/parser/conf_parser.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2013-2014 Tobias Brunner
! 3: * HSR Hochschule fuer Technik Rapperswil
! 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: /**
! 17: * @defgroup starter starter
! 18: *
! 19: * @defgroup conf_parser conf_parser
! 20: * @{ @ingroup starter
! 21: */
! 22:
! 23: #ifndef CONF_PARSER_H_
! 24: #define CONF_PARSER_H_
! 25:
! 26: #include <library.h>
! 27: #include <collections/dictionary.h>
! 28:
! 29: typedef enum conf_parser_section_t conf_parser_section_t;
! 30: typedef struct conf_parser_t conf_parser_t;
! 31:
! 32: /**
! 33: * Type of section
! 34: */
! 35: enum conf_parser_section_t {
! 36: /**
! 37: * config setup
! 38: */
! 39: CONF_PARSER_CONFIG_SETUP,
! 40:
! 41: /**
! 42: * conn _name_
! 43: */
! 44: CONF_PARSER_CONN,
! 45:
! 46: /**
! 47: * ca _name_
! 48: */
! 49: CONF_PARSER_CA,
! 50: };
! 51:
! 52: /**
! 53: * Parser for ipsec.conf
! 54: */
! 55: struct conf_parser_t {
! 56:
! 57: /**
! 58: * Parse the config file.
! 59: *
! 60: * @return TRUE if config file was parsed successfully
! 61: */
! 62: bool (*parse)(conf_parser_t *this);
! 63:
! 64: /**
! 65: * Get the names of all sections of the given type.
! 66: *
! 67: * @note Returns an empty enumerator for the config setup section.
! 68: *
! 69: * @return enumerator over char*
! 70: */
! 71: enumerator_t *(*get_sections)(conf_parser_t *this,
! 72: conf_parser_section_t type);
! 73:
! 74: /**
! 75: * Get the section with the given type and name.
! 76: *
! 77: * @note The name is ignored for the config setup section.
! 78: *
! 79: * @return dictionary with settings
! 80: */
! 81: dictionary_t *(*get_section)(conf_parser_t *this,
! 82: conf_parser_section_t type, char *name);
! 83:
! 84: /**
! 85: * Add a section while parsing.
! 86: *
! 87: * @note This method can only be called while parsing the config file.
! 88: *
! 89: * @param type type of section to add
! 90: * @param name name of the section, if applicable (gets adopted)
! 91: * @return TRUE if the section already existed (settings get added)
! 92: */
! 93: bool (*add_section)(conf_parser_t *this, conf_parser_section_t type,
! 94: char *name);
! 95:
! 96: /**
! 97: * Add a key/value pair to the latest section.
! 98: *
! 99: * @note This method can only be called while parsing the config file.
! 100: *
! 101: * @param name key string (gets adopted)
! 102: * @param value optional value string (gets adopted), if no value is
! 103: * specified the key is set empty
! 104: */
! 105: void (*add_setting)(conf_parser_t *this, char *key, char *value);
! 106:
! 107:
! 108: /**
! 109: * Destroy a conf_parser_t instance.
! 110: */
! 111: void (*destroy)(conf_parser_t *this);
! 112: };
! 113:
! 114: /**
! 115: * Create a conf_parser_t instance.
! 116: *
! 117: * @param file ipsec.conf file to parse (gets copied)
! 118: * @return conf_parser_t instance
! 119: */
! 120: conf_parser_t *conf_parser_create(const char *file);
! 121:
! 122: #endif /** CONF_PARSER_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>