- 今日はtcprivのpernet_subsysを実装している
- ubuntu 18.04、すなわちカーネル4系に合わしてコードを書いていたけど、このソフトウェアが日の目を見る先を考えるとさっさと5系対応にしておいたほうが良いと考えた
- tcp_seq_startとかnext使いたいし
- ということでubuntu 18.04から20.04のvirtualboxにvagrantを変更中
- シュッとできるかな
- buildはちょっとしたwarningとerrorを直したら普通に通った
- pernet_subsys+tcp_seq_show周りは実装できて、AF_INETなパケットのチェーンを/proc/net/tcprivのopen時に終えるようにできた
- あとは、そこでsk-> sk_user_dataにtcprivのオーナ情報などをいれておいて同様にoutputできるようにしたい
- kmalloc系で領域確保すれば良いが、この構造体をどのタイミングでfreeすべきかについてコードを読んでいく
- それか、静的に持たせるか(サイズは変わらないので静的に持たせたいが、カーネル内でのstack or heapの関係とコールバックの兼ね合いについて理解しきれてないのでさらにコードを読む
- むー、netfilterのlocal_inフックの段階ではstruct sockがまだ作られていないので、struct sockのuser_dataは使えないなぁ、さて....
- 今日はそんな感じでnetfilterのフックのタイミングとその時に持てる構造体、構造体に入るデータはなにかといったところについてコードを読んだり、書いて試してトライアンドエラーをしていた
struct sk_buffは得られるけどまだstruct sockが作られていないフックで得られるソケット単位のユーザデータをseq_operationsのopenのタイミングで引き出せるようにするには、どのようにカーナル内でデータを持ち続ければ良いか考えてたら足が棒のようになっていた(スタンディングデスク的な意味で)
— Ryosuke Matsumoto / まつもとりー (@matsumotory) 2020年6月15日
- こういうトライアンドエラーは楽しい
- 明日もしっかりコードを読みながらやっていきたい
- 明後日にはポケモンのエキスパンションパックが始まるので楽しみ
- アキラとかジョーカーのUHDもみたいな
- ビリオンズの新しいのもNetflixに降ってきたので見なくては
- 今日はさくらインターネットの全体会議があって、これからのやっていきが高まった!
- やっていくぞ