int socket(int domain, int type, int protocol);
APIのドキュメントには、特定のドメインに複数のプロトコルが存在する場合、プロトコルは特定のプロトコルを指定すると記載されています。これは、特定のソケットの特定のドメインに対して1つのプロトコルしか指定できないことを意味しているようです。
Linuxでrawソケットを試していましたが、このプロトコルに出くわしました。私は、pcapライブラリを使用して任意のプロトコルのパケットをキャプチャできることを知っています。pcapを使用してQ&Dプログラムを作成しましたが、if_ether.h
ファイルで定義されているほとんどの一般的なプロトコルがキャプチャされていることに気付きました。
そのため、現在私のプログラムでは、キャプチャするパケットのタイプを1つしか指定できません。標準のLinuxヘッダーとライブラリを使用してpcapの動作を複製する方法はありますか?pcapはどのようにそれを達成しますか?質問をグーグルで検索しようとしましたが、返された結果があまり役に立たなかったため、クエリの形式が正しくなかったと思います。
私はここで何も解決しようとはしていません。概念を学ぶだけです。