Quick reference
| Command Group | 16 (DRD) |
| Command Code | 150 |
| Server function | cmd_drd_server_get |
| Header version | HV=2 only (HV=1 returns 219) |
| Access | Open read (no identity block in body) |
| Transport | Single-row selectors fit UDP; large listings may require TCP (218) |
| Idempotent | Yes |
Request body
| Offset | Size | Field | Description |
| 0 | 1 | role | 0..4 for one role, or 0xFF for all roles. |
| 1 | 1 | selector | 0x00 all rows, 0x01 one row by dn+sn, 0x02 one RAIDA by raida_id. |
| 2... | var | selector payload | 0x00: none; 0x01: dn(1)+sn(4); 0x02: raida_id(1). |
Response body
Body starts with count (2-byte BE), followed by that many records.
| Field | Size | Description |
| count | 2 | Number of returned records. 0 is valid success. |
| record | variable | role(1), dn(1), sn(4), created_at(8), updated_at(8), last_seen_at(8), field_count(2), TLVs. |
Selector semantics
role=0xFF is valid only with selector 0x00; otherwise 198.
- Selector
0x02 is valid only when role is RAIDA (0) and raida_id is 0..24.
- Selector miss returns
193 (ERROR_NO_ENTRY).
- All-rows result is capped by server-side list maximum (
DRD_SERVER_LIST_MAX).
- On UDP, oversized listings return
218 and must be retried over TCP.
Status codes
| Code | Symbol | Meaning |
| 250 | STATUS_SUCCESS | Read succeeded (including count=0). |
| 16 | ERROR_INVALID_PACKET_LENGTH | Malformed body length for selected selector. |
| 36 | ERROR_EMPTY_REQUEST | Body missing. |
| 193 | ERROR_NO_ENTRY | Requested row or slot does not exist. |
| 198 | ERROR_INVALID_PARAMETER | Invalid role/selector combination or bad selector argument. |
| 218 | ERROR_TCP_REQUIRED | UDP response exceeded one datagram budget. |
| 219 | ERROR_UNSUPPORTED_PROTOCOL | Command 150 sent as HV=1. |
| 252 | ERROR_INTERNAL | Storage-layer failure. |
| 254 | ERROR_MEMORY_ALLOC | Allocation failure while building response. |