fix(NET)+docs: lftpd 对端地址修复、E6 裁决收口、陷阱编号迁移重排 TRAP-NET-01~21

- lftpd:net_inet_ntoa 段序改 MSB 首 + 新增 net_getpeername,FTP 日志打印
  真实对端地址(真机实证 192.168.1.2:55524,登记 TRAP-NET-21)
- E6:NET_U15_PROBE 命中=0(含压测)→ 阶段 3 项 4 不立项,U15 登记观察项;
  插桩留仓(宏=0 零成本),soak 驱动 test/host/e6_soak.py 入库
- 编号:全库 Trap NN → TRAP-NET-<nn> 迁移并重排连续 01~21(单调映射,
  沿革见 CH395F_Trap_Records.md 头注);死号 12/13/19/21 引用全部清除;
  GD5F 域引用补正为 TRAP-GD5F-NN
- 陷阱文档全新化:索引 21 行行行真陷阱;删误判存档/发现时间/git 考古/
  FTP 附录;台架纪律教训沉淀第六章方法论
- RAM:Code 211348→211456(+108 lftpd 修复),RW+ZI 净增 +4B;
  优化方案/台账受管区/tsv 同笔同步
- ftp_abort_probe.py 挪 test/host/;引用关系图重生成
- 回归:@build 0/0;@test PASS;ftp_abort 10/10;relisten :7003 20/20;
  ci_local L0+L0.5 全绿;E6 窗口零复位,7 条 WD stall 登记压测假象备查
This commit is contained in:
2026-10-13 20:54:31 +08:00
parent 74ba7ea61b
commit 925058a5ae
58 changed files with 4391 additions and 3361 deletions
+42 -3
View File
@@ -835,6 +835,8 @@ uint32_t net_inet_addr(const char *cp) {
* 出口参数:buf - 填充字符串
* 返回值:buf 指针(buf 为 NULL 时返回 NULL)
* 限定条件:buf 非空且长度足够
* 函数说明:NTOHL 后主机序数值的高字节是点分第一段(与 MCU 端同步修复,
* N34 E13 §6:原低段在前显示成字节反转)
*/
char *net_inet_ntoa(uint32_t addr, char *buf) {
uint32_t naddr = NET_NTOHL(addr);
@@ -844,10 +846,10 @@ char *net_inet_ntoa(uint32_t addr, char *buf) {
}
snprintf(buf, 16, "%lu.%lu.%lu.%lu",
(unsigned long)(naddr & 0xFF),
(unsigned long)((naddr >> 8) & 0xFF),
(unsigned long)((naddr >> 24) & 0xFF),
(unsigned long)((naddr >> 16) & 0xFF),
(unsigned long)((naddr >> 24) & 0xFF));
(unsigned long)((naddr >> 8) & 0xFF),
(unsigned long)(naddr & 0xFF));
return buf;
}
@@ -945,3 +947,40 @@ int net_getsockname(int sockfd, struct net_sockaddr *addr, int *addrlen) {
s_net_errno = NET_OK;
return 0;
}
/*
* 函数功能:获取 Socket 对端地址(IP + Port)(与 MCU 端同名 API——N34 E13 §6)
* 入口参数:sockfd - socket 描述符
* addr - 输出:对端地址
* addrlen - 输入输出:地址结构体长度
* 出口参数:addr/addrlen - 填充
* 返回值:0 成功,-1 失败(未连接 NOTCONN)
* 限定条件:socket 已连接
* 函数说明:经 Winsock getpeername 读取;模拟器多连接后端下 conn fd 有真实对端
*/
int net_getpeername(int sockfd, struct net_sockaddr *addr, int *addrlen) {
struct sockaddr_in wsaddr;
int wslen;
if (sockfd < 0 || sockfd >= NET_MAX_SOCKETS || s_socks[sockfd].in_use == 0) {
s_net_errno = NET_ERR_BADF;
return -1;
}
if (addr == NULL || addrlen == NULL ||
*addrlen < (int)sizeof(struct net_sockaddr_in)) {
s_net_errno = NET_ERR_INVAL;
return -1;
}
wslen = sizeof(wsaddr);
if (getpeername(s_ws[sockfd], (struct sockaddr *)&wsaddr, &wslen) == SOCKET_ERROR) {
s_net_errno = NET_ERR_NOTCONN;
return -1;
}
from_ws_addr(&wsaddr, addr);
*addrlen = (int)sizeof(struct net_sockaddr_in);
s_net_errno = NET_OK;
return 0;
}