DDP - Linux手册页

时间:2019-08-20 18:01:53  来源:igfitidea点击:

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。

另外参见

recvmsg(2),sendmsg(2),功能(7),套接字(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/