# 必要なツール一式をインストール(初回のみ)
$ sudo apt update ⏎
$ sudo apt install -y clang llvm libbpf-dev \
                   linux-headers-$(uname -r) \
                   linux-libc-dev bpftool iproute2⏎
# プログラムのビルド
$ clang -O2 -g -target bpf \
  -I/usr/include \
  -I/usr/include/x86_64-linux-gnu \
  -I/usr/include/bpf \
  -c xdp_hello.c -o xdp_hello.o⏎

# NICにプログラムをアタッチする．wlp0s20f3は自分のNICにする
$ sudo ip link set dev wlp0s20f3 xdp obj xdp_hello.o sec xdp⏎

# プログラムがロードされたことを確認
# xdpgeneric は XDPのgeneric（skb）モードを
# prog/xdp id 1270 は XDPプログラムがアタッチ済み
# であることを意味する
$ ip -d link show dev wlp0s20f3⏎
2: wlp0s20f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 xdpgeneric ...
    link/ether 10:f6:0a:f4:1b:ef brd ff:ff:ff:ff:ff:ff promiscuity 0  ...
    prog/xdp id 1270

# 実行の様子を確認．パケット受信時に実行されてメッセージが表示される．
$ sudo cat /sys/kernel/debug/tracing/trace_pipe | grep "Hello eBPF"⏎
 irq/194-iwlwifi-640     [000] ..s21 203990.290934: bpf_trace_printk: Hello eBPF
 irq/199-iwlwifi-645     [000] ..s21 203990.290945: bpf_trace_printk: Hello eBPF
 irq/192-iwlwifi-638     [000] ..s21 203990.290955: bpf_trace_printk: Hello eBPF
 irq/195-iwlwifi-641     [000] ..s21 203990.293490: bpf_trace_printk: Hello eBPF
 irq/197-iwlwifi-643     [000] ..s21 203990.297998: bpf_trace_printk: Hello eBPF
