redirects: only emit REDIRECT rules if dest_ip is unset
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 26 May 2015 12:50:21 +0000 (14:50 +0200)
committerJo-Philipp Wich <jow@openwrt.org>
Tue, 26 May 2015 12:53:24 +0000 (14:53 +0200)
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
redirects.c

index 50ed44d88d5a82d624dafcc4145c37c4db3c4f0e..5b8d7a9266a018c477361962a3c99869dcf6262d 100644 (file)
@@ -166,45 +166,13 @@ static bool
 check_local(struct uci_element *e, struct fw3_redirect *redir,
             struct fw3_state *state)
 {
-       struct fw3_zone *zone;
-       struct fw3_device *net;
-       struct fw3_address *addr, *tmp;
-
        if (redir->target != FW3_FLAG_DNAT)
                return false;
 
        if (!redir->ip_redir.set)
                redir->local = true;
 
-       if (redir->local)
-               return true;
-
-       list_for_each_entry(zone, &state->zones, list)
-       {
-               list_for_each_entry(net, &zone->networks, list)
-               {
-                       LIST_HEAD(addrs);
-
-                       fw3_ubus_address(&addrs, net->name);
-                       list_for_each_entry_safe(addr, tmp, &addrs, list)
-                       {
-                               if (!redir->local && compare_addr(&redir->ip_redir, addr)) {
-                                       warn_elem(e, "refers to a destination address on this router, "
-                                                    "assuming port redirection");
-
-                                       redir->local = true;
-                               }
-
-                               list_del(&addr->list);
-                               free(addr);
-                       }
-
-                       if (redir->local)
-                               return true;
-               }
-       }
-
-       return false;
+       return redir->local;
 }
 
 void