summaryrefslogtreecommitdiff
path: root/src/lbtest_user.hh
diff options
context:
space:
mode:
authorMichael Larson <mike@vyatta.com>2011-03-30 12:09:58 -0700
committerMichael Larson <mike@vyatta.com>2011-03-30 12:09:58 -0700
commit25eef8bfb91c2c57907ab79f4ba6bcd9fe0064cb (patch)
tree53f6756f29c645fcec455bfec6a1bf8bdb53e50d /src/lbtest_user.hh
parent55cab2fbbf2ee75d6939a9210ddcaa5c72ed6981 (diff)
downloadvyatta-wanloadbalance-25eef8bfb91c2c57907ab79f4ba6bcd9fe0064cb.tar.gz
vyatta-wanloadbalance-25eef8bfb91c2c57907ab79f4ba6bcd9fe0064cb.zip
check in for Bug 6959
Add the ability to run a user defined script to determine wan load-balancing interface health includes sample http test (scripts/http_test.pl). Configuration will look as follows: wan { interface-health eth0 { nexthop 10.3.0.1 test 1 { test-script /tmp/http_test.pl type user-defined } } interface-health eth1 { nexthop 10.3.0.1 test 1 { test-script /tmp/http_test.pl type user-defined } } With corresponding output: vyatta@vyatta# run show wan-load-balance Interface: eth0 Status: active Last Status Change: Wed Mar 30 19:03:59 2011 +Test: user Script: /tmp/http_test.pl Last Interface Success: 0s Last Interface Failure: n/a # Interface Failure(s): 0 Interface: eth1 Status: failed Last Status Change: Wed Mar 30 19:03:59 2011 -Test: user Script: /tmp/http_test.pl Last Interface Success: n/a Last Interface Failure: 0s # Interface Failure(s): 52 Scripts returns 0 for success, non-zero for failure.
Diffstat (limited to 'src/lbtest_user.hh')
-rw-r--r--src/lbtest_user.hh67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/lbtest_user.hh b/src/lbtest_user.hh
new file mode 100644
index 0000000..534d4d0
--- /dev/null
+++ b/src/lbtest_user.hh
@@ -0,0 +1,67 @@
+/*
+ * Module: lbtest_user.hh
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ */
+#ifndef __LBTEST_USER_HH__
+#define __LBTEST_USER_HH__
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <iostream>
+#include "lbtest.hh"
+
+using namespace std;
+
+/**
+ *
+ *
+ **/
+class LBTestUser : public LBTest
+{
+public:
+ LBTestUser(bool debug) :
+ LBTest(debug)
+ {}
+ LBTestUser(bool debug, string &script) :
+ LBTest(debug),
+ _script(script)
+ {}
+ ~LBTestUser() {}
+
+ void
+ send(LBHealth &health);
+
+ std::string
+ get_script() const {return _script;}
+
+ void
+ set_script(std::string &script) {_script = script;}
+
+ string
+ dump();
+
+ string
+ name() {return string("user");}
+
+ //override, don't need base support for these.
+ void
+ init() {_status_line=name();}
+ void
+ start() {}
+ int
+ recv(LBHealth &health) {return (_state != LBTest::K_SUCCESS) ? -1 : 1;}
+
+
+private: //methods
+ int
+ system_out(const string &cmd, string &out);
+
+private: //variables
+ string _script;
+};
+
+#endif //__LBTEST_USER_HH__