Files
Deshab-OS/CODE/UTSM/include/utsm/net.h
T
Linehu 87d532df01 feat: SAS-R0 boot-time capability attestation - unimplemented feature blocks boot
- attest.c: subsystems report readiness, attest_check() before DSK handoff

- FUCK [attest] require_<name>=1 (default) + not-ready -> lotus panic with feature errcode

- wired: sealed_mem/pckc/sched/drr/fs_fat32_rw/net_wired + placeholders (pkg/brand/dkm/nvme/virtio/wlan/vmx/drr_real_mac)

- negative test: require_pkg=1 -> boot-time PKG-E10 panic (verified); dev/release FUCK whitelist = STATUS.md undone items

- CLAUDE.md whitelist rule updated
2026-10-04 21:34:50 +08:00

93 lines
3.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef UTSM_NET_H
#define UTSM_NET_H
#include <utsm/types.h>
#define DKM_NET_MAX_DEVICES 8u
#define DKM_NET_MAX_SCAN_RESULTS 32u
#define DKM_NET_SSID_MAX 32u
/* 网卡链路/能力标志。 */
#define DKM_NET_F_LINK_UP (1u << 0)
#define DKM_NET_F_TX_READY (1u << 1)
#define DKM_NET_F_RX_READY (1u << 2)
#define DKM_NET_F_WIRELESS (1u << 3)
/* WiFi 扫描结果加密类型。 */
#define DKM_NET_SEC_OPEN 0u
#define DKM_NET_SEC_WEP 1u
#define DKM_NET_SEC_WPA 2u
#define DKM_NET_SEC_WPA2 3u
#define DKM_NET_SEC_WPA3 4u
typedef int (*dkm_net_tx_fn)(void *ctx, const void *packet, u32 length);
typedef int (*dkm_net_rx_poll_fn)(void *ctx, void *buffer, u32 capacity, u32 *out_length);
/* WiFi 扫描结果(须先于回调 typedef 定义)。 */
typedef struct dkm_net_scan_result {
char ssid[DKM_NET_SSID_MAX + 1];
u8 bssid[6];
u8 channel;
i8 rssi; /* dBm,负值 */
u8 security; /* DKM_NET_SEC_* */
} dkm_net_scan_result;
/* 无线扫描回调(无线驱动填,有线驱动置 NULL)。 */
typedef int (*dkm_net_scan_start_fn)(void *ctx);
typedef int (*dkm_net_scan_count_fn)(void *ctx);
typedef int (*dkm_net_scan_result_fn)(void *ctx, u32 n, dkm_net_scan_result *out);
typedef int (*dkm_net_is_wireless_fn)(void *ctx);
typedef struct dkm_net_device_desc {
const char *name;
u8 mac[6];
u32 flags;
void *ctx;
dkm_net_tx_fn tx;
dkm_net_rx_poll_fn rx_poll;
/* 无线扩展回调(无线驱动填,有线驱动置 NULL,向后兼容)。 */
dkm_net_scan_start_fn scan_start;
dkm_net_scan_count_fn scan_count;
dkm_net_scan_result_fn scan_result;
dkm_net_is_wireless_fn is_wireless;
} dkm_net_device_desc;
typedef struct dkm_net_device_info {
const char *name;
u8 mac[6];
u32 flags;
} dkm_net_device_info;
/* 网络设备统计(真机诊断用,驱动层累计)。 */
typedef struct dkm_net_stats {
u64 tx_ok; /* TX 成功帧数 */
u64 tx_err; /* TX 失败帧数 */
u64 rx_ok; /* RX 成功帧数 */
u64 rx_err; /* RX 错误帧数 */
u64 rx_overflow; /* RX buffer 溢出丢包 */
u64 link_changes; /* 链路状态变化次数 */
} dkm_net_stats;
typedef struct dkm_net_api {
int (*register_device)(const dkm_net_device_desc *desc);
u32 (*device_count)(void);
int (*device_info)(u32 index, dkm_net_device_info *out);
int (*tx)(u32 index, const void *packet, u32 length);
int (*rx_poll)(u32 index, void *buffer, u32 capacity, u32 *out_length);
/* 无线扫描接口(dispatch 到驱动回调,有线设备返回 -3 表示不支持)。 */
int (*scan_start)(u32 index);
int (*scan_count)(u32 index);
int (*scan_result)(u32 index, u32 n, dkm_net_scan_result *out);
int (*is_wireless)(u32 index);
/* 网络统计查询(返回 0 成功,-1 索引越界)。 */
int (*device_stats)(u32 index, dkm_net_stats *out);
} dkm_net_api;
void net_init(void);
/* attest: 有线/无线设备计数(启动期能力证明用,见 utsm/attest.h) */
void net_attest_counts(u32 *out_total, u32 *out_wireless);
const dkm_net_api *net_get_api(void);
#endif