DDP - Linux手册页
Linux程序员手册 第7部分
更新日期: 2017-09-15
名称
ddp-Linux AppleTalk协议实现
语法
#包括
#包括
ddp_socket = socket(AF_APPLETALK,SOCK_DGRAM,0);
raw_socket =套接字(AF_APPLETALK,SOCK_RAW,协议);
说明
Linux实现了Inside Inside AppleTalk中描述的AppleTalk协议。内核中仅存在DDP层和AARP。它们旨在通过netatalk协议库使用。本页记录了那些希望或需要直接使用DDP层的用户的界面。
AppleTalk与用户程序之间的通信使用兼容BSD的套接字接口进行。有关套接字的更多信息,请参见socket(7)。
通过使用AF_APPLETALK套接字系列参数调用socket(2)函数来创建AppleTalk套接字。有效的套接字类型是SOCK_DGRAM打开ddp套接字,或者SOCK_RAW打开原始套接字。 protocol是要接收或发送的AppleTalk协议。对于SOCK_RAW,必须指定ATPROTO_DDP。
原始套接字只能由具有有效用户ID 0的进程或具有CAP_NET_RAW功能的进程打开。
Address format
AppleTalk套接字地址定义为网络号,节点号和端口号的组合。
struct at_addr { unsigned short s_net; unsigned char s_node; }; struct sockaddr_atalk { sa_family_t sat_family; /* address family */ unsigned char sat_port; /* port */ struct at_addr sat_addr; /* net/node */ };
sat_family始终设置为AF_APPLETALK。 sat_port包含端口。低于129的端口号称为保留端口。只有具有有效用户ID 0或CAP_NET_BIND_SERVICE功能的进程才可以将(2)绑定到这些套接字。 sat_addr是主机地址。 struct at_addr的net成员以网络字节顺序包含主机网络。 AT_ANYNET的值是一个通配符,还表示lqthis network.rq。struct at_addr的节点成员包含主机节点号。 AT_ANYNODE的值是通配符,并且还暗示lqthis node.rq ATADDR_BCAST的值是链接本地广播地址。
Socket options
不支持特定于协议的套接字选项。
/proc interfaces
IP支持一组/ proc接口来配置一些全局AppleTalk参数。可以通过读取/写入目录/ proc / sys / net / atalk /中的文件来访问参数。
- aarp-expiry-time
- AARP缓存条目到期之前的时间间隔(以秒为单位)。
- aarp-resolve-time
- 解析AARP缓存条目之前的时间间隔(以秒为单位)。
- aarp-retransmit-limit
- 宣布节点死亡之前AARP查询的重传次数。
- aarp-tick-time
- 计时器驱动AARP的计时器速率(以秒为单位)。
默认值符合规范,并且永远不需要更改。
Ioctls
socket(7)中描述的所有ioctl均适用于DDP。
错误说明
- EACCES
- 用户试图在没有必要权限的情况下执行操作。这些措施包括在未设置广播标志的情况下发送到广播地址,以及尝试绑定到没有有效用户ID 0或CAP_NET_BIND_SERVICE的保留端口。
- EADDRINUSE
- 试图绑定到已经使用的地址。
- EADDRNOTAVAIL
- 请求了不存在的接口,或者请求的源地址不是本地的。
- EAGAIN
- 在非阻塞套接字上的操作将阻塞。
- EALREADY
- 非阻塞套接字上的连接操作已经在进行中。
- ECONNABORTED
- 在accept(2)期间关闭了连接。
- EHOSTUNREACH
- 没有路由表条目与目标地址匹配。
- EINVAL
- 传递了无效的参数。
- EISCONN
- 在已连接的套接字上调用connect(2)。
- EMSGSIZE
- 数据报大于DDP MTU。
- ENODEV
- 网络设备不可用或无法发送IP。
- ENOENT
- 在没有数据包到达的套接字上调用了SIOCGSTAMP。
- ENOMEMand ENOBUFS
- 没有足够的可用内存。
- ENOPKG
- 未配置内核子系统。
- ENOPROTOOPTand EOPNOTSUPP
- 传递了无效的套接字选项。
- ENOTCONN
- 该操作仅在已连接的套接字上定义,但未连接该套接字。
- EPERM
- 用户无权设置高优先级,进行配置更改或向请求的进程或组发送信号。
- EPIPE
- 连接意外关闭或被另一端关闭。
- ESOCKTNOSUPPORT
- 套接字未配置,或者请求的套接字类型未知。
版本
Linux 2.0或更高版本支持AppleTalk。 / proc接口从Linux 2.2开始存在。
备注
使用SO_BROADCAST选项时要非常小心;在Linux中没有特权。粗心地发送广播地址很容易使网络过载。
Compatibility
基本的AppleTalk套接字接口与BSD派生系统上的netatalk兼容。许多BSD系统在发送广播帧时都无法检查SO_BROADCAST。这可能会导致兼容性问题。
原始套接字模式是Linux独有的,并且可以轻松支持替代CAP软件包和AppleTalk监视工具。
BUGS
错误值太多。
尚未介绍用于配置路由表,设备,AARP表和其他设备的ioctl。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。