BINDRESVPORT(3) | FreeBSD Library Functions Manual | BINDRESVPORT(3) |
名称
bindresvport, bindresvport_sa — 特権 IP ポートにソケットをバインドするライブラリ
Standard C Library (libc, -lc)書式
#include < sys/types.h>#include < rpc/rpc.h>
int
bindresvport( int sd, struct sockaddr_in *sin);
int
bindresvport_sa( int sd, struct sockaddr *sa);
解説
bindresvport() と bindresvport_sa() 関数は、ソケット記述子を特権 IP ポート、すなわち範囲 0 〜 1023 のポート番号にバインドするために使用されます。sin が struct sockaddr_in へのポインタであるなら、構造体の適切なフィールドが、定義されるべきです。 sin->sin_family は、 sd によって渡されたソケットのアドレスファミリを初期化しなければならないことに注意してください。 sin->sin_port が‘0’であるなら、(範囲 600-1023 の) 匿名のポートが選ばれ、そして bind(2) が成功するなら、 sin->sin_port は、割り付けられたポートを含むように更新されます。
sin が NULL ポインタであるなら、(上記のように) 匿名のポートが割り付けられます。しかしながら、この場合に割り付けたポートを返すために bindresvport() のための方法はありません。
root のみ特権ポートにバインドする (結び付ける) ことができます。この呼び出しは、あらゆる他のユーザに対して失敗します。
bindresvport() の関数プロトタイプは、 AF_INET ソケット専用となっています。 bindresvport_sa() 関数は、より中立の関数プロトタイプがあり、同じように正確に動作します。両方の関数は、同様に正確に振る舞い、両方は、 AF_INET ソケットと同様に AF_INET6 ソケットをサポートすることに注意してください。
戻り値
The bindresvport() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.エラー
- [ EPFNOSUPPORT]
- 2 番目の引数が供給され、アドレスファミリが引数の間で一致しなかったなら。
また、 bindresvport() 関数は、失敗して、呼び出し bind(2), getsockopt(2) または setsockopt(2) で明記されたエラーのいずれかが errno に設定されます。
November 22, 1987 | FreeBSD |