On Thu, Sep 27, 2007 at 05:15:04PM -0300, Henrique de Moraes Holschuh wrote:
> On Thu, 27 Sep 2007, Maupard Pierre wrote:
> > the computer I am usig rngd is an embedded system and I cant afford for
> > the hard drive to spin up hourly in order to print out the rngd entropy
> > report to the syslog. Could you please add a switch to turn off logging
> > altogether or at least some way to set a larger time interval between
> > reports ?
> 
> You could switch any useless logging off using a proper syslog daemon, btw.
> I suggest you try something more modern than sysklogd :-)
> 
> > If I have some free time Ill try to look the source myself and maybe
> > submit a patch.
> 
> Plese do.  It should be trivial to fix it in the source, actually.  Also,
> look at the one in experimental, I don't recall if it has an option to tweak
> the reports, but it just might.
> 
> -- 
>   "One disk to rule them all, One disk to find them. One disk to bring
>   them all and in the darkness grind them. In the Land of Redmond
>   where the shadows lie." -- The Silicon Valley Tarot
>   Henrique Holschuh

Hi again,

here is a quick patch, kept the default value of 3600s if no interval is
set.


-- 
Pierre MAUPARD
EFREI P2010 B1
Responsable serveur WEDUS
Responsable projo ASIANEFREI
Tresorier EFREI LINUX
diff -ru rng-tools-2-unofficial-mt.10/rngd.c 
rng-tools-2-unofficial-mt.10.new/rngd.c
--- rng-tools-2-unofficial-mt.10/rngd.c 2005-05-11 11:43:18.000000000 +0200
+++ rng-tools-2-unofficial-mt.10.new/rngd.c     2007-09-28 20:33:12.000000000 
+0200
@@ -71,8 +71,6 @@
  * Globals
  */
 
-#define        RNGD_STAT_SLEEP_TIME 3600
-
 /* Statistics */
 struct rng_stats rng_stats;
 
@@ -150,6 +148,10 @@
          "bits of entropy are available in the pool. n can be the absolute "
          "number of bits, or a percentage of the pool size (default: 50%), "
          "0 <= n <= kernel random pool size, or 0% <= n <= 100%" },
+       
+       { "stats-interval", 'S', "n", 0,
+         "Write stats to output channel every n seconds. (default: 3600),"
+         "10 <= n <= UINT_MAX" },
 
        { 0 },
 };
@@ -164,6 +166,7 @@
        .daemon         = 1,
        .rng_entropy    = 1.0,
        .rng_buffers    = 3,
+       .stats_interval = 3600,
 };
 struct arguments *arguments = &default_arguments;
 
@@ -233,6 +236,16 @@
        static unsigned int seen_opt = 0;
        
        switch(key) {
+       case 'S': {
+               long int n;
+               char *p;
+               n = strtol(arg, &p, 10);
+               if ((p == arg) || (*p != 0) || (n < 10) || (n >= UINT_MAX))
+                       argp_usage(state);
+               else
+                       arguments->stats_interval = n;
+               break;
+       }
        case 'o':
                arguments->random_name = arg;
                break;
@@ -608,12 +621,10 @@
         * All we can do now is spin around waiting for a hit to the head.
         * Dump stats every hour, and at exit...
         */
-       sleeptime = RNGD_STAT_SLEEP_TIME;
+       sleeptime = arguments->stats_interval;
        while (!gotsigterm) {
-               sleeptime = sleep(sleeptime);
-               if ((sleeptime == 0) || gotsigusr1 || gotsigterm) {
+               if (!sleep(sleeptime) || gotsigusr1 || gotsigterm) {
                        dump_rng_stats();
-                       sleeptime = RNGD_STAT_SLEEP_TIME;
                        gotsigusr1 = 0;
                }
        }
diff -ru rng-tools-2-unofficial-mt.10/rngd.h 
rng-tools-2-unofficial-mt.10.new/rngd.h
--- rng-tools-2-unofficial-mt.10/rngd.h 2004-11-02 06:32:58.000000000 +0100
+++ rng-tools-2-unofficial-mt.10.new/rngd.h     2007-09-28 20:33:13.000000000 
+0200
@@ -59,6 +59,7 @@
 
        double rng_entropy;
        int rng_buffers;
+       int stats_interval;
 };
 extern struct arguments *arguments;

Reply via email to