include/ud_int.h
/* [<][>][^][v][top][bottom][index][help] */
FUNCTIONS
This source file includes following functions.
1 /***************************************
2 $Revision: 1.13 $
3
4 Semi-internal header file for UD module
5
6 Status: NOT REVUED, NOT TESTED
7
8 Author(s): Andrei Robachevsky
9
10 ******************/ /******************
11 Modification History:
12 andrei (17/01/2000) Created.
13 ******************/ /******************
14 Copyright (c) 2000 RIPE NCC
15
16 All Rights Reserved
17
18 Permission to use, copy, modify, and distribute this software and its
19 documentation for any purpose and without fee is hereby granted,
20 provided that the above copyright notice appear in all copies and that
21 both that copyright notice and this permission notice appear in
22 supporting documentation, and that the name of the author not be
23 used in advertising or publicity pertaining to distribution of the
24 software without specific, written prior permission.
25
26 THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
27 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL
28 AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
29 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
30 AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
31 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
32 ***************************************/
33 #ifndef _UD_INT_H
34 #define _UD_INT_H
35
36 #include <stdio.h>
37 #include <strings.h>
38 #include <glib.h>
39 #include <stdlib.h>
40 #include <ctype.h>
41 #include <unistd.h>
42
43 #include "defs.h"
44 #include "mysql_driver.h"
45 #include "iproutines.h"
46 #include "rp.h"
47 #include "nh.h"
48
49 #include "ca_configFns.h"
50 #include "ca_dictSyms.h"
51 #include "ca_macros.h"
52 #include "ca_srcAttribs.h"
53
54
55
56
57 #include "globaldefs.h"
58 /* #include "isnic.h" */
59 #include "bitmask.h"
60 #include "which_keytypes.h"
61
62
63 /*+ String sizes +*/
64 #define STR_S 63
65 #define STR_M 255
66 #define STR_L 1023
67 #define STR_XL 4095
68 #define STR_XXL 16383
69 #define STR_XXXL 65535
70
71
72 #define MAX_NIC_HDL 30
73
74
75 /* class type for dummy objects */
76 #define DUMMY_TYPE 100
77
78
79 typedef struct _Attribute_t {
80 A_Type_t type;
81 char *value;
82 } Attribute_t;
83
84 typedef struct _Object_t {
85 C_Type_t type;
86 long id;
87 GSList *attributes;
88 GString *object;
89 } Object_t;
90
91 #define MAX_DUMMIES 256
92
93 typedef struct _Transaction {
94 Object_t *object; /* ptr to the object */
95 C_Type_t class_type;
96 int action; /* indicates wether we are updating/deleting creating a new object */
97 SQ_connection_t *sql_connection;
98 int thread_ins; /* Thread number to mark(backup) creates */
99 int thread_upd; /* Thread number to mark(backup) updates */
100 long object_id; /* Object id which the transaction is carried out for */
101 long sequence_id; /* for last and history tables */
102 int dummy; /* Permission to create dummies for PE, RO objects (initial population) */
103 int ndummy; /* number of attempts to create dummy */
104 long dummy_id[MAX_DUMMIES]; /* to store object_id's of dummies */
105 int load_pass; /* No. of the pass for initial loading , 0 otherwise */
106 int standalone; /* 0 if server */
107 int succeeded;
108 int error;
109 GString *error_script;
110 char *save; /* for saving attribute (U2 & pn:) values */
111 rp_upd_pack_t *packptr; /* To store radix tree data */
112 nic_handle_t *nh; /* To store NIC handle data */
113 ca_dbSource_t *source_hdl;
114 } Transaction_t;
115
116 /*++++++++++++++++++++++++++++++++++++++++++++*/
117
118 /* Definitions for "refer" (domain referral mechanism) */
119 #define S_RIPE "RIPE"
120 #define S_INTERNIC "InterNIC"
121 #define S_SIMPLE "SIMPLE"
122 #define S_CLIENTADDERSS "CLIENTADDRESS"
123
124
125 typedef enum {
126 RF_RIPE=1,
127 RF_INTERNIC,
128 RF_SIMPLE,
129 RF_CLIENTADDRESS
130 } refer_t;
131
132 #define RF_DEF_PORT 43
133
134
135 struct _nrtm {
136 const char *server; /* the hostname of the server */
137 int port;
138 int version;
139 long current_serial;
140 Transaction_t *tr;
141 char object_name[STR_XXL];
142 int op;
143 };
144
145 typedef struct _Log_t {
146 int num_ok;
147 int num_failed;
148 FILE *logfile;
149 } Log_t;
150
151 typedef struct UD_stream_t_ {
152 FILE * stream;
153 int num_skip;
154 int load_pass;
155 int ud_mode;
156 struct _nrtm *nrtm;
157 SQ_connection_t *db_connection;
158 ca_dbSource_t *source_hdl; /* source we are mirroring */
159 Log_t log;
160 char *error_script;
161 } UD_stream_t;
162
163
164
165
166 /*++++++++++++++++++ Function Prototypes +++++++++++++++++++++*/
167
168 int get_NRTM_fd(struct _nrtm *nrtm, int upto_last, char *source);
169
170 int UD_process_stream(UD_stream_t *ud_stream);
171
172 int object_process(Transaction_t *tr);
173
174 int commit(Transaction_t *tr);
175
176 int rollback(Transaction_t *tr);
177
178 int delete(Transaction_t *tr);
179
180
181
182 int isdummy(Transaction_t *tr);
183 long get_object_id(Transaction_t *tr);
184 long get_sequence_id(Transaction_t *tr);
185 char *get_field_str(SQ_connection_t *sql_connection, char *field,
186 char *ref_tbl_name, char *ref_name,
187 char * attr_value, char *condition);
188 char *get_qresult_str(SQ_connection_t *sql_connection, char *query);
189
190
191 void attribute_free(void *data, void *ptr);
192
193 Attribute_t *attribute_upd(Attribute_t *attr, int newtype, char *newvalue);
194
195 Attribute_t *attribute_new1(int type, const char *value);
196
197 Attribute_t *attribute_new(const char *line);
198
199 void object_free(Object_t *obj);
200
201 Object_t *object_new(const char *line);
202
203 void transaction_free(Transaction_t *tr);
204
205 Transaction_t *transaction_new(SQ_connection_t *sql_connection, C_Type_t class_type);
206
207 void get_rx_data(void *element_data, void *tr_ptr);
208
209
210 #if 0
211 void set_rx_orig(rx_bin_data_t *rx_data, char *origin);
212 void set_rx_pref4(char *avalue, rx_bin_data_t *rx_data,
213 unsigned *prefix, unsigned *prefix_length);
214 void set_rx_pref6(char *avalue, rx_bin_data_t *rx_data,
215 ip_v6word_t *high, ip_v6word_t *low, unsigned *prefix_length);
216 void set_rx_rang(char *avalue, rx_inum_data_t *rx_data,
217 unsigned *begin_in, unsigned *end_in);
218 int update_rx_inum(rx_oper_mt mode, rx_regid_t reg_id, rx_inum_data_t *rx_data, long in_id);
219 int update_rx_bin(rx_oper_mt mode, rx_regid_t reg_id, rx_bin_data_t *rx_data, long rt_id);
220 int update_rx_dom(rx_oper_mt mode, rx_regid_t reg_id, rx_dom_data_t *rx_data, long dn_id);
221 #endif
222
223 char *convert_rf(char *avalue, int *type, int *port);
224 int convert_as_range(const char *as_range, int *begin, int *end);
225 time_t convert_time(char *asc_time);
226
227
228 long create_serial(Transaction_t *tr);
229
230
231 #endif /* _UD_INT_H */
232