構文:
(request [get | get-blob] option-request)
ここで option-request は次のとおりです。
- IPv6 -relay [n] 用のオプションのリレー メッセージ セレクタ
- 1 つ以上のオプション句 (複数のオプションが IPv6 でのみサポートされています) - option name | id [vendor name | enterprise-id name | id] [instance n]
- 0 個以上のサブオプション句が続く - name | id [vendor name | enterprise-id name | id] [instance n]
- オプションの句が続く - [instance-count | count | index n]
説明:
パケットからオプションの値を返します。キーワードは次のとおりです。
- get - 省略した場合は省略可能。
- get-blob - オプションバイトに直接アクセスできるデータを BLOB として返します。
- relay —IPv6 パケットにのみ適用され、それ以外の場合はエラーを返します。クライアント オプションの代わりにリレー オプションを要求します。nは、クライアントに最も近い n 番目のリレー エージェントを示します。省略すると、0 (クライアントに最も近いリレー エージェント) が想定されます。
- option — オプション (およびサブオプション) は、整数または文字列に評価される id またはname引数で指定します。これらのいずれかに評価されない場合、関数は変換を行わないため、エラーを返します。名前指定子の有効な文字列値は、拡張機能に使用されるものと同じです。
- enterprise-id - オプションまたはサブオプションの後で、指定された enterprise-id を持つオプションまたはサブオプションのインスタンスを選択します。エンタープライズ ID は、整数または文字列に評価する必要があるidまたはname引数として指定できます。
- vendor - オプションまたはサブオプションの後で、オプションのデータをデコードするためにベンダーのカスタム・オプション定義を使用することを要求します。DHCPv6 オプションには適用されません。指定されたベンダ文字列に定義が存在しない場合、エラーは発行されず、オプションの標準定義が使用されます
(なしの場合は BLOB と見なされます)。
- instance - 直前のオプションまたはサブオプションのn番目のインスタンスを選択します。インスタンスは 0 から始まります。(インスタンスとインスタンスカウントは、単一のリクエスト関数で一緒に使用することはできません。
- instance-count - 前のオプションまたはサブオプションのインスタンス数を返し、通常は、そのすべてのインスタンスをループ処理するために使用されます。オプションまたはサブオプションが存在しない場合は 0 を返します。
- index - 複数の値 (つまり、アドレスの配列または整数値) を含むオプションでn番目の値を選択します。インデックスは 0 から始まります。たとえば、index 0 は最初の値を返し、index 1 は 2 番目の値を返します。
- count - 前のオプションの関連するデータ項目の数を返し、通常はindex キーワードと共に使用して、オプションまたはサブオプションのすべてのデータ値をループします。
サブタブ (サブオプション) 指定子に定義されている唯一の文字列値サブオプション名は、リレーエージェント情報オプション (82) 用であり、復号化された DHCP パケット データ項目セクションのDHCPv4 および BOOTP オプションの表にリストされています。
このrequest option 関数は、要求されたオプションに応じて、データ型を持つ値を返します。これは、テーブル内のデータ型がrequest 関数によって返されるデータ型にどのように対応するかを示しています。
表 2. request 関数によって返されるデータ型
オプションデータ型
|
返されるデータ型
|
blob
|
blob
|
IP アドレス
|
4 バイトの BLOB
|
string
|
string
|
8 ビットの符号なし整数
|
uint
|
16 ビットの符号なし整数
|
uint
|
32 ビットの符号なし整数
|
uint
|
integer
|
sint
|
バイト値ブール型
|
sint=1 が true の場合は true、false の場合は null
|
例:
(request option 82) は relay-agent-info オプションを BLOB として返します。
(request option 82 1) は circuit-id (1) サブオプションだけを返します。
(request option 82 "circuit-id") は、 (request option 82 1) と同等です
(request option "domain-name- servers") は domain-name-servers オプションから最初の IP アドレスを返します
(request option 6 index 0) は、(request option 6 count) と同等で、IP アドレスの数を返します。
(request get-blob option "dhcp-class-identifier") は、文字列ではなく、BLOB として値を返します
(request option "IA-NA" instance 2 option "IAADDR" instance 3) は、IA-NA オプションの 3 番目のインスタンス、および IA-NA オプションにカプセル化された IAADDR オプションの 4 番目のインスタンスを返します
(request get-blob option "vendor-opts" enterprise-id 1234) はenterprise-id 1234 のオプション データの BLOB を返します
(request option "vendor-opts" enterprise-id 1234 3) は、要求されたベンダーオプションデータからサブオプション 3 を返します
DHCPv6 オプション 16 ベンダー クラス (長さ区切りフィールドを含む):
DHCPv6 メッセージのデータ:
00:10:00:11:00:00:00:7b:00:04:01:02:03:04:00:05:68:65:6c:6c:6f
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | +--- field 0 ---+ +-- field 1 -------+
| | | | | |
| | | | +---------+ enterprise-id 123(10)
| | +---+ length 17
+---+ Option 16 Vendor-Class
(request option 16 enterprise-id 123) -> タイプ: blob 値: '01:02:03:04'
(request option 16 enterprise-id 456) -> タイプ: 値の設定解除: 'null'
(request get-blob option 16 enterprise-id 123) -> タイプ: blob 値: '00:00:7b:00:04:01:02:03:04:00:05:68:65:6c:6c:6c:6f'
(request option 16 enterprise-id 123 index 0) -> タイプ: blob 値: '01:02:03:04'
(request option 16 enterprise-id 123 index 1) -> タイプ: blob 値: '68:65:6c:6c:6f'
(注) |
DHCPv6 Option 15、User-Classは、同じように動作します。
|
DHCPv6 Option 17 Vendor Opts (サブオプションが含まれています):
DHCPv6 メッセージ内のデータ:
00:11:00:12:00:00:01:c8:00:01:00:04:0a:0b:0c:0d:00:05:00:02:01:02
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | +---- suboption 1 ----+ +- suboption 5 -+
| | | | | |
| | | | +---------+ enterprise-id 456(10),1c8(16)
| | +---+ length 18
+---+ Option 17 Vendor-Opts
(request option 17 enterprise-id 456) -> タイプ: blob 値: '00:00:01:c8:00:01:00:04:0a:0b:0c:0d:00:05:00:02:01:02'
(request option 17 enterprise-id 0x1c8) -> タイプ: blob 値: '00:00:c8:00:01:00:00:04:0a:0b:0c:0d:00:00:05:00:02:01:02'
(request option 17 enterprise-id 123) -> タイプ: 値の設定解除: 'null'
(request option 17 enterprise-id 456 index 0) -> タイプ: blob 値: '00:00:c8:00:01:00:00:04:0a:0b:0c:0d:00:00:05:00:02:01:02'
(request option 17 enterprise-id 456 1) -> タイプ: blob 値: '0a:0b:0c:0d'
(request option 17 enterprise-id 456 2) -> タイプ: 値の設定解除: 'null'
(request option 17 enterprise-id 456 5) -> タイプ: blob 値: '01:02'
__________________________________________________________________________________________________________________________________________