1 | #ifndef READ_DEFS 2 | #define READ_DEFS 3 | 4 | /*************************************** 5 | $Revision: 1.14 $ 6 | 7 | Objects module (ob) - this _should_ eventually get merged in with the 8 | config module. 9 | 10 | Status: NOT REVUED, NOT TESTED 11 | 12 | ******************/ /****************** 13 | Copyright (c) 1999 RIPE NCC 14 | 15 | All Rights Reserved 16 | 17 | Permission to use, copy, modify, and distribute this software and its 18 | documentation for any purpose and without fee is hereby granted, 19 | provided that the above copyright notice appear in all copies and that 20 | both that copyright notice and this permission notice appear in 21 | supporting documentation, and that the name of the author not be 22 | used in advertising or publicity pertaining to distribution of the 23 | software without specific, written prior permission. 24 | 25 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 26 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL 27 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 28 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 29 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 30 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 31 | ***************************************/ 32 | #include <glib.h> 33 | #include "bitmask.h" 34 | 35 | #include "DF_class_enum.def" 36 | #include "DF_class_mask.def" 37 | 38 | #include "DF_attribute_enum.def" 39 | #include "DF_attribute_inv_attr_mask.def" 40 | 41 | typedef enum _R_Type_t { 42 | R_SQL=0, 43 | R_RADIX, 44 | R_END 45 | } R_Type_t; 46 | 47 | typedef enum _Q_Type_t { 48 | Q_LOOKUP=0, 49 | Q_INVERSE 50 | } Q_Type_t; 51 | 52 | #include "which_keytypes.h" 53 | #include "iproutines.h" 54 | #include "rxroutines.h" 55 | 56 | typedef struct { 57 | R_Type_t refer; 58 | Q_Type_t querytype; 59 | WK_Type keytype; 60 | A_Type_t attribute; 61 | C_Type_t class; 62 | char * const query; 63 | char * const descr; 64 | } Query_t; 65 | 66 | #ifdef DEFS_IMPL 67 | #include "QI_queries.def" 68 | #else 69 | extern Query_t Query[]; 70 | #endif 71 | 72 | 73 | typedef struct { 74 | A_Type_t attr; 75 | rx_fam_t family; 76 | char * ipv4_load; 77 | char * ipv6_load; 78 | } DF_Load_t; 79 | #ifdef DEFS_IMPL 80 | #include "DF_radix_load.def" 81 | #else 82 | extern DF_Load_t DF_radix_load[]; 83 | #endif 84 | 85 | 86 | 87 | typedef enum UD_qtype_t { 88 | UD_AUX__, 89 | UD_AX_PR, 90 | UD_AX_MT, 91 | UD_AX_MO, 92 | UD_AX_MR, 93 | UD_AX_MU, 94 | UD_LEAF_, 95 | UD_LF_IF, 96 | UD_LF_RF, 97 | UD_LF_AT, 98 | UD_LF_OT, 99 | UD_LF_AY, 100 | UD_MAIN_, 101 | UD_MA_RT, 102 | UD_MA_OR, 103 | UD_MA_PR, 104 | UD_MA_U2, 105 | UD_MA_IN, 106 | UD_MA_I6, 107 | UD_MA_AK, 108 | UD_NULL_ 109 | } UD_qtype; 110 | 111 | typedef struct UD_query_t { 112 | UD_qtype qtype; 113 | char * const qry; 114 | } UD_query; 115 | 116 | /* take nothing, return array of strings */ 117 | char * const *DF_get_filter_names(void); 118 | char * const *DF_get_class_names(void); 119 | char * const *DF_get_class_aliases(void); 120 | char * const *DF_get_attribute_aliases(void); 121 | char * const *DF_get_attribute_names(void); 122 | char * const *DF_get_server_queries(void); 123 | 124 | 125 | /* take class type enum, return the corresponding string */ 126 | char * const DF_get_class_sql_table(C_Type_t index); 127 | const char *DF_get_class_template(C_Type_t index); 128 | const char *DF_get_class_template_v(C_Type_t index); 129 | const char *DF_class_type2name(C_Type_t index); 130 | char * const DF_get_class_code(C_Type_t index); 131 | 132 | /* take index to class alias array */ 133 | int DF_get_class_index(int alias_index); 134 | 135 | /* index to attribute alias array */ 136 | int DF_get_attribute_index(int alias_index); 137 | 138 | /* take attribute type enum, return the corresponding string */ 139 | const char *DF_get_attribute_name(A_Type_t index); 140 | const char *DF_get_attribute_code(A_Type_t index); 141 | 142 | /* take attribute type enum, return UD related data: */ 143 | /* return the corresponding UD query string */ 144 | const char *DF_get_update_query(A_Type_t index); 145 | const char *DF_get_select_query(A_Type_t index); 146 | const char *DF_get_insert_query(A_Type_t index); 147 | const char *DF_get_dummy_query(A_Type_t index); 148 | /* return the corresponding UD query type */ 149 | UD_qtype DF_get_update_query_type(A_Type_t index); 150 | UD_qtype DF_get_insert_query_type(A_Type_t index); 151 | UD_qtype DF_get_select_query_type(A_Type_t index); 152 | UD_qtype DF_get_dummy_query_type(A_Type_t index); 153 | 154 | /* take attribute type enum, return radix related data: */ 155 | /* return boolean if attribute has a radix tree */ 156 | int DF_attrcode_has_radix_lookup(A_Type_t attr); 157 | /* return radix family */ 158 | rx_fam_t DF_attrcode_radix_family(A_Type_t attr); 159 | /* return query string to load the v4/v6 radix tree*/ 160 | char * DF_attrcode_radix_load_v4(A_Type_t attr); 161 | char * DF_attrcode_radix_load_v6(A_Type_t attr); 162 | 163 | /* take string, return corresponding enum code */ 164 | A_Type_t DF_attribute_code2type(const gchar *token); 165 | A_Type_t DF_attribute_name2type (const gchar *token); 166 | C_Type_t DF_class_code2type(const gchar *token); 167 | C_Type_t DF_class_name2type(const gchar *token); 168 | 169 | #endif /* READ_DEFS */ 170 |