svn commit: r304079 - in stable/11: sbin/ipfw sys/netinet sys/netpfil/ipfw
Andrey V. Elsukov
ae at FreeBSD.org
Sun Aug 14 14:50:34 UTC 2016
Author: ae
Date: Sun Aug 14 14:50:32 2016
New Revision: 304079
URL: https://svnweb.freebsd.org/changeset/base/304079
Log:
MFC r303955:
Restore "nat global" support.
Now zero value of arg1 used to specify "tablearg", use the old "tablearg"
value for "nat global". Introduce new macro IP_FW_NAT44_GLOBAL to replace
hardcoded magic number to specify "nat global". Also replace 65535 magic
number with corresponding macro. Fix typo in comments.
PR: 211256
Modified:
stable/11/sbin/ipfw/ipfw2.c
stable/11/sys/netinet/ip_fw.h
stable/11/sys/netpfil/ipfw/ip_fw2.c
stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sbin/ipfw/ipfw2.c
==============================================================================
--- stable/11/sbin/ipfw/ipfw2.c Sun Aug 14 13:23:02 2016 (r304078)
+++ stable/11/sbin/ipfw/ipfw2.c Sun Aug 14 14:50:32 2016 (r304079)
@@ -1575,7 +1575,7 @@ show_static_rule(struct cmdline_opts *co
break;
case O_NAT:
- if (cmd->arg1 != 0)
+ if (cmd->arg1 != IP_FW_NAT44_GLOBAL)
bprint_uint_arg(bp, "nat ", cmd->arg1);
else
bprintf(bp, "nat global");
@@ -3733,7 +3733,7 @@ compile_rule(char *av[], uint32_t *rbuf,
action->len = F_INSN_SIZE(ipfw_insn_nat);
CHECK_ACTLEN;
if (*av != NULL && _substrcmp(*av, "global") == 0) {
- action->arg1 = 0;
+ action->arg1 = IP_FW_NAT44_GLOBAL;
av++;
break;
} else
Modified: stable/11/sys/netinet/ip_fw.h
==============================================================================
--- stable/11/sys/netinet/ip_fw.h Sun Aug 14 13:23:02 2016 (r304078)
+++ stable/11/sys/netinet/ip_fw.h Sun Aug 14 14:50:32 2016 (r304079)
@@ -60,6 +60,7 @@
#define IPFW_ARG_MAX 65534
#define IP_FW_TABLEARG 65535 /* Compat value for old clients */
#define IP_FW_TARG 0 /* Current tablearg value */
+#define IP_FW_NAT44_GLOBAL 65535 /* arg1 value for "nat global" */
/*
* Number of entries in the call stack of the call/return commands.
Modified: stable/11/sys/netpfil/ipfw/ip_fw2.c
==============================================================================
--- stable/11/sys/netpfil/ipfw/ip_fw2.c Sun Aug 14 13:23:02 2016 (r304078)
+++ stable/11/sys/netpfil/ipfw/ip_fw2.c Sun Aug 14 14:50:32 2016 (r304079)
@@ -2489,7 +2489,7 @@ do { \
set_match(args, f_pos, chain);
/* Check if this is 'global' nat rule */
- if (cmd->arg1 == 0) {
+ if (cmd->arg1 == IP_FW_NAT44_GLOBAL) {
retval = ipfw_nat_ptr(args, NULL, m);
break;
}
Modified: stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c
==============================================================================
--- stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Sun Aug 14 13:23:02 2016 (r304078)
+++ stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Sun Aug 14 14:50:32 2016 (r304079)
@@ -524,9 +524,11 @@ import_rule0(struct rule_check_info *ci)
/*
* Alter opcodes:
- * 1) convert tablearg value from 65335 to 0
- * 2) Add high bit to O_SETFIB/O_SETDSCP values (to make room for targ).
+ * 1) convert tablearg value from 65535 to 0
+ * 2) Add high bit to O_SETFIB/O_SETDSCP values (to make room
+ * for targ).
* 3) convert table number in iface opcodes to u16
+ * 4) convert old `nat global` into new 65535
*/
l = krule->cmd_len;
cmd = krule->cmd;
@@ -548,19 +550,21 @@ import_rule0(struct rule_check_info *ci)
case O_NETGRAPH:
case O_NGTEE:
case O_NAT:
- if (cmd->arg1 == 65535)
+ if (cmd->arg1 == IP_FW_TABLEARG)
cmd->arg1 = IP_FW_TARG;
+ else if (cmd->arg1 == 0)
+ cmd->arg1 = IP_FW_NAT44_GLOBAL;
break;
case O_SETFIB:
case O_SETDSCP:
- if (cmd->arg1 == 65535)
+ if (cmd->arg1 == IP_FW_TABLEARG)
cmd->arg1 = IP_FW_TARG;
else
cmd->arg1 |= 0x8000;
break;
case O_LIMIT:
lcmd = (ipfw_insn_limit *)cmd;
- if (lcmd->conn_limit == 65535)
+ if (lcmd->conn_limit == IP_FW_TABLEARG)
lcmd->conn_limit = IP_FW_TARG;
break;
/* Interface tables */
@@ -606,7 +610,7 @@ export_rule0(struct ip_fw *krule, struct
/*
* Alter opcodes:
- * 1) convert tablearg value from 0 to 65335
+ * 1) convert tablearg value from 0 to 65535
* 2) Remove highest bit from O_SETFIB/O_SETDSCP values.
* 3) convert table number in iface opcodes to int
*/
@@ -631,19 +635,21 @@ export_rule0(struct ip_fw *krule, struct
case O_NGTEE:
case O_NAT:
if (cmd->arg1 == IP_FW_TARG)
- cmd->arg1 = 65535;
+ cmd->arg1 = IP_FW_TABLEARG;
+ else if (cmd->arg1 == IP_FW_NAT44_GLOBAL)
+ cmd->arg1 = 0;
break;
case O_SETFIB:
case O_SETDSCP:
if (cmd->arg1 == IP_FW_TARG)
- cmd->arg1 = 65535;
+ cmd->arg1 = IP_FW_TABLEARG;
else
cmd->arg1 &= ~0x8000;
break;
case O_LIMIT:
lcmd = (ipfw_insn_limit *)cmd;
if (lcmd->conn_limit == IP_FW_TARG)
- lcmd->conn_limit = 65535;
+ lcmd->conn_limit = IP_FW_TABLEARG;
break;
/* Interface tables */
case O_XMIT:
More information about the svn-src-stable
mailing list