4.3. デバッグ支援 - NAT トラバーサル失敗エミュレーション

概要

PiaInet には、NAT トラバーサル失敗エミュレーション機能が用意されています。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 タイプに応じて異なります。
NAT タイプに依らず、指定した Result を返します。
ResultSuccess を指定した場合は NAT トラバーサル失敗時に返るエラーの中からランダムな Result を返します。

isNatTypeCheckFailure
NAT タイプの判定処理を失敗したことにします NAT TypeF と判定される回線では NAT タイプの判定処理が失敗します。
isDnsResolutionFailure
NAT タイプの判定処理時に行う DNS 名前解決処理を失敗したことにします  
コード 4-6. NAT トラバーサル失敗エミュレーション機能の有効化
// 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();