1 | /****************** 2 | Copyright (c) 2002 RIPE NCC 3 | 4 | All Rights Reserved 5 | 6 | Permission to use, copy, modify, and distribute this software and its 7 | documentation for any purpose and without fee is hereby granted, 8 | provided that the above copyright notice appear in all copies and that 9 | both that copyright notice and this permission notice appear in 10 | supporting documentation, and that the name of the author not be 11 | used in advertising or publicity pertaining to distribution of the 12 | software without specific, written prior permission. 13 | 14 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 15 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL 16 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 17 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 18 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 19 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20 | ***************************************/ 21 | 22 | #ifndef UPDATE_UPPER_H 23 | #define UPDATE_UPPER_H 24 | 25 | 26 | #include <stdio.h> 27 | #include <stdlib.h> 28 | #include <string.h> 29 | #include <stubs.h> 30 | /*#include <string>*/ 31 | #include <glib.h> 32 | /*#include <iostream.h> 33 | #include <fstream>*/ 34 | 35 | #include <netdb.h> 36 | #include <sys/types.h> 37 | #include <netinet/in.h> 38 | #include <sys/socket.h> 39 | #include <errno.h> 40 | #include <unistd.h> 41 | 42 | #include "rip.h" 43 | #undef close 44 | 45 | #include <config.h> 46 | /* #include <istream.h> 47 | #include "rpsl/object.hh" 48 | #include "util/rusage.hh" 49 | #include "util/debug.hh" 50 | #include "util/trace.hh" 51 | #include "util/Argv.hh" 52 | #include "util/version.hh" 53 | #ifdef IRR_NEEDED 54 | #include "irr/irr.hh" 55 | #include "irr/rawhoisc.hh" 56 | #endif */ /* IRR_NEEDED */ 57 | /* #include "rpsl/schema.hh" 58 | */ 59 | #include "erroutines.h" 60 | #include "AU_util.h" 61 | #include "ack.h" 62 | #define private private_xx 63 | #include "mm.h" 64 | #include "mysql_driver.h" 65 | /*#include "mail_parser.h"*/ 66 | #undef private 67 | 68 | 69 | #define MAXDATASIZE 100 /* max number of bytes we can get at once */ 70 | 71 | #define OVR_OK 0 /* override succeded */ 72 | 73 | 74 | #define ACK_FILE_PREFIX "ack" 75 | 76 | extern char *current_source; 77 | 78 | typedef enum { 79 | UP_AUTH_OK=0, /* Auth succeded */ 80 | UP_MOR, /* got more than one object from the db, where extected only one */ 81 | UP_NSO, /* no such object */ 82 | UP_AUF, /* auth failed */ 83 | UP_NIY, /* not implemented yet */ 84 | UP_ABN, /* as-block does not exist */ 85 | UP_HOF, /* hierarchical auth failed */ 86 | UP_OVF, /* override failed */ 87 | UP_OVS, /* override syntax error */ 88 | UP_NOM, /* no match. the old & nw versions of the object are not the same */ 89 | UP_ANE, /* AUTO NIC hdl error */ 90 | UP_FWD, /* mntner or as-block creation will be forwarded to <HUMAILBOX> */ 91 | UP_SYN, /* syntax error in the object */ 92 | UP_NAM, /* name of a person/role object cannot be changed */ 93 | UP_INT, /* internal error */ 94 | UP_MFF, /* failed with MAIL-FROM auth method only */ 95 | UP_MIX, /* failed with mix of MAIL-FROM and other auth methods */ 96 | UP_OKM /* Auth succeded but also contained a deprecated MAIL-FROM */ 97 | 98 | } return_codes; 99 | 100 | typedef struct _up_ripupd_result_struct { 101 | int result; 102 | char * error_str; 103 | } up_ripupd_result_struct; 104 | 105 | 106 | 107 | up_ripupd_result_struct * send_object_db(rpsl_object_t * object, char * assigned_NIC, char * operation); 108 | 109 | /* char * get_class_type(Object *arg); */ 110 | 111 | char * get_search_key(rpsl_object_t *object, const char * type); 112 | 113 | /* GSList *get_attributes(Object * o, const char * attrib, const char * text); */ 114 | 115 | char * send_and_get(char * host, int port, char * arg); 116 | 117 | int count_objects(char * arg); 118 | 119 | char * take_object(char * arg); 120 | 121 | char * get_as_block(rpsl_object_t *autnum_object); 122 | 123 | char * get_less_specific_domain(rpsl_object_t *domain_object); 124 | 125 | char * get_less_specific_set(rpsl_object_t *set_object, const char *type); 126 | 127 | char * get_less_specific(rpsl_object_t *inetnum_object, const char *type); 128 | 129 | GList *get_mntners(rpsl_object_t * object); 130 | 131 | GList *get_auths(char * object_str); 132 | 133 | GList *get_attr_list(rpsl_object_t * object, const char * attr_type); 134 | 135 | GList *get_mnt_lowers(rpsl_object_t * object); 136 | 137 | char *get_override(rpsl_object_t * object); 138 | 139 | int check_override(char * string); 140 | 141 | GSList * add_to_auth_vector(GSList * list_of_auth_struct, GList * auths, char * mntner_name); 142 | 143 | GSList * get_auth_vector(GList * mntners); 144 | 145 | GList * get_mntnfy_vector(GList * mntners); 146 | 147 | int check_auth(rpsl_object_t *new_object, rpsl_object_t *old_object, const char *type, credentials_struct credentials); 148 | 149 | char * get_old_version(rpsl_object_t * object, char * arg); 150 | 151 | /* int process_object(char * arg, credentials_struct credentials, GHashTable * NIC_hdl_hash, char * ack_file_name); */ 152 | 153 | void process_mail_header(credentials_struct * credentials_ptr ,char * header); 154 | 155 | int has_ref_to_AUTO_nic_hdl(rpsl_object_t * object); 156 | 157 | char * find_email_address(const char * from_line); 158 | 159 | char * replace_refs_to_AUTO_NIC_hdl(rpsl_object_t * object, GHashTable * auto_nic_hash , char *arg); 160 | 161 | int identical(const char * old_version, rpsl_object_t * object); 162 | 163 | int has_AUTO_NIC_hdl(const rpsl_object_t * object); 164 | 165 | rpsl_object_t * replace_AUTO_NIC_hdl(rpsl_object_t * object, char * auto_nic_hdl); 166 | 167 | /* char * get_class_type_char(char * object); */ 168 | 169 | void up_string_pack(char *dest, const char *source); 170 | 171 | void UP_add_to_upd_log(const char * filename); 172 | 173 | void UP_log_networkupdate(const char * object_str, const char * host); 174 | 175 | 176 | #endif