これはプログラミングの質問ではなく、NetBSDに関する質問です。
Linux、FreeBSD、およびOpenBSDには、相互に排他的ですが、接続のローカル側をローカルインターフェイスに存在しないアドレスにバインドできるようにする同様のインターフェイスがあります。たとえば、接続設定~から8.8.8.8.私はNetBSDで同じ効果を得ることができるかどうかを調べるために成功していないまま探索してきました。あなたはいますか?
参照用のサンプルコードは次のとおりです。
https://github.com/UlricE/pen/blob/master/server.c
関数spoof_bind、行〜250。
この概念を説明するために非常に単純化された例:
Linux:
setsockopt(upfd, SOL_IP, IP_TRANSPARENT, &one, sizeof one);
bind(upfd, (struct sockaddr *)&addr, sizeof addr);
FreeBSD:
setsockopt(upfd, IPPROTO_IP, IP_BINDANY, &one, sizeof one);
bind(upfd, (struct sockaddr *)&addr, sizeof addr);
オープンBSD:
setsockopt(upfd, SOL_SOCKET, SO_BINDANY, &one, sizeof one);
bind(upfd, (struct sockaddr *)&addr, sizeof addr);
繰り返しますが、これはプログラミングの問題ではなく、そのようなインタフェースがNetBSDに存在するかどうかに関する質問です。