2020-06-10 今日もカーネルのコードを読み続ける

  • tcprivのユーザランド実装・設計続き
    • ひとまず試さないことには設計も進まない気がしてきたので、まずlocal in してきたsynパケットのtcprivを検知したら/proc/tcpriv/以下にパケットの属性を示す一意のファイルを作ってその中にowner情報を書いておく
    • ユーザランドでセッション確立したミドルウェアは認証時にその属性を示す/proc/tcpriv以下のファイルからオーナを取得して認証する
    • 課題としては、そのファイルをどのタイミングでreleaseするか
      • ほっとくと増え続ける
      • なんでやっぱりファイルは一つにしてそこにstatファイルのように情報を追加・更新していくほうが良さそう
        • ファイルのcreate/release管理も大変になるし
      • /proc/tcpriv作るところまではできた。seq_fileフレームワークがあるので楽ちん
      • struct sockにuser_data専用のポインタを見つけた https://www.kernel.org/doc/htmldocs/networking/API-struct-sock.html
        • このポインタにtcprivの情報をもたせて、tcpのnet opsフックからsk-> sk_user_data を呼び出して、それを使ってshowハンドラでprocに表示させるとよいか
        • となるとnet contextを使ってopsのprivate dataにskをもたせるように/proc/net/以下にファイルを用意するのが妥当か
        • ↑良さそう

  • 社内向けに長文を書いていた

  • 今日はひたすらコードを読んだりkernelのドキュメントを読み日だったが、設計と理解が随分進んだ日だった