raw_usrreq 内核服务

用途

实现原始协议的用户请求。

语法

#include <sys/types.h>
#include <sys/errno.h>
void raw_usrreq (so, req, m, nam, control)
struct  socket * so;
int  req;
struct  mbuf * m;
struct  mbuf * nam;
struct  mbuf * control;

参数

描述
so 标识原始套接字的地址。
必填 指定请求命令。
m 指定包含数据的 姆布夫 结构的地址。
指定 姆布夫 结构的地址,该结构包含 索卡德尔 结构。
control 应该将此参数设置为空值。

描述

raw_usrreq 内核服务实现用户对原始协议的请求。

raw_usrreq 服务可支持以下命令:

命令 描述
PRU_ABORT 异常终止 (快速断开连接,拆离)。
PRU_ACCEPT 接受来自同级的连接。
PRU_ATTACH 将协议附加到启动。
PRU_BIND 将套接字绑定到地址。
PRU_CONNECT 建立与同级的连接。
PRU_CONNECT2 连接两个套接字。
PRU_CONTROL 控制协议上的操作。
PRU_DETACH 从上断开协议。
PRU_DISCONNECT 与同级断开连接。
PRU_LISTEN 侦听连接。
PRU_PEERADDR 访存同级的地址。
PRU_RCVD 已接收数据,有更多空间。
Pru_rcvoob 检索频带外数据。
Pru_send 发送此数据。
Pru_sendoob 发送频带外数据。
Pru_sense 将状态返回到 m。
PRU_SOCKADDR 访存套接字的地址。
Pru_SHUTDOWN 不发送任何数据。

任何无法识别的命令都会导致调用 恐慌 内核服务。

执行环境

可以从 流程中断 环境中调用 Raw_userreq 内核服务。

返回值

描述
EOPNOTSUPP 指示不受支持的命令。
EINVAL 指示参数错误。
EACCES 指示权限不足,无法支持 Pru_ATTACH 命令。
ENOTCONN 指示在未连接时尝试拆离。
EISCONN 指示调用者尝试在已连接的情况下进行连接。