OPNSense/core ffcd85fsrc/opnsense/scripts/OPNsense/CaptivePortal cp-background-process.py allow.py, src/opnsense/scripts/OPNsense/CaptivePortal/lib ipfw.py arp.py

Captive portal: optimise ipfw rule parsing. for https://github.com/opnsense/core/issues/3559 (#3608)

Our current generated ruleset creates two count rules to match incoming and outgoing traffic to and from the client for accounting purposes. Since ipfw doesn't support table stats, the options are limited to know the amount of traffic processed and last accessed times.

This patch basically replaces the accounting section with seperate blocks, which are jumped to using the exising table (which contains address + rulenumber now), logically this would lower the time needed to parse the accounting section (since only the count rules for the specif ip's are evaulated now).

In terms of ruleset, this will generate 3 rules per address (count from, count to and jump to end of ruleset), like:

```
30001   342    27744 count ip from xxx.xxx.xxx.xxx to any
30001  1194   225783 count ip from any to xxx.xxx.xxx.xxx
30001  1536   253527 skipto 60000 ip from any to any       [ <--- NEW ]
```

Since we need the address to collect rules, we can't simply this count to one rule (IPFW.list_accounting_info() parses the address from the ruleset).

Our per zone "skipto" section, uses a tablearg in stead of static rule number now:

```
03001  2362   386004 skipto tablearg ip from table(1) to any via em2
03001  5701  4761746 skipto tablearg ip from any to table(1) via em2
```

(cherry picked from commit 440f957e5ca525414f1d67553a4b6c6af0379d64)
DeltaFile
+80-76src/opnsense/scripts/OPNsense/CaptivePortal/lib/ipfw.py
+19-22src/opnsense/scripts/OPNsense/CaptivePortal/lib/arp.py
+3-15src/opnsense/service/templates/OPNsense/IPFW/ipfw.conf
+6-8src/opnsense/scripts/OPNsense/CaptivePortal/cp-background-process.py
+1-6src/opnsense/scripts/OPNsense/CaptivePortal/allow.py
+109-1275 files

UnifiedSplitRaw