# NetRawBinding

`import { NetRawBinding } from "destack:net/binding";`

Raw socket and packet binding family.

```ds title="NetRawBinding"
export interface NetRawBinding {
    listPacketBackends(): Result<NetworkPacketBackendStatus[], HostError>;
    openSocket(family: SocketFamily, protocol: int32): Result<SocketHandle, HostError>;
    setHeaderIncluded(socket: SocketHandle, isEnabled: boolean): Result<void, HostError>;
    openPacketEndpoint(options: NetworkPacketOpenOptions): Result<PacketHandle, HostError>;
    receivePacket(packet: PacketHandle, payload: &'a [uint8]): Result<NetworkPacketRecord, HostError>;
    sendPacket(packet: PacketHandle, payload: &'a readonly [uint8]): Result<uint64, HostError>;
    setPacketFilter(packet: PacketHandle, program: &'a readonly [uint8]): Result<void, HostError>;
    clearPacketFilter(packet: PacketHandle): Result<void, HostError>;
    setPacketFanout(packet: PacketHandle, options: NetworkPacketFanoutOptions): Result<void, HostError>;
    clearPacketFanout(packet: PacketHandle): Result<void, HostError>;
    setPacketReceiveRing(packet: PacketHandle, options: NetworkPacketRingOptions): Result<void, HostError>;
    setPacketSendRing(packet: PacketHandle, options: NetworkPacketRingOptions): Result<void, HostError>;
    clearPacketRing(packet: PacketHandle): Result<void, HostError>;
    packetStats(packet: PacketHandle): Result<NetworkPacketStats, HostError>;
}
```

[language/library/src/net/binding/raw.ds:153:288](https://github.com/destack-sh/destack/blob/main/language/library/src/net/binding/raw.ds#L153-L288)

## Members

### `listPacketBackends(): Result<NetworkPacketBackendStatus[], HostError>`

List host packet backends.

### `openSocket(family: SocketFamily, protocol: int32): Result<SocketHandle, HostError>`

Open a raw IP socket.

### `setHeaderIncluded(socket: SocketHandle, isEnabled: boolean): Result<void, HostError>`

Enable or disable IP header inclusion on a raw socket.

### `openPacketEndpoint(options: NetworkPacketOpenOptions): Result<PacketHandle, HostError>`

Open a packet capture or injection endpoint.

### `receivePacket(packet: PacketHandle, payload: &'a [uint8]): Result<NetworkPacketRecord, HostError>`

Receive one packet from a packet endpoint.

### `sendPacket(packet: PacketHandle, payload: &'a readonly [uint8]): Result<uint64, HostError>`

Send one packet through a packet endpoint.

### `setPacketFilter(packet: PacketHandle, program: &'a readonly [uint8]): Result<void, HostError>`

Attach one packet filter program to an endpoint.

### `clearPacketFilter(packet: PacketHandle): Result<void, HostError>`

Clear the active packet filter program.

### `setPacketFanout(packet: PacketHandle, options: NetworkPacketFanoutOptions): Result<void, HostError>`

Set packet fanout on an endpoint.

### `clearPacketFanout(packet: PacketHandle): Result<void, HostError>`

Clear packet fanout from an endpoint.

### `setPacketReceiveRing(packet: PacketHandle, options: NetworkPacketRingOptions): Result<void, HostError>`

Configure one packet receive ring.

### `setPacketSendRing(packet: PacketHandle, options: NetworkPacketRingOptions): Result<void, HostError>`

Configure one packet transmit ring.

### `clearPacketRing(packet: PacketHandle): Result<void, HostError>`

Clear packet ring configuration.

### `packetStats(packet: PacketHandle): Result<NetworkPacketStats, HostError>`

Read packet endpoint statistics.
