Author: melifaro
Date: Thu Nov 28 15:28:51 2013
New Revision: 258711
URL: http://svnweb.freebsd.org/changeset/base/258711

Log:
  Simplify O_NAT opcode handling.
  
  MFC after:    2 weeks
  Sponsored by: Yandex LLC

Modified:
  head/sys/netpfil/ipfw/ip_fw2.c

Modified: head/sys/netpfil/ipfw/ip_fw2.c
==============================================================================
--- head/sys/netpfil/ipfw/ip_fw2.c      Thu Nov 28 14:24:26 2013        
(r258710)
+++ head/sys/netpfil/ipfw/ip_fw2.c      Thu Nov 28 15:28:51 2013        
(r258711)
@@ -2413,38 +2413,35 @@ do {                                                    
        \
                        }
 
                        case O_NAT:
+                               l = 0;          /* exit inner loop */
+                               done = 1;       /* exit outer loop */
                                if (!IPFW_NAT_LOADED) {
                                    retval = IP_FW_DENY;
-                               } else {
-                                   struct cfg_nat *t;
-                                   int nat_id;
+                                   break;
+                               }
 
-                                   set_match(args, f_pos, chain);
-                                   /* Check if this is 'global' nat rule */
-                                   if (cmd->arg1 == 0) {
-                                           retval = ipfw_nat_ptr(args, NULL, 
m);
-                                           l = 0;
-                                           done = 1;
-                                           break;
-                                   }
-                                   t = ((ipfw_insn_nat *)cmd)->nat;
-                                   if (t == NULL) {
+                               struct cfg_nat *t;
+                               int nat_id;
+
+                               set_match(args, f_pos, chain);
+                               /* Check if this is 'global' nat rule */
+                               if (cmd->arg1 == 0) {
+                                       retval = ipfw_nat_ptr(args, NULL, m);
+                                       break;
+                               }
+                               t = ((ipfw_insn_nat *)cmd)->nat;
+                               if (t == NULL) {
                                        nat_id = IP_FW_ARG_TABLEARG(cmd->arg1);
                                        t = (*lookup_nat_ptr)(&chain->nat, 
nat_id);
 
                                        if (t == NULL) {
                                            retval = IP_FW_DENY;
-                                           l = 0;      /* exit inner loop */
-                                           done = 1;   /* exit outer loop */
                                            break;
                                        }
                                        if (cmd->arg1 != IP_FW_TABLEARG)
                                            ((ipfw_insn_nat *)cmd)->nat = t;
-                                   }
-                                   retval = ipfw_nat_ptr(args, t, m);
                                }
-                               l = 0;          /* exit inner loop */
-                               done = 1;       /* exit outer loop */
+                               retval = ipfw_nat_ptr(args, t, m);
                                break;
 
                        case O_REASS: {
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to