PiaInet には、NAT トラバーサル失敗エミュレーション機能が用意されています。NAT トラバーサル失敗エミュレーション機能とは、意図的に NAT トラバーサルを失敗させ、セッション参加処理のエラーハンドリングの動作確認を支援する機能です。
アプリケーションは inet::DebugSetting 構造体のメンバ変数で機能の使用を指定し、inet::SetDebugSetting() 関数を呼び出します。PiaInet の初期化処理よりも前に呼び出してください。
inet::SetDebugSetting() を製品版 ROM で呼び出してはいけません。
inet::DebugSetting 構造体の各メンバ変数について説明します。
変数名 | 機能 | 備考 |
---|---|---|
natTraversalFailureRatioForHost |
ホストとの NAT トラバーサルの失敗確率 | PiaInet ではホストとの NAT トラバーサルに失敗した場合、一度だけリトライを行います。 ここで指定する確率は1回の試行毎の確率です。 |
natTraversalFailureRatioForClient |
クライアントとの NAT トラバーサルの失敗確率 | 各クライアントとの NAT トラバーサル試行における確率です。 |
falsifiedNatTraversalFailureResult |
NAT トラバーサル失敗時に返る Result を上書きする |
通常、NAT トラバーサル失敗時に返る Result は自分の NAT タイプと相手の NAT タイプに応じて異なります。 |
isNatTypeCheckFailure |
NAT タイプの判定処理を失敗したことにします | NAT TypeF と判定される回線では NAT タイプの判定処理が失敗します。 |
isDnsResolutionFailure |
NAT タイプの判定処理時に行う DNS 名前解決処理を失敗したことにします |
// inet::DebugSetting 構造体の設定
nn::pia::inet::DebugSetting debugSetting; // NAT トラバーサル失敗エミュレーション機能を有効に設定します。 debugSetting.natTraversalFailureRatioForHost = 10; // ホストとの NAT トラバーサルを 10% の確率で失敗させる設定 debugSetting.natTraversalFailureRatioForClient = 50; // クライアントとの NAT トラバーサルを 50% の確率で失敗させる設定 debugSetting.falsifiedNatTraversalFailureResult = nn::pia::ResultSuccess(); // NAT トラバーサル失敗時に返る可能性のある Result をランダムに選択して返す設定 debugSetting.isNatTypeCheckFailure = false; // NAT タイプの判定処理の失敗エミュレーションはオフに設定 debugSetting.isDnsResolutionFailure = false; // NAT タイプの判定処理時に行う DNS 名前解決処理の失敗エミュレーションはオフに設定 // inet::SetDebugSetting() でデバッグ機能を利用する場合は、初期化処理よりも先に呼び出す必要があります。 nn::pia::inet::SetDebugSetting(debugSetting); // inet の初期化処理 nn::pia::Result result = nn::pia::inet::Initialize(); |