2020-06-09 tcprivのユーザランド実装のためにカーネルのコードを読み続ける日

  • tcprivのユーザランド実装を始めている
  • カーネルモジュールに/procファイルを作るのは簡単
    • proc_mkdir、proc_createなど
int __init
hoge_create_procfs(void)
{
    struct proc_dir_entry *entry;

    entry = proc_mkdir("hoge/fuga", NULL);
    if (!entry)
        return -ENOMEM;
    entry = proc_create("foo", S_IRUGO|S_IWUSR, entry,
                &hoge_proc_ops);
    if (!entry) {
        remove_proc_entry("hoge/fuga", NULL);
        return -ENOMEM;
    }
    return 0;
}
  • /proc/pidにぶら下げるいい感じの方法はなにかを調査
    • ひたすらカーネルのコードを読む....
    • フーム /proc/[pid]以下はカーネルのコードに静的に実装されているから、ここに要素を新たに組み込む方法はあるかな
  • あらためてtcprivで付与したオーナ情報をどうユーザランドに渡すかを考える

    • /procのファイルはopneやreadしたときに関数がコールバックされて内容の更新などがされる
    • となると、/proc/tcprivみたいなファイルを作っておいて、セッション時にsynパケットが届いたタイミングでオーナ+src/dstの情報を書き込んでおく → できる?
    • 改めて、readのタイミングでセッションがはられているものだけ情報を残していおくような動きにすればできそう?
      • パケットにのったオーナ情報をどうやって保存しておくか?
      • セッション来た時に静的な内容を書いておいて、readとかのコールバックではそのままにしておきつつ、なにかのタイミングで更新するようにするとよい?
        • TCPのコネクションが切れた時とかをどうにか検知したり
  • うーむ、今日は負け。まだなんかまとまらないので明日も頑張る


  • プログラミングに関するインタビューの提案修正を仕上げたので提出

  • FIT2020のトップカンファレンスセッションの情報を提出した
    • 簡易プログラムにのっていたわーい https://gakkai-web.net/fit/program_web/event_TCS-7.html
    • 所属がさくらだけになっていたのでペパボも載せてもらうように連絡済み
      • 研究自体はペパボでやっていたことの集大成なので
    • ちゃんと変更されたわーい

  • 今日もキーマカレーを食べた