home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703B.ISO
/
driver
/
novell
/
nwpatch
/
server
/
nw312j
/
core.os
/
tcp188j.exe
/
SDK.TXT
< prev
next >
Wrap
Text File
|
1995-05-25
|
5KB
|
145 lines
SDK.TXT
20SEP94
このファイルは、NLM開発者のみを対象としています。ユーザ情報は含まれ
ていません。
TCPIP.NLMのバージョンMには、BSDソケットAPIおよびTLI APIに新しいオプション
が追加されています(バージョンMは、TCP188Jに含まれています)。
BSDソケットAPIでのKeepAliveオプション
-------------------------------------
BSDソケットアプリケーションプログラミングインタフェースを使用する
アプリケーションは、TCP KeepAliveタイマの使用をトグルでき、setsockopt
関数を使ってタイマの値を設定できます。
デフォルトでは、TCPIP.NLMは、BSDソケットAPIを使用する接続上にKeepAlive
を送信しません。
setsockopt
setsockopt関数は、ソケット操作のパラメータを設定します。
構文
#include <sys/types.h>
#include <sys/socket.h>
setsockopt( int s, int level, int optname, char *optval, int optlen);
s (Input) パラメータが設定されるソケットのソケットファイルハンド
ルを識別します。
level (Input) SOL_SOCKET
optname (Input) SO_KEEPALIVE
optval (Input) オプションの値を示します。SO_KEEPALIVEオプションの
値は整数で、タイムアウト値を分で示します。値がゼロの
場合は、KeepAliveタイマは実行できません。値が1から4
までの場合は、タイムアウトの値は2時間に設定されます。
以前は、この値はKeepAliveのトグルをオン(value != 0)
またはオフ(optval == 0)にするためだけに使われました。
TLI APIでのKeepAliveオプション
------------------------------
TLIアプリケーションプログラミングインタフェースを使用するアプリケーション
は、TCP KeepAliveタイマの使用をトグルでき、t_optmgmt関数を使ってタイマ
の値を設定できます。
デフォルトでは、TCPIP.NLMは、TLI APIを使用する接続上にKeepAlivesを2時間
おきに送信します。以前のバージョンでは、TCP for NetWareは、t_optmgmt関数を
サポートしていませんでした。
構文
#include <tiuser.h>
int t_optmgmt ( int fh, struct t_optmgmt *req, struct t_optmgmt *ret )
fh (Input) バウンドトランスポートエンドポイントを識別します。
req (Input) プロトコルオプションを含む構造を示します。
ret (Output) オプションとフラグの値を受信します。
注意
reqおよびret引き数が示すt_optmgmt構造には、次のメンバが含まれます:
struct netbuf opt;
long flags;
optフィールドはプロトコルオプションを識別し、flagsフィールドはこれらのオプ
ションによる動作を指定します。
KeepAliveタイマを変更するためには、T_NEGOTIATEフラグを設定してください。
T_CHECKおよびT_DEFAULTフラグはサポートされていません。
netbuf構造には、次のメンバが含まれます。:
unsigned int maxlen;
unsigned int len;
char *buf;
maxlen (Input) reqの引き数に対しては意味をもちません。
(Output) オプションバッファの最大サイズを指定します。
len (Input) オプションのバイト数を指定します。
(Output) 返されたバイト数を指定します。
buf (Input) オプションバッファを示します。下に定義された
t_opthdrを参照してください。
(Output) オプションが配置されるバッファを示します。
詳しくは次に定義するt_opthdrを参照してください。
次の構造は、アプリケーションで定義します。
t_opthdr構造は、処理されるオプションを定義し、次に示す構造と同じです。:
struct t_opthdr
{
unsigned long len;
unsigned long level;
unsigned long name;
unsigned long status;
struct t_kpalive kp_val;
};
len t_opthdrの長さ
level INET_TCP
次の定義が必要です:
#define INET_TCP 0x06
name TCP_KEEPALIVE
次の定義が必要です:
#define TCP_KEEPALIVE 0x08
status T_SUCCESSまたはT_FAILUREは、処理のステータスを示します。
kp_val t_kpalive構造は、KeepAliveタイマのステータスとタイマの
間隔を定義します。構造は次のようになります。:
struct t_kpalive {
long kp_onoff;
long kp_timeout;
}
kp_onoff 0 - KeepAlivesを使用可にします。
1 - KeepAlivesを使用不可にします。
kp_timeout タイマの値を分で示します。値が5より小さい場合は、
タイムアウトの値は2時間に設定されます。
TCP/IPの動作
------------
KeepAliveタイマの期限が一度切れると、TCP/IPはKeepAliveパケットをTCPピアに
送信します。TCPピアが反応した場合は、タイマはリセットされます。接続の往復
にかかる予想時間内にTCPピアが反応しない場合は、TCP/IPはKeepAliveパケットを
再送信します。TCP/IPは、その標準再試行アルゴリズムに従って再試行します。
指数のbackoffアルゴリズムが、再送のためのラウンドトリップ時間の増加を概算
することに使われます。つまり、KeepAliveタイマの期限が切れた後も、TCP/IPが
その標準再試行を終えるまで接続は閉じないということになります。