bin/load/loader.c

/* [<][>]
[^][v][top][bottom][index][help] */

FUNCTIONS

This source file includes following functions.
  1. stop_updates
  2. main

   1 #include <sys/types.h>
   2 #include <fcntl.h>
   3 #include <signal.h>
   4 
   5 #include <ud.h>
   6 #include <ud_int.h>
   7 #include <constants.h>
   8 #include <properties.h>
   9 
  10 
  11 #include "ca_configFns.h"
  12 #include "ca_dictSyms.h"
  13 #include "ca_macros.h"
  14 #include "ca_srcAttribs.h"
  15 
  16 
  17 
  18 
  19 void stop_updates()
     /* [<][>][^][v][top][bottom][index][help] */
  20 {
  21  char print_buf[STR_M];
  22  
  23  fprintf(stderr, "Updates interrupted..\n");
  24  sprintf(print_buf, "%d", 0);
  25  CO_set_const("UD.do_update", print_buf);
  26  return;
  27 }
  28                       
  29 
  30 
  31 
  32 /***********************************************
  33 ******* MAIN **********************************
  34 ***********************************************/
  35 
  36 
  37 int main(int argc, char** argv) {
     /* [<][>][^][v][top][bottom][index][help] */
  38   FILE *file = NULL;
  39   FILE *logfile;
  40   char *logname="log.XXXX";
  41 int c;
  42 extern int optind;
  43 extern char *optarg;
  44 int errflg = 0;
  45 int dummy_allowed;
  46 int start_object;
  47 int num_ok, num_failed;
  48 long num_skip=0;
  49 struct _nrtm *nrtm=NULL;
  50 UD_stream_t ud_stream;
  51 Log_t log;
  52 int current_serial=-1;
  53 int load_pass=0;
  54 int delay=1;
  55 char *prop_file_name=NULL;
  56 char *logfilename=NULL;
  57 int do_update;
  58 char *source_name = "RIPE";
  59 ca_dbSource_t *source_hdl;
  60 char *db_host, *db_name, *db_user, *db_passwd;
  61 int db_port;
  62 
  63 
  64 
  65 struct sigaction sig;
  66   
  67   num_ok=0; num_failed=0;
  68   dummy_allowed=0;
  69   
  70 //  strcpy(db_host, "rowan.ripe.net");
  71 
  72   start_object = 1;
  73 
  74         while ((c = getopt(argc, argv, "n:M:L:p:s:?")) != EOF)
  75                 switch (c) {
  76                 case 'n':
  77                         num_skip=atol(optarg);
  78                         break;  
  79                 case 'p':
  80                         prop_file_name = optarg;
  81                         break;
  82                 case 'L':
  83                         load_pass=atoi(optarg);
  84                         dummy_allowed=1;
  85                         break;
  86                 case 's':
  87                         source_name=optarg;
  88                         break;
  89                 case '?':
  90                 default :
  91                         errflg++;
  92                         break;
  93                 }
  94                 if (errflg) {
  95                         fprintf(stderr,"usage: standalone [-L pass#] [-n num_skip] [-p properties] file\n");
  96                         exit (2);
  97                 }
  98 
  99 
 100 sig.sa_handler=stop_updates;
 101 sigemptyset(&sig.sa_mask);
 102 sig.sa_flags=SA_RESTART;
 103 sigaction(SIGINT, &sig, NULL);
 104 sigaction(SIGTERM, &sig, NULL);
 105 
 106   /* 2. Load properties object from prop_file. */
 107   fprintf(stderr,"Properties:\n");
 108   if(prop_file_name==NULL)prop_file_name=".properties";
 109   PR_load(prop_file_name);
 110   fprintf(stderr,"%s\n", PR_to_string() );
 111       
 112   /* 3. Set the constants. */
 113   fprintf(stderr,"Constants:\n");
 114   CO_set();
 115   fprintf(stderr,"%s\n", CO_to_string() );
 116             
 117  /* 3a. Populate dictionary and load config */
 118   ca_populateDictionary(dictionary, VARS);
 119   ca_readConfig(CO_get_config_file(), confVars, VARS);
 120   fprintf(stderr, "Configuration file: %s - ok\n", CO_get_config_file());
 121 
 122 
 123 /* set mode of operation: unprotected (dummy allowed), updates, standalone */
 124    ud_stream.ud_mode=7;
 125    
 126 /* get the source handle */
 127   source_hdl = ca_get_SourceHandleByName(source_name);
 128 
 129 /* get error log facility */
 130   logfilename=ca_get_srcnrtmlog(source_hdl);
 131      
 132                         
 133 /* Connect to the database */
 134    db_host = ca_get_srcdbmachine(source_hdl);
 135    db_port = ca_get_srcdbport(source_hdl);
 136    db_name = ca_get_srcdbname(source_hdl);
 137    db_user = ca_get_srcdbuser(source_hdl);
 138    db_passwd = ca_get_srcdbpassword(source_hdl);
 139  
 140 /*   fprintf(stderr, "D: Making SQL connection to %s@%s ...", CO_get_database(), CO_get_host()); */
 141   fprintf(stderr, "D: Making SQL connection to %s@%s ...", db_name, db_host);
 142 
 143 /*  ud_stream.db_connection=SQ_get_connection2(); */
 144   ud_stream.db_connection=SQ_get_connection(db_host, db_port, db_name, db_user, db_passwd);
 145      
 146  
 147   if(! ud_stream.db_connection) {
 148    fprintf(stderr, "D: ERROR: no SQL connection\n");
 149     return;
 150   }
 151         
 152   fprintf(stderr, "OK\n");
 153 
 154                             
 155                                                                                                             
 156  ud_stream.nrtm=NULL;
 157                                             
 158  ud_stream.log.logfile = fopen(logfilename, "a+");
 159  ud_stream.log.num_ok=0;
 160  ud_stream.log.num_failed=0;
 161 
 162   free(db_host);
 163   free(db_name);
 164   free(db_user);
 165   free(db_passwd);
 166   free(logfilename);
 167 
 168 
 169  if(optind<argc) file=fopen(argv[optind], "r"); else file=stdin;
 170 
 171  if (file==NULL) {      fprintf(stderr, "Cannot open data stream. Exiting..\n");
 172                         exit(1); }
 173 
 174 
 175   ud_stream.stream=file;
 176   ud_stream.num_skip=num_skip;
 177   ud_stream.load_pass=load_pass;
 178 
 179 /* Start to process the stream */
 180 
 181 fprintf(stderr, "starting processing stream\n");
 182   num_ok=UD_process_stream(&ud_stream);
 183 fprintf(stderr, "processing stream finished\n");
 184 fprintf(stderr, "%d objects processed\n", num_ok);
 185 
 186 return(0);
 187 
 188 } /* main() */
 189 
 190 
 191 
 192 

/* [<][>][^][v][top][bottom][index][help] */