include/ud_int.h
/* [<][>][^][v][top][bottom][index][help] */
FUNCTIONS
This source file includes following functions.
1 /***************************************
2 $Revision: 1.10 $
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
50 #include "globaldefs.h"
51 /* #include "isnic.h" */
52 #include "bitmask.h"
53 #include "which_keytypes.h"
54
55
56 /*+ String sizes +*/
57 #define STR_S 63
58 #define STR_M 255
59 #define STR_L 1023
60 #define STR_XL 4095
61 #define STR_XXL 16383
62 #define STR_XXXL 65535
63
64
65 #define MAX_NIC_HDL 30
66
67
68 /* class type for dummy objects */
69 #define DUMMY_TYPE 100
70
71
72 typedef struct _Attribute_t {
73 A_Type_t type;
74 char *value;
75 } Attribute_t;
76
77 typedef struct _Object_t {
78 C_Type_t type;
79 long id;
80 GSList *attributes;
81 GString *object;
82 } Object_t;
83
84 #define MAX_DUMMIES 16
85
86 typedef struct _Transaction {
87 SQ_connection_t *sql_connection;
88 Object_t *object; /* ptr to the object */
89 int thread_ins; /* Thread number to mark(backup) creates */
90 int thread_upd; /* Thread number to mark(backup) updates */
91 long object_id; /* Object id which the transaction is carried out for */
92 long sequence_id; /* for last and history tables */
93 int dummy; /* Permission to create dummies for PE, RO objects (initial population) */
94 int ndummy; /* number of attempts to create dummy */
95 long dummy_id[MAX_DUMMIES]; /* to store object_id's of dummies */
96 int action; /* indicates wether we are updating/deleting creating a new object */
97 int load_pass; /* No. of the pass for initial loading , 0 otherwise */
98 int standalone; /* 0 if server */
99 C_Type_t class_type;
100 int succeeded;
101 int error;
102 GString *error_script;
103 char *save; /* for saving attribute (U2 & pn:) values */
104 rp_upd_pack_t *packptr; /* To store radix tree data */
105 nic_handle_t *nh; /* To store NIC handle data */
106 } Transaction_t;
107
108 /*++++++++++++++++++++++++++++++++++++++++++++*/
109
110 /* Definitions for "refer" (domain referral mechanism) */
111 #define S_RIPE "RIPE"
112 #define S_INTERNIC "InterNIC"
113 #define S_SIMPLE "SIMPLE"
114 #define S_CLIENTADDERSS "CLIENTADDRESS"
115
116
117 typedef enum {
118 RF_RIPE=1,
119 RF_INTERNIC,
120 RF_SIMPLE,
121 RF_CLIENTADDRESS
122 } refer_t;
123
124 #define RF_DEF_PORT 43
125
126
127 struct _nrtm {
128 const char *server;
129 int port;
130 int version;
131 long current_serial;
132 Transaction_t *tr;
133 char object_name[STR_M];
134 int op;
135 };
136
137 typedef struct _Log_t {
138 int num_ok;
139 int num_failed;
140 FILE *logfile;
141 } Log_t;
142
143 typedef struct UD_stream_t_ {
144 FILE * stream;
145 int num_skip;
146 int load_pass;
147 int ud_mode;
148 struct _nrtm *nrtm;
149 /*const char *db_host;
150 int db_port;
151 const char *db_name;
152 const char *db_user;
153 const char *db_pswd; */
154 SQ_connection_t *db_connection;
155 Log_t log;
156 char *error_script;
157 } UD_stream_t;
158
159
160
161
162 /*++++++++++++++++++ Function Prototypes +++++++++++++++++++++*/
163
164 FILE *get_NRTM_stream(struct _nrtm *nrtm, int upto_last);
165
166 int UD_process_stream(UD_stream_t *ud_stream);
167
168 int object_process(Transaction_t *tr);
169
170 int commit(Transaction_t *tr);
171
172 int rollback(Transaction_t *tr);
173
174 int delete(Transaction_t *tr);
175
176
177
178 int isdummy(Transaction_t *tr);
179 long get_object_id(Transaction_t *tr);
180 long get_sequence_id(Transaction_t *tr);
181 char *get_field_str(SQ_connection_t *sql_connection, char *field,
182 char *ref_tbl_name, char *ref_name,
183 char * attr_value, char *condition);
184 char *get_qresult_str(SQ_connection_t *sql_connection, char *query);
185
186
187 void attribute_free(void *data, void *ptr);
188
189 Attribute_t *attribute_upd(Attribute_t *attr, int newtype, char *newvalue);
190
191 Attribute_t *attribute_new1(int type, const char *value);
192
193 Attribute_t *attribute_new(const char *line);
194
195 void object_free(Object_t *obj);
196
197 Object_t *object_new(const char *line);
198
199 void transaction_free(Transaction_t *tr);
200
201 Transaction_t *transaction_new(SQ_connection_t *sql_connection, C_Type_t class_type);
202
203 void get_rx_data(void *element_data, void *tr_ptr);
204
205 #if 0
206 void set_rx_orig(rx_bin_data_t *rx_data, char *origin);
207 void set_rx_pref4(char *avalue, rx_bin_data_t *rx_data,
208 unsigned *prefix, unsigned *prefix_length);
209 void set_rx_pref6(char *avalue, rx_bin_data_t *rx_data,
210 ip_v6word_t *high, ip_v6word_t *low, unsigned *prefix_length);
211 void set_rx_rang(char *avalue, rx_inum_data_t *rx_data,
212 unsigned *begin_in, unsigned *end_in);
213 int update_rx_inum(rx_oper_mt mode, rx_regid_t reg_id, rx_inum_data_t *rx_data, long in_id);
214 int update_rx_bin(rx_oper_mt mode, rx_regid_t reg_id, rx_bin_data_t *rx_data, long rt_id);
215 int update_rx_dom(rx_oper_mt mode, rx_regid_t reg_id, rx_dom_data_t *rx_data, long dn_id);
216 #endif
217
218 char *convert_rf(char *avalue, int *type, int *port);
219 int convert_as_range(const char *as_range, int *begin, int *end);
220 time_t convert_time(char *asc_time);
221
222
223 long create_serial(Transaction_t *tr);
224
225
226 #endif /* _UD_INT_H */
227