meow_netmgrd 期1:网络管理服务骨架+接口统一层+CLI+IPC+日志框架
NETMGR_DESIGN.md 期1范围(→ M6.0)落地: - meow_netmgrd 守护:svcd 托管 trigger=boot/restart=on-fail,进程内 HibyOS 只读降级 (/tmp/meow_boot_mode != meow → 读可查/写拒+日志,热切换)。 - 接口统一层(§3):iface 枚举(/sys/class/net+/proc/net/dev,lo/wlan0/usb-eth 热插拔节拍检测); WiFi 状态/扫描/网络列表/连接/断开(wpa_cli popen 有界收割防挂死,257 教训);IP/路由/DNS 只读 (ip 优先 /proc/net/route+resolv.conf);BT 状态/开关/已配对(hciconfig/bluetoothctl);rfkill 读写;udhcpc 续租/释放(MeowOS)。 - IPC 0x00E0-0x00E7(STATUS/IFACE/WIFI_CTL/BT_CTL+各自 RESULT):读级任意、写级仅系统身份(SO_PEERCRED 同 svc_power),0xE8-0xEF 期2/3 预留(仅注释)。 - CLI 双形态 meow_net(status/iface/wifi/bt/rfkill/help):IPC 薄壳,help 本地必可用。 - 日志框架:TF MeowOS/logs/net_<bootts>.log(无卡降级 /tmp),接口状态变化/写操作必记。 - 单线程 poll、静态表、热路径禁 malloc;mipsel 静态(0 warning),宿主+qemu-mipsel 全过, 真机只读验证 status/wifi scan/bt status 正确。 meow_ipc.h 仅追加 0x00E0-0x00E7 段(不改既有行)。
This commit is contained in:
1 parent
cfeb9b775b
commit
79a0fed336
9 files changed
+2247
No files matched your search
@@ -504,4 +504,64 @@ typedef struct m_audio_volume {
|
||||
int32_t pct; /* -1=查询;0-100=设置 */
|
||||
} m_audio_volume_t; /* 4 B */
|
||||
|
||||
/* ================= meow_netmgrd 网络管理服务(devdocs/plan/NETMGR_DESIGN.md §3/§10)=====
|
||||
* 语义:接口统一层(WiFi/BT/USB-eth/rfkill/IP/路由/DNS 只读)查询与控制的系统权威。
|
||||
* 独立 socket /usr/data/meow_net.sock(--sock/MEOW_NET_SOCK 覆盖)。进程形态对齐 powermgr:
|
||||
* svcd 托管 trigger=boot + 单一二进制双形态(/usr/bin/meow_netmgrd 守护 + /usr/bin/meow_net CLI)。
|
||||
* 鉴权分级同 svc_power(§10/期1):读级(STATUS/IFACE、WIFI_CTL 内 status/networks、BT_CTL 内
|
||||
* status/paired)任意调用者;写级(WIFI_CTL 内 scan/connect/disconnect/on/off/rfkill_set/udhcpc、
|
||||
* BT_CTL 内 on/off)仅系统身份(SO_PEERCRED → /usr/bin/meow_* 或 os.meow.* 包)。
|
||||
* HibyOS 模式(/tmp/meow_boot_mode=hiby):读级可查,写级拒 + 记日志。
|
||||
* 期 1 实装 0x00E0-0x00E7;0x00E8-0x00EF 保留(期2:连接普查/DNS 代理;期3:管控策略/事件推送)。 */
|
||||
enum { /* 与主 enum 分列,追加式不改既有行 */
|
||||
MSG_NET_STATUS_REQ = 0x00E0, /* ↑ 概览查询(空负载=全部) */
|
||||
MSG_NET_STATUS_RESULT = 0x00E1, /* ↓ 概览 JSON */
|
||||
MSG_NET_IFACE_REQ = 0x00E2, /* ↑ 接口列表/详情(name 空=全部) */
|
||||
MSG_NET_IFACE_RESULT = 0x00E3, /* ↓ 接口 JSON */
|
||||
MSG_NET_WIFI_CTL = 0x00E4, /* ↑ 子命令字串(scan/connect/... + rfkill/udhcpc) */
|
||||
MSG_NET_WIFI_RESULT = 0x00E5, /* ↓ 结果/文本 */
|
||||
MSG_NET_BT_CTL = 0x00E6, /* ↑ 子命令字串(status/on/off/paired) */
|
||||
MSG_NET_BT_RESULT = 0x00E7 /* ↓ 结果/文本 */
|
||||
/* 0x00E8-0x00EF 保留:0xE8 连接表 / 0xEA 策略读写 / 0xEC DNS 控制 / 0xEE 事件推送(期 2/3) */
|
||||
};
|
||||
|
||||
/* MSG_NET_STATUS_REQ ↑(空负载=全部;预留 subset 位,期 1 恒 0)→ MSG_NET_STATUS_RESULT ↓:
|
||||
* 概览 JSON(mode/ifaces[]/wifi/bt/rfkill[],见 NETMGR_DESIGN §3 统一模型)。*/
|
||||
typedef struct m_net_status_result {
|
||||
uint32_t code; /* MEOW_OK / MEOW_ERR_* */
|
||||
uint16_t json_len; /* json 有效字节(不含 NUL) */
|
||||
uint16_t pad;
|
||||
char json[MEOW_IPC_MAX - 8]; /* 概览 JSON(.data 形状) */
|
||||
} m_net_status_result_t;
|
||||
|
||||
#define NET_IFACE_NAME_MAX 32 /* 接口名上限(lo/wlan0/usb-eth) */
|
||||
|
||||
/* MSG_NET_IFACE_REQ ↑:name 空=全部接口;否则单接口详情。→ MSG_NET_IFACE_RESULT ↓。 */
|
||||
typedef struct m_net_iface_req {
|
||||
char name[NET_IFACE_NAME_MAX];
|
||||
} m_net_iface_req_t; /* 32 B */
|
||||
|
||||
typedef struct m_net_iface_result {
|
||||
uint32_t code;
|
||||
uint16_t json_len;
|
||||
uint16_t pad;
|
||||
char json[MEOW_IPC_MAX - 8];
|
||||
} m_net_iface_result_t;
|
||||
|
||||
/* MSG_NET_WIFI_CTL / MSG_NET_BT_CTL ↑:子命令字串 + 变长 arg(connect 的 ssid/psk)。→ *_RESULT ↓。
|
||||
* cmd(WIFI_CTL): status|scan|networks|connect|disconnect|on|off + rfkill/udhcpc 命名空间
|
||||
* (rfkill arg="list"|"<type> <on|off>";udhcpc arg="renew <if>"|"release <if>")。
|
||||
* cmd(BT_CTL) : status|on|off|paired。 */
|
||||
typedef struct m_net_cmd {
|
||||
char cmd[24]; /* 子命令字串(大写不敏感;接收侧截断) */
|
||||
char arg[132]; /* connect: "<ssid>[,<psk>]";rfkill: "<type> <on|off>";udhcpc: "renew|release <if>" */
|
||||
} m_net_cmd_t; /* 156 B */
|
||||
|
||||
typedef struct m_net_cmd_result {
|
||||
uint32_t code; /* MEOW_OK / MEOW_ERR_PERM / MEOW_ERR_INVAL / MEOW_ERR_NODEV */
|
||||
uint16_t text_len; /* text 有效字节(不含 NUL) */
|
||||
uint16_t pad;
|
||||
char text[MEOW_IPC_MAX - 8];
|
||||
} m_net_cmd_result_t;
|
||||
|
||||
#endif /* MEOW_IPC_H */
|
||||
Reference in new issue
Block a user