Linuxにおける利用が急速に増えている「Berkeley Packet Filter(BPF)」について、基礎から応用まで幅広く紹介する連載「Berkeley Packet Filter(BPF)入門」。前回までは、BPFの基本やBPFのプログラムの作成方法を説明しました。今回から、「LinuxのBPFで何ができるのか」について詳しく見ていきます。 なお本稿では、Linux 5.3のソースコードを参照しています。 BPFでできること BPFプログラム実行の流れをおさらいしましょう。 ユーザーはBPFプログラムを作成し、システムコールを利用してそれをLinuxカーネル内に登録します(図の【1】)。そうして登録されたBPFプログラムは、対応するイベントが発生すると、Linuxの中で引数が1つ、戻り値も1つの関数として実行されます(図の【2】)。BPFプログラムは実行中にカーネル内のヘルパー関