summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lbdecision.cc27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/lbdecision.cc b/src/lbdecision.cc
index 4893a64..1eefe05 100644
--- a/src/lbdecision.cc
+++ b/src/lbdecision.cc
@@ -299,21 +299,22 @@ LBDecision::get_application_cmd(LBRule &rule)
if (rule._proto == "icmp") {
filter += "--icmp-type any ";
}
- else if (rule._proto == "udp" || rule._proto == "tcp") {
- if (rule._s_addr.empty() == false) {
- filter += "--source " + rule._s_addr + " ";
- }
- else if (rule._s_net.empty() == false) {
- filter += "--source " + rule._s_net + " ";
- }
- if (rule._d_addr.empty() == false) {
- filter += "--destination " + rule._d_addr + " ";
- }
- else if (rule._d_net.empty() == false) {
- filter += "--destination " + rule._d_net + " ";
- }
+ if (rule._s_addr.empty() == false) {
+ filter += "--source " + rule._s_addr + " ";
+ }
+ else if (rule._s_net.empty() == false && rule._s_addr.empty() == true) {
+ filter += "--source " + rule._s_net + " ";
+ }
+
+ if (rule._d_addr.empty() == false) {
+ filter += "--destination " + rule._d_addr + " ";
+ }
+ else if (rule._d_net.empty() == false && rule._d_addr.empty() == true) {
+ filter += "--destination " + rule._d_net + " ";
+ }
+ else if (rule._proto == "udp" || rule._proto == "tcp") {
if (rule._s_port.empty() == false) {
filter += "-m multiport --source-port " + rule._s_port + " ";
}