Thanks to PMc for the inspiration of how to trace the libalias(3) nat translations using dtrace(1).
libalias.d
original file which also include AddLink:entry and DeleteLink:entry
libalias.d
sh:
fbt:libalias:AddLink:return
{
printf("\n%d icmp=%d udp=%d tcp=%d\nPro=%d (src_addr %d.%d.%d.%d:%d) (dst_addr %d.%d.%d.%d:%d)\n(alias_addr %d.%d.%d.%d:%d) (proxy_addr %d.%d.%d.%d:%d)\n", \
walltimestamp/1000000000, \
args[1]->la->icmpLinkCount, \
args[1]->la->udpLinkCount, \
args[1]->la->tcpLinkCount, \
args[1]->link_type, \
(args[1]->src_addr.s_addr)%256, \
(args[1]->src_addr.s_addr)/256%256, \
(args[1]->src_addr.s_addr)/65536%256, \
(args[1]->src_addr.s_addr)/16777216, \
args[1]->src_port%256*256+args[1]->src_port/256%256, \
(args[1]->dst_addr.s_addr)%256, \
(args[1]->dst_addr.s_addr)/256%256, \
(args[1]->dst_addr.s_addr)/65536%256, \
(args[1]->dst_addr.s_addr)/16777216, \
args[1]->dst_port%256*256+args[1]->dst_port/256%256, \
(args[1]->alias_addr.s_addr)%256, \
(args[1]->alias_addr.s_addr)/256%256, \
(args[1]->alias_addr.s_addr)/65536%256, \
(args[1]->alias_addr.s_addr)/16777216, \
args[1]->alias_port%256*256+args[1]->alias_port/256%256, \
(args[1]->proxy_addr.s_addr)%256, \
(args[1]->proxy_addr.s_addr)/256%256, \
(args[1]->proxy_addr.s_addr)/65536%256, \
(args[1]->proxy_addr.s_addr)/16777216,args[1]->proxy_port%256*256+args[1]->proxy_port/256%256);
}
dtrace -s libalias.d
original file which also include AddLink:entry and DeleteLink:entry
dtrace -n 'AddLink:entry { printf("%s %d icmp=%d udp=%d tcp=%d\n (src_addr %d.%d.%d.%d) (dst_addr %d.%d.%d.%d) (alias_addr %d.%d.%d.%d)\n (src_port %d)", execname, walltimestamp/1000000000, args[0]->icmpLinkCount, args[0]->udpLinkCount, args[0]->tcpLinkCount, arg1%256, arg1/256%256, arg1/65536%256, arg1/16777216, arg2%256, arg2/256%256, arg2/65536%256, arg2/16777216, arg3%256, arg3/256%256, arg3/65536%256, arg3/16777216, arg4%256*256+arg4/256%256); } AddLink:return { printf("%s %d icmp=%d udp=%d tcp=%d\n type=%d (src_addr %d.%d.%d.%d) (dst_addr %d.%d.%d.%d)\n (alias_addr %d.%d.%d.%d) (proxy_addr %d.%d.%d.%d)\n (src_port %d) (dst_port %d) (alias_port %d) (proxy_port %d)\n", execname, walltimestamp/1000000000, args[1]->la->icmpLinkCount, args[1]->la->udpLinkCount, args[1]->la->tcpLinkCount, args[1]->link_type, (args[1]->src_addr.s_addr)%256, (args[1]->src_addr.s_addr)/256%256, (args[1]->src_addr.s_addr)/65536%256, (args[1]->src_addr.s_addr)/16777216, (args[1]->dst_addr.s_addr)%256, (args[1]->dst_addr.s_addr)/256%256, (args[1]->dst_addr.s_addr)/65536%256, (args[1]->dst_addr.s_addr)/16777216, (args[1]->alias_addr.s_addr)%256, (args[1]->alias_addr.s_addr)/256%256, (args[1]->alias_addr.s_addr)/65536%256, (args[1]->alias_addr.s_addr)/16777216, (args[1]->proxy_addr.s_addr)%256, (args[1]->proxy_addr.s_addr)/256%256, (args[1]->proxy_addr.s_addr)/65536%256, (args[1]->proxy_addr.s_addr)/16777216, args[1]->src_port%256*256+args[1]->src_port/256%256, args[1]->dst_port%256*256+args[1]->dst_port/256%256, args[1]->alias_port%256*256+args[1]->alias_port/256%256, args[1]->proxy_port%256*256+args[1]->proxy_port/256%256); } DeleteLink:entry { printf("%s %d icmp=%d udp=%d tcp=%d\n%s type=%d (src_addr %d.%d.%d.%d) (dst_addr %d.%d.%d.%d)\n (alias_addr %d.%d.%d.%d) (proxy_addr %d.%d.%d.%d)\n (src_port %d) (dst_port %d) (alias_port %d) (proxy_port %d)\n", execname, walltimestamp/1000000000, (*(args[0]))->la->icmpLinkCount, (*(args[0]))->la->udpLinkCount, (*(args[0]))->la->tcpLinkCount, (args[1] ? "Perma" : ""), (*(args[0]))->link_type, ((*(args[0]))->src_addr.s_addr)%256, ((*(args[0]))->src_addr.s_addr)/256%256, ((*(args[0]))->src_addr.s_addr)/65536%256, ((*(args[0]))->src_addr.s_addr)/16777216, ((*(args[0]))->dst_addr.s_addr)%256, ((*(args[0]))->dst_addr.s_addr)/256%256, ((*(args[0]))->dst_addr.s_addr)/65536%256, ((*(args[0]))->dst_addr.s_addr)/16777216, ((*(args[0]))->alias_addr.s_addr)%256, ((*(args[0]))->alias_addr.s_addr)/256%256, ((*(args[0]))->alias_addr.s_addr)/65536%256, ((*(args[0]))->alias_addr.s_addr)/16777216, ((*(args[0]))->proxy_addr.s_addr)%256, ((*(args[0]))->proxy_addr.s_addr)/256%256, ((*(args[0]))->proxy_addr.s_addr)/65536%256, ((*(args[0]))->proxy_addr.s_addr)/16777216, (*(args[0]))->src_port%256*256+(*(args[0]))->src_port/256%256, (*(args[0]))->dst_port%256*256+(*(args[0]))->dst_port/256%256, (*(args[0]))->alias_port%256*256+(*(args[0]))->alias_port/256%256, (*(args[0]))->proxy_port%256*256+(*(args[0]))->proxy_port/256%256); }'