ebind 子例程

用途

将名称绑定到套接字。 还将套接字绑定到作为参数传递的特定灵敏度级别 (SL)。

标准 C 库 (libc.a)

语法

#include <sys/socket.h>
#include <sys/mac.h>
int ebind ( Socket, Name, NameLength, Label)
int Socket;
const struct sockaddr *Name;
socklen_t NameLength;
sec_labels_t *Label;

描述

ebind 子例程将 Name 参数分配给未命名的套接字。 由 socket 子例程创建的套接字未命名; 它们仅由其地址系列标识。 连接套接字的子例程指定名称或使用未命名的套接字。

将 NULL 指针传递到 Label 参数时,将创建正常的多级端口。 但是,将有效标签传递到 Label 参数时,将创建指定灵敏度级别 (SL) 的端口。 这意味着只有指定 SL 上的那些入局连接才能够连接。 这也意味着可以将多个套接字绑定到不同 SL 上的同一端口。 可以创建多级端口以及几个特定级别的端口。 如果没有任何特定 SL 与入局包匹配,那么包端口是缺省多级端口。

参数

描述
套接字 指定要绑定的套接字的套接字描述符。 套接字描述符是整数,
名称 指向指定套接字应绑定到的地址的地址结构。 /usr/include/sys/socket.h 文件定义 sockaddr 地址结构。 sockaddr 结构包含特定于 socket 子例程中提供的地址格式和协议的标识。
NameLength 指定套接字地址结构的长度。
标号 指定与套接字关联的灵敏度标签。

返回值

描述
成功 0
失败 -1

错误代码

如果发生下列任何错误,那么 ebind 子例程不成功:

描述
EACCES 请求的地址受保护,并且当前用户无权访问该地址。
EADDRINUSE 指定的地址已在使用中。
EADDRNOTAVAIL 指定的地址在本地机器上不可用。
EAFNOSUPPORT 指定的地址不是指定套接字的地址系列的有效地址。
EBADF Socket 参数无效。
EDESTADDRREQ address 参数是空指针。
Efault Address 参数不在用户地址空间的可写部分中。
EINVAL 套接字已绑定到地址。
ENOBUF 可用缓冲区空间不足。
ENODEV 指定的设备不存在。
ENOTSOCK Socket 参数引用文件,而不是套接字。
EOPNOTSUPP Socket 参数引用的套接字不支持地址绑定。