Annotation of embedaddon/strongswan/src/libstrongswan/resolver/resolver_response.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2012 Reto Guadagnini
                      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 rsolver_response resolver_response
                     18:  * @{ @ingroup resolver
                     19:  */
                     20: 
                     21: #ifndef RESOLVER_RESPONSE_H_
                     22: #define RESOLVER_RESPONSE_H_
                     23: 
                     24: typedef struct resolver_response_t resolver_response_t;
                     25: typedef enum dnssec_status_t dnssec_status_t;
                     26: 
                     27: #include <library.h>
                     28: #include <resolver/rr_set.h>
                     29: 
                     30: /**
                     31:  * DNSSEC security state.
                     32:  *
                     33:  * DNSSEC security state, which a security aware resolver is able determine
                     34:  * according to RFC 4033.
                     35:  */
                     36: enum dnssec_status_t {
                     37:        /**
                     38:         * The validating resolver has a trust anchor, has a chain of
                     39:         * trust, and is able to verify all the signatures in the response.
                     40:         * [RFC4033]
                     41:         */
                     42:        SECURE,
                     43:        /**
                     44:         * The validating resolver has a trust anchor, a chain of
                     45:         * trust, and, at some delegation point, signed proof of the
                     46:         * non-existence of a DS record.  This indicates that subsequent
                     47:         * branches in the tree are provably insecure.  A validating resolver
                     48:         * may have a local policy to mark parts of the domain space as
                     49:         * insecure. [RFC4033]
                     50:         */
                     51:        INSECURE,
                     52:        /**
                     53:         * The validating resolver has a trust anchor and a secure
                     54:         * delegation indicating that subsidiary data is signed, but the
                     55:         * response fails to validate for some reason: missing signatures,
                     56:         * expired signatures, signatures with unsupported algorithms, data
                     57:         * missing that the relevant NSEC RR says should be present, and so
                     58:         * forth. [RFC4033]
                     59:         */
                     60:        BOGUS,
                     61:        /**
                     62:         * There is no trust anchor that would indicate that a
                     63:         * specific portion of the tree is secure.  This is the default
                     64:         * operation mode. [RFC4033]
                     65:         */
                     66:        INDETERMINATE,
                     67: };
                     68: 
                     69: 
                     70: /**
                     71:  * A response of the DNS resolver to a DNS query.
                     72:  *
                     73:  * A response represents the answer of the Domain Name System to a query.
                     74:  * It contains the RRset with the queried Resource Records and additional
                     75:  * information.
                     76:  */
                     77: struct resolver_response_t {
                     78: 
                     79:     /**
                     80:      * Get the original question string.
                     81:      *
                     82:      * The string to which the returned pointer points, is still owned
                     83:         * by the resolver_response. Clone it if necessary.
                     84:      *
                     85:      * @return                 the queried name
                     86:      */
                     87:        char *(*get_query_name)(resolver_response_t *this);
                     88: 
                     89:        /**
                     90:         * Get the canonical name of the result.
                     91:         *
                     92:         * The string to which the returned pointer points, is still owned
                     93:         * by the resolver_response. Clone it if necessary.
                     94:         *
                     95:         * @return                      - canonical name of result
                     96:         *                                      - NULL, if result has no canonical name
                     97:         */
                     98:        char *(*get_canon_name)(resolver_response_t *this);
                     99: 
                    100:        /**
                    101:         * Does the RRset of this response contain some Resource Records?
                    102:         *
                    103:         * Returns TRUE if the RRset of this response contains some RRs
                    104:         * (RRSIG Resource Records are ignored).
                    105:         *
                    106:         * @return
                    107:         *                                      - TRUE, if there are some RRs in the RRset
                    108:         *                                      - FALSE, otherwise
                    109:         */
                    110:        bool (*has_data)(resolver_response_t *this);
                    111: 
                    112:        /**
                    113:         * Does the queried name exist?
                    114:         *
                    115:         * @return
                    116:         *                                      - TRUE, if the queried name exists
                    117:         *                                      - FALSE, otherwise
                    118:         */
                    119:        bool (*query_name_exist)(resolver_response_t *this);
                    120: 
                    121:        /**
                    122:         * Get the DNSSEC security state of the response.
                    123:         *
                    124:         * @return                      DNSSEC security state
                    125:         */
                    126:        dnssec_status_t (*get_security_state)(resolver_response_t *this);
                    127: 
                    128:        /**
                    129:         * Get the RRset with all Resource Records of this response.
                    130:         *
                    131:         * @return                      - RRset
                    132:         *                                      - NULL if there is no data or the query name
                    133:         *                                        does not exist
                    134:         */
                    135:        rr_set_t *(*get_rr_set)(resolver_response_t *this);
                    136: 
                    137:        /**
                    138:         * Destroy this response.
                    139:         */
                    140:        void (*destroy) (resolver_response_t *this);
                    141: };
                    142: 
                    143: #endif /** RR_SET_H_ @}*/

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