For UDP packets forwarded to a local daemon with a rule like below:
ipfw add 10 fwd localhost,7000 udp from any to any in recv em1
The daemon may obtain the original destination address of forwarded packets
using recvmsg(2) and IP_RECVDSTADDR socket option. However, there is no
API to obtain the original destination _port_.
One possible solution is to add a new socket option, say IP_RECVDSTSOADDR.
If set on a datagram socket, ip_savecontorl/ip6_savecontrol_v4 would record
the datagram's destination address and port as a 'sockaddr_in' structure.