crossroads

Git mirror of https://crossroads.e-tunity.com/
git clone git://git.finwo.net/app/crossroads
Log | Files | Refs

ipfloadfile.c (1491B)


      1 /*************************************************************************
      2  * This file is part of Crosroads 1.23, a load balancer and fail over
      3  * utility for TCP. Copyright (c) Karel Kubat, distributed under GPL.
      4  * Visit http://crossroads.e-tunity.com for information.
      5  *************************************************************************/
      6 #include "crossroads.h"
      7 
      8 int ipf_loadfile (char const *fname, IpFilter **chain, int *nchain) {
      9     FILE *f;
     10     char buf[80];
     11     int nloaded = 0, ret = 0;
     12     IpFilter filter;
     13 
     14     /* No file? No update. */
     15     if (!fname || !*fname)
     16 	return (0);
     17 
     18     msg ("Service %s: loading IP filter file: '%s'",
     19 	 activeservice->name, fname);
     20 
     21     if (! (f = fopen (fname, "r")) ) {
     22 	warning ("Service %s: can't read filter file '%s': %s",
     23 		 activeservice->name, fname, strerror(errno));
     24 	return (0);
     25     }
     26 
     27     free (*chain);
     28     *chain = 0;
     29     *nchain = 0;
     30 
     31     while (1) {
     32 	if (fscanf (f, " %79s ", buf) < 1)
     33 	    break;
     34 	if (ipf_parse (buf, &filter)) {
     35 	    warning ("Service %s: bad ip filter in file '%s'",
     36 		     activeservice->name, fname);
     37 	    ret++;
     38 	} else {
     39 	    msg ("Service %s: got ip filter specifier '%s'",
     40 		 activeservice->name, buf);
     41 	    *chain = xrealloc (*chain, (*nchain + 1) * sizeof(IpFilter));
     42 	    (*chain)[*nchain] = filter;
     43 	    (*nchain)++;
     44 	    nloaded++;
     45 	}
     46     }
     47 
     48     msg ("Service %s: loaded IP filter file '%s': %d successfully loaded",
     49 	 activeservice->name, fname, nloaded);
     50 
     51     fclose (f);
     52     return (ret);
     53 }