- MySQLのplugin周りを読んでいる
- MySQLのplugin周りの仕様きれいで読みやすいな〜〜〜
- MYSQL_PLUGIN_VIO構造体が便利で、ここからsocketの情報を取り出せる
- vio->infoとかしてscoketの情報を取り出し、getsockoptにvio_info.socketとかわたしてやるとそのセッションのfdが取り出せる
- これでsynパケットのヘッダはpluginで取り出せるのであとはparseして扱えば良さそう
- あとはid/passの認証が通っても、uidが違うと通らないという処理をauth pluginに書くと良い
- listen前のfdにsetsockoptできるようなフックがあるかをコードリーディングしていく
- listen前にTCP_SAVE_SYNを立てておかないとあとでgetsockoptからsynのヘッダフィールドを取り出せないため
- MYSQL_DAEMON_PLUGINあたりでできるかな?
- あれ、そもそもpluginのinitのフェーズがlisten前でfdをとれるならinitのフェーズでやれそうだけどどういうフックタイミングなのか
- listen前にはplugin initするだろうから、init時にsocketはつくられている、あるいは、そのsocketのfdを取りだせるようなインターフェイスがあればauth pluginで完結できそう