diff options
| author | Michael Larson <mike@vyatta.com> | 2011-03-30 12:09:58 -0700 |
|---|---|---|
| committer | Michael Larson <mike@vyatta.com> | 2011-03-30 12:09:58 -0700 |
| commit | 25eef8bfb91c2c57907ab79f4ba6bcd9fe0064cb (patch) | |
| tree | 53f6756f29c645fcec455bfec6a1bf8bdb53e50d /src/lbtest_user.hh | |
| parent | 55cab2fbbf2ee75d6939a9210ddcaa5c72ed6981 (diff) | |
| download | vyatta-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.hh | 67 |
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__ |
