ipfw(8)
...
PACKET FLOW
^ to upper layers V
| |
+----------->-----------+
^ V
[ip_input] [ip_output] net.inet.ip.fw.enable=1
| |
^ V
[ether_demux] [ether_output_frame] net.link.ether.ipfw=1
| |
+-->--[bdg_forward]-->--+ net.link.ether.bridge_ipfw=1
^ V
| to devices |
На уровне ip_input() ipfw ничего не знает о MAC,
следовательно нам нужен уровень ether_demux(),
т.е. проверяем опцию
net.link.ether.ipfw=1
если бридж
net.link.ether.bridge_ipfw=1
вот ещё посмотри http://michael.gargantuan.com/FreeBSD/ipfw2.htm
P.S. 512 раз тоже можно не писать, поиск по форуму - там есть скриптик.