Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

GLDv2 の DLPI プリミティブ

GLDv2 はいくつかの DLPI プリミティブを実装します。DL_INFO_REQ プリミティブは、DLPI ストリームについての情報を要求します。メッセージは 1 つの M_PROTO メッセージブロックで構成されます。GLDv2 はこの要求に対して、デバイス依存の値を DL_INFO_ACK 応答で返します。これらの値は、gld_register(9F) 関数に渡す gld_mac_info(9S) 構造体で GLDv2 ベースのドライバが指定した情報に基づきます。

    すべての GLDv2 ベースのドライバに代わって、GLDv2 が次の値を返します。

  • バージョンは DL_VERSION_2 です。

  • サービスモードは DL_CLDLS です。GLDv2 はコネクションレスモードのサービスを実装します。

  • プロバイダのスタイルは、ストリームが開かれた方法に応じて DL_STYLE1 または DL_STYLE2 です。

  • 省略可能なサービス品質 (QOS) サポートはありません。QOS フィールドは 0 です。


注 - DLPI 仕様とは異なり、ストリームが PPA に接続される前であっても、GLDv2 は DL_INFO_ACK でデバイスの正確なアドレス長およびブロードキャストアドレスを返します。

DL_ATTACH_REQ プリミティブは、PPA をストリームと関連付けるために使用されます。この要求は、Style 2 の DLS プロバイダが通信を行う物理メディアを特定するために必要です。完了すると、状態が DL_UNATTACHED から DL_UNBOUND に変化します。メッセージは 1 つの M_PROTO メッセージブロックで構成されます。Style 1 モードの使用時はこの要求は許可されません。Style 1 を使用して開かれたストリームは、オープンの完了時点ですでに PPA に接続されているためです。

DL_DETACH_REQ プリミティブは、PPA をストリームから切り離すことを要求します。この切り離しは、ストリームが Style 2 を使用して開かれた場合にのみ許可されます。

DL_BIND_REQ および DL_UNBIND_REQ プリミティブは、DLSAP (データリンクサービスアクセスポイント) をストリームにバインドまたはバインド解除します。ストリームに関連付けられた PPA は、そのストリームの DL_BIND_REQ の処理が完了する前に初期化を完了します。複数のストリームを同じ SAP にバインドできます。この場合、それぞれのストリームが、その SAP で受信されたすべてのパケットのコピーを受信します。

DL_ENABMULTI_REQ および DL_DISABMULTI_REQ プリミティブは、個々のマルチキャストグループアドレスの受信を有効または無効にします。アプリケーションまたはその他の DLS ユーザーは、これらのプリミティブを繰り返し使用するとマルチキャストアドレスの集合を作成または変更できます。これらのプリミティブが受け入れられるには、ストリームが PPA に接続されている必要があります。

DL_PROMISCON_REQ および DL_PROMISCOFF_REQ プリミティブは、ストリーム単位でプロミスキュアス (promiscuous) モードを有効または無効にします。この制御は物理レベルまたは SAP レベルで機能します。DL プロバイダは、メディアで受信したすべてのメッセージを DLS ユーザーに経路指定します。このルーティングは、DL_DETACH_REQ または DL_PROMISCOFF_REQ が受信されるか、ストリームが閉じられるまで有効です。物理レベルのプロミスキュアスの受信は、メディア上のすべてのパケットに対して、またはマルチキャストパケットに限定して指定できます。


注 - これらのプロミスキュアス (promiscuous) モードプリミティブが受け入れられるには、ストリームが PPA に接続されている必要があります。

DL_UNITDATA_REQ プリミティブは、コネクションレス型転送でデータを送信するために使用されます。このサービスは肯定応答を伴わないため、配信は保証されません。メッセージは 1 つの M_PROTO メッセージブロックと、それに続く 1 つ以上の M_DATA ブロック (少なくとも 1 バイトのデータを含む) で構成されます。

DL_UNITDATA_IND タイプは、パケットをアップストリームに渡すときに使用します。パケットは、プリミティブを DL_UNITDATA_IND に設定した M_PROTO メッセージに格納されます。

DL_PHYS_ADDR_REQ プリミティブは、ストリームに接続された PPA とその時点で関連付けられている MAC アドレスを要求します。アドレスは DL_PHYS_ADDR_ACK プリミティブによって返されます。Style 2 を使用している場合、このプリミティブは DL_ATTACH_REQ が成功したあとに限り有効です。

DL_SET_PHYS_ADDR_REQ プリミティブは、ストリームに接続された PPA とその時点で関連付けられている MAC アドレスを変更します。このプリミティブは、現在および将来にわたってこのデバイスに接続されるすべてのストリームに影響を及ぼします。アドレスの変更後は、現在または将来に開かれてこのデバイスに接続されるすべてのストリームが、この新しい物理アドレスを取得します。新しい物理アドレスは、このプリミティブを使用して物理アドレスをふたたび変更するか、またはドライバが再ロードされるまで有効です。


注 - スーパーユーザーは、ほかのストリームが同じ PPA にバインドされている間も PPA の物理アドレスを変更できます。

DL_GET_STATISTICS_REQ プリミティブは、ストリームに接続された PPA に関連する統計情報を含む DL_GET_STATISTICS_ACK 応答を要求します。DL_ATTACH_REQ を使用して Style 2 のストリームを特定の PPA に接続しておかないと、このプリミティブは成功しません。