strace AF_NETLINK通信をioctlと同じように「デコード」するにはどうすればよいですか?

strace AF_NETLINK通信をioctlと同じように「デコード」するにはどうすればよいですか?

strace呼び出しを「復号化」ioctlして意味を表示し、ネットワークインタフェース名を解析することも多いです。

ただし、AF_NETLINKを使用して実行されるのと同じ操作がありますstrace。どのように物事をstrace観察するように教えることができますかAF_NETLINK?この機能を備えたパッチやフォークはありますか?

sendmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\32\0\1\0\323K\255S\0\0\0\0\n\200\0\0\0\0\0\0\0\0\0\0\24\0\1\0"..., 48}], msg_controllen=0, msg_flags=0}, 0) = 48
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\224\0\0\0\30\0\0\0\323K\255S\3674\0\0\n\200\200\0\0\2\0\7\0\0\0\0\10\0\17\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 148

「調理済み」strace出力の例ioctl

ioctl(4, SIOCGIFFLAGS, {ifr_name="veth0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_ALLMULTI}) = 0

AF_NETLINKの背景

から抜粋ウィキペディア

このAF_NETLINKシリーズはいくつかのプロファイルを提供します。各インターフェイスは異なるカーネルコンポーネントに接続され、異なるメッセージングサブセットを持ちます。次のプロトコルは、次のフィールドで参照されます。

  int socket(AF_NETLINK, SOCK_DGRAM or SOCK_RAW, protocol)

特定のLinux(または他のオペレーティングシステム)バージョンでの標準SOCK_DGRAMおよび実装の欠如は保証されていません。SOCK_RAW一部のソースでは両方のオプションが有効であることを示していますが、以下のRed Hatリファレンスではこのパラメータは常にパラメータであると述べていますが、SOCK_RAWiproute2は両方のオプションを置き換えて使用します。

ベストアンサー1

おすすめ記事