別のプロトコル(UDT)をサポートするようにiperfを変更しようとしています。 iperfの中にこれらの呼び出しは、UDTコードの代わりにソケットを使用するように、私はその後、実行する必要がどのような、条件付きでUDTのライブラリとリンクされて実行時にリンクするライブラリを選択する
socket(...);
bind(...);
listen(...);
:UDT APIは、それが標準BSDの呼び出しを反映するように書かれていますTCPスタックへのインタフェース。これはできますか?私はいつもライブラリをロードし、UDT :: namespaceを使って別の条件付きパスを持つことができますが、1)TCPパスからの重複が多く、2)何も必要ないかもしれない多くの変更があります。私が明確ではない場合は、私に教えてください、この動的リンクを達成するためのどのような提案が評価されます。
編集:下記のdlopen()ファミリを使用して
が、私は以下のプログラムの流れかもしれない:
は、CMDラインのparamsを解析 - > UDTが要求された場合に、ロード・ライブラリーlibudt - > 取得し、
この時点では、すべてのUDT関数で関数ポインタが格納されています。私がそれらをすべてudt_callsという構造体に格納しているとしましょう。今、私はちょうどのような呼び出しを行う既存のコードに問題がいる:
bind(...)
いうより:
udt_calls->bind(...)
は私が世界的に私とプログラム全体で任意のBSD呼び出しを無効にすることができますきれいな方法はあります今私のudt_calls構造体の関数ポインタをロード?
をやったのですか? UDTを実行するパッチまたはiperfのバージョンはありますか? –