Implements user requests for raw protocols.
| Item | Description |
|---|---|
| so | Identifies the address of a raw socket. |
| req | Specifies the request command. |
| m | Specifies the address of an mbuf structure containing data. |
| nam | Specifies the address of an mbuf structure containing the sockaddr structure. |
| control | This parameter should be set to a null value. |
The raw_usrreq kernel service implements user requests for the raw protocol.
The raw_usrreq service supports the following commands:
| Command | Description |
|---|---|
| PRU_ABORT | Aborts (fast DISCONNECT, DETACH). |
| PRU_ACCEPT | Accepts connection from peer. |
| PRU_ATTACH | Attaches protocol to up. |
| PRU_BIND | Binds socket to address. |
| PRU_CONNECT | Establishes connection to peer. |
| PRU_CONNECT2 | Connects two sockets. |
| PRU_CONTROL | Controls operations on protocol. |
| PRU_DETACH | Detaches protocol from up. |
| PRU_DISCONNECT | Disconnects from peer. |
| PRU_LISTEN | Listens for connection. |
| PRU_PEERADDR | Fetches peer's address. |
| PRU_RCVD | Have taken data; more room now. |
| PRU_RCVOOB | Retrieves out of band data. |
| PRU_SEND | Sends this data. |
| PRU_SENDOOB | Sends out of band data. |
| PRU_SENSE | Returns status into m. |
| PRU_SOCKADDR | Fetches socket's address. |
| PRU_SHUTDOWN | Will not send any more data. |
Any unrecognized command causes the panic kernel service to be called.
The raw_userreq kernel service can be called from either the process or interrupt environment.
| Item | Description |
|---|---|
| EOPNOTSUPP | Indicates an unsupported command. |
| EINVAL | Indicates a parameter error. |
| EACCES | Indicates insufficient authority to support the PRU_ATTACH command. |
| ENOTCONN | Indicates an attempt to detach when not attached. |
| EISCONN | Indicates that the caller tried to connect while already connected. |