レガシーサービスとは、SLP の開発および実装が旧式になっているネットワークサービスのことです。たとえば、ラインプリンタデーモン ( lpsched)、NFS ファイルサービス、NIS や NIS+ ネームサービスなどの Solaris サービスは、SLP で使用する内部 SA を持っていません。この章では、レガシーサービスを通知する場合とその方法について説明します。
レガシーサービス通知では、SLP UA を使用可能にすることで、ネットワーク上の次のようなデバイスやサービスを検出できます。SLP SA を含まないハードウェアデバイスやソフトウェアサービスを検出できます。たとえば、SLP UA を持つアプリケーションが、SLP SA を含まないプリンタやデータベースを検出する必要がある場合、レガシー通知が必要になります。
レガシーサービスは、次の方法で通知できます。
ソフトウェアサーバーのソースコードを使用できる場合は、SLP SA を組み込むことができます。SLP 用の C 言語の API と Java の API は比較的簡単に使用できます。C 言語の API のマニュアルページと Java の API のマニュアルを参照してください。サービスがハードウェアデバイスの場合は、製造元が SLP を組み込む PROM を更新していることがあります。詳細は、デバイスの製造元に問い合わせてください。
ソースコードや更新された SLP を含む PROM が使用できない場合は、SLP クライアントライブラリを使ってサービスを通知する小さなアプリケーションを書くことができます。このアプリケーションは小さなデーモンとして機能し、サービスの起動・停止に使用する場合と同じシェルスクリプトで起動・停止します。
Solaris の slpd は、プロキシ登録ファイルを使用したレガシーサービスの通知をサポートしています。プロキシ通知ファイルは、移植性のあるフォーマットで書かれたサービス通知のリストです。
ホストのファイルシステムまたは HTTP でアクセス可能なネットワーク上の任意のディレクトリに、プロキシ登録ファイルを作成します。
サービスについてサービスタイプのテンプレートが存在するかどうかを確認します。
テンプレートは、サービスタイプのサービス URL と属性を記述したものです。テンプレートを使用して、特定のサービスタイプについて通知の構成要素を定義します。
サービスタイプテンプレートが存在する場合は、そのテンプレートを使ってプロキシ登録を構成してください。サービスタイプテンプレートについては、RFC 2609 を参照してください。
サービスについてサービスタイプテンプレートを使用できない場合は、サービスを正確に記述する属性の集合体を選択してください。通知に対して、デフォルト以外の命名権限を使用してください。デフォルトの命名権限は標準化されたサービスタイプについてだけ許可されています。命名権限については、RFC 2609 を参照してください。
たとえば、BizApp という会社にソフトウェアバグの追跡に使用されるローカルデータベースがあるとします。データベースを通知するために、この会社は、サービスタイプ service:bugdb.bizapp を持つ URL を使用します。この場合、命名権限は bizapp になります。
前の手順で作成した登録ファイルの場所を使用して、/etc/inet/slp.conf ファイルの net.slp.serializedRegURL プロパティーを構成するには、次の手順に従います。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
ホスト上の slpd とすべての SLP 動作を停止します。
# svcadm disable network/slp |
/etc/inet/slp.conf ファイルの net.slp.serializedRegURL プロパティーにプロキシ登録の場所を指定します。
net.slp.net.slp.serializedRegURL=proxy registration file URL |
たとえば、直列化登録ファイルが /net/inet/slp.reg である場合、プロパティーを次に示すように構成します。
net.slp.serializedRegURL=file:/etc/inet/slp.reg |
変更を保存し、ファイルを閉じます。
# svcadm enable network/slp |
サービス通知は、サービス URL を特定する行、オプションのスコープ行、一連の属性の定義から構成されます。SLP デーモンはファイルからプロキシ通知を読み、その通知を登録し、SA クライアントと同じようにそれらを保持します。次のリストは、プロキシ登録ファイルの例を示します。
この例では、LPR プロトコルをサポートするレガシープリンタと ftp サーバーが通知されています。行番号は説明のために付け加えたもので、実際のファイルには記述されていません。
(1) #Advertise legacy printer. (2) (3) service:lpr://bizserver/mainspool,en,65535 (4) scope=eng,corp (5) make-model=Laserwriter II (6) location-description=B16-2345 (7) color-supported=monochromatic (8) fonts-supported=Courier,Times,Helvetica 9 10 (9) (10) #Advertise FTP server (11) (12) ftp://archive/usr/src/public,en,65535,src-server (13) content=Source code for projects (14) |
プロキシ登録ファイルは、ASCII でない文字のエスケープに、構成ファイルと同じ取り決めを使用します。プロキシ登録ファイルのフォーマットについては、RFC 2614 を参照してください。
通常、SLP を追加する場合、ほかのサービスの代理として SLP API で通知する SLP 対応のサービスを書くよりも、ソースコードを変更する方が望ましい方法です。ソースコードの変更は、プロキシ登録を使用するよりも望ましい方法です。ソースコードを変更する場合、サービス固有の機能を追加したり、サービスの使用可否を綿密に追跡したりできます。ソースコードが使用できない場合は、プロキシ登録を使用するよりほかのサービスの代理として通知する SLP 対応のヘルパーサービスを書く方が望ましい方法です。このヘルパーサービスを、起動と停止の制御に使用されるサービスの開始または停止手順に組み込むことをお勧めします。プロキシ通知は通常、ソースコードが使用できず、スタンドアロンの SA を書くことが実際的ではない場合の 3 番目の選択肢です。
プロキシ通知は、プロキシ登録ファイルを読み取る slpd が動作している間だけ保持されます。プロキシ通知とサービスの間には直接的な関係はありません。通知がタイムアウトしたり slpd が停止したりすると、プロキシ通知は使用できなくなります。
サービスが停止した場合は、slpd を停止する必要があります。直列化登録ファイルを編集してプロキシ通知をコメントにするか削除し、slpd を再起動してください。サービスを再起動または再インストールしたときは同じ手順に従ってください。プロキシ通知とサービスの間に関係のないことがプロキシ通知の主な欠点です。