mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-11 14:10:34 +00:00
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 Tested by: Victor Chernov MFC after: 3 days
This commit is contained in:
parent
5004817335
commit
d6eb9b0249
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=303955
@ -1583,7 +1583,7 @@ show_static_rule(struct cmdline_opts *co, struct format_opts *fo,
|
||||
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");
|
||||
@ -3776,7 +3776,7 @@ compile_rule(char *av[], uint32_t *rbuf, int *rbufsize, struct tidx *tstate)
|
||||
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
|
||||
|
@ -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.
|
||||
|
@ -2508,7 +2508,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;
|
||||
}
|
||||
|
@ -530,9 +530,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;
|
||||
@ -554,19 +556,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 */
|
||||
@ -612,7 +616,7 @@ export_rule0(struct ip_fw *krule, struct ip_fw_rule0 *urule, int len)
|
||||
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
@ -637,19 +641,21 @@ export_rule0(struct ip_fw *krule, struct ip_fw_rule0 *urule, int len)
|
||||
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:
|
||||
|
Loading…
Reference in New Issue
Block a user