aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorlloyd <[email protected]>2010-09-03 17:46:02 +0000
committerlloyd <[email protected]>2010-09-03 17:46:02 +0000
commit2652e5ebe30bfc5b66af3b893d0a7fb29abb5695 (patch)
treed4361e0ecb9a120d74cacd828e57b9841e8b8365 /src
parent6cf76b6bdc022887098301e71df7eebeef1d280b (diff)
Clean up the unix process running entropy source a little bit. Tweak
priorities slightly, pushing netstat -s and netstat -an higher since they change freqently and don't have a huge amount of output. Use the -n flag with lsof, which inhibits name lookups which we don't need.
Diffstat (limited to 'src')
-rw-r--r--src/entropy/unix_procs/es_unix.cpp11
-rw-r--r--src/entropy/unix_procs/es_unix.h2
-rw-r--r--src/entropy/unix_procs/unix_src.cpp46
3 files changed, 35 insertions, 24 deletions
diff --git a/src/entropy/unix_procs/es_unix.cpp b/src/entropy/unix_procs/es_unix.cpp
index 3a5c5aca1..8e1bb2cc8 100644
--- a/src/entropy/unix_procs/es_unix.cpp
+++ b/src/entropy/unix_procs/es_unix.cpp
@@ -9,6 +9,7 @@
#include <botan/internal/unix_cmd.h>
#include <botan/parsing.h>
#include <algorithm>
+
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/resource.h>
@@ -22,7 +23,12 @@ namespace {
* Sort ordering by priority
*/
bool Unix_Program_Cmp(const Unix_Program& a, const Unix_Program& b)
- { return (a.priority < b.priority); }
+ {
+ if(a.priority < b.priority)
+ return true;
+
+ return (a.name_and_args < b.name_and_args);
+ }
}
@@ -32,7 +38,8 @@ bool Unix_Program_Cmp(const Unix_Program& a, const Unix_Program& b)
Unix_EntropySource::Unix_EntropySource(const std::vector<std::string>& path) :
PATH(path)
{
- add_default_sources(sources);
+ std::vector<Unix_Program> default_sources = get_default_sources();
+ add_sources(&default_sources[0], default_sources.size());
}
/**
diff --git a/src/entropy/unix_procs/es_unix.h b/src/entropy/unix_procs/es_unix.h
index 03496b364..415cce9fe 100644
--- a/src/entropy/unix_procs/es_unix.h
+++ b/src/entropy/unix_procs/es_unix.h
@@ -27,7 +27,7 @@ class Unix_EntropySource : public EntropySource
void add_sources(const Unix_Program[], u32bit);
Unix_EntropySource(const std::vector<std::string>& path);
private:
- static void add_default_sources(std::vector<Unix_Program>&);
+ static std::vector<Unix_Program> get_default_sources();
void fast_poll(Entropy_Accumulator& accum);
const std::vector<std::string> PATH;
diff --git a/src/entropy/unix_procs/unix_src.cpp b/src/entropy/unix_procs/unix_src.cpp
index a72ecf055..51af6bd40 100644
--- a/src/entropy/unix_procs/unix_src.cpp
+++ b/src/entropy/unix_procs/unix_src.cpp
@@ -12,50 +12,54 @@ namespace Botan {
/**
* Default Commands for Entropy Gathering
*/
-void Unix_EntropySource::add_default_sources(std::vector<Unix_Program>& srcs)
+std::vector<Unix_Program> Unix_EntropySource::get_default_sources()
{
- srcs.push_back(Unix_Program("vmstat", 1));
- srcs.push_back(Unix_Program("vmstat -s", 1));
- srcs.push_back(Unix_Program("pfstat", 1));
+ std::vector<Unix_Program> srcs;
+
srcs.push_back(Unix_Program("netstat -in", 1));
+ srcs.push_back(Unix_Program("pfstat", 1));
+ srcs.push_back(Unix_Program("vmstat -s", 1));
+ srcs.push_back(Unix_Program("vmstat", 1));
+ srcs.push_back(Unix_Program("arp -a -n", 2));
+ srcs.push_back(Unix_Program("ifconfig -a", 2));
srcs.push_back(Unix_Program("iostat", 2));
+ srcs.push_back(Unix_Program("ipcs -a", 2));
srcs.push_back(Unix_Program("mpstat", 2));
+ srcs.push_back(Unix_Program("netstat -an", 2));
+ srcs.push_back(Unix_Program("netstat -s", 2));
srcs.push_back(Unix_Program("nfsstat", 2));
srcs.push_back(Unix_Program("portstat", 2));
- srcs.push_back(Unix_Program("arp -a -n", 2));
- srcs.push_back(Unix_Program("ifconfig -a", 2));
+ srcs.push_back(Unix_Program("procinfo -a", 2));
srcs.push_back(Unix_Program("pstat -T", 2));
srcs.push_back(Unix_Program("pstat -s", 2));
srcs.push_back(Unix_Program("uname -a", 2));
srcs.push_back(Unix_Program("uptime", 2));
- srcs.push_back(Unix_Program("ipcs -a", 2));
- srcs.push_back(Unix_Program("procinfo -a", 2));
- srcs.push_back(Unix_Program("sysinfo", 3));
srcs.push_back(Unix_Program("listarea", 3));
srcs.push_back(Unix_Program("listdev", 3));
-
- srcs.push_back(Unix_Program("who", 3));
- srcs.push_back(Unix_Program("finger", 3));
- srcs.push_back(Unix_Program("netstat -s", 3));
- srcs.push_back(Unix_Program("netstat -an", 3));
srcs.push_back(Unix_Program("ps -A", 3));
- srcs.push_back(Unix_Program("mailstats", 3));
- srcs.push_back(Unix_Program("rpcinfo -p localhost", 3));
+ srcs.push_back(Unix_Program("sysinfo", 3));
+
+ srcs.push_back(Unix_Program("finger", 4));
+ srcs.push_back(Unix_Program("mailstats", 4));
+ srcs.push_back(Unix_Program("rpcinfo -p localhost", 4));
+ srcs.push_back(Unix_Program("who", 4));
- srcs.push_back(Unix_Program("dmesg", 4));
- srcs.push_back(Unix_Program("ls -alni /tmp", 4));
- srcs.push_back(Unix_Program("ls -alni /proc", 4));
srcs.push_back(Unix_Program("df -l", 4));
+ srcs.push_back(Unix_Program("dmesg", 4));
srcs.push_back(Unix_Program("last -5", 4));
+ srcs.push_back(Unix_Program("ls -alni /proc", 4));
+ srcs.push_back(Unix_Program("ls -alni /tmp", 4));
srcs.push_back(Unix_Program("pstat -f", 4));
- srcs.push_back(Unix_Program("ps aux", 5));
srcs.push_back(Unix_Program("ps -elf", 5));
+ srcs.push_back(Unix_Program("ps aux", 5));
+ srcs.push_back(Unix_Program("lsof -n", 6));
srcs.push_back(Unix_Program("sar -A", 6));
- srcs.push_back(Unix_Program("lsof", 6));
+
+ return srcs;
}
}