DragonOS icon indicating copy to clipboard operation
DragonOS copied to clipboard

refactor(net): the big network rebuild

Open Samuka007 opened this issue 1 year ago • 14 comments

  • [x] 重构事件通知链
  • [x] 使网络子系统更易读
  • [ ] 引入uevent/netlink socket
  • [x] 使http_server可中断
  • [x] 正确实现unix stream, seqpacket socket框架
  • [x] 解决资源依赖导致的潜在死锁
  • [ ] 部分网络调用待完善
  • [ ] 未能正常运行test-backlog
  • [ ] 未引入路由子系统
  • [x] close 时 解除 Port 占用 #990
  • [ ] 实现shutdown逻辑 #989
  • [ ] Address Family在转换到已有地址时,from_u16在2与10(INET6)上会返回None
  • [ ] Redis 未能正常使用客户端连接

一次自认为性价比并不十分高的网络子系统重构,但是辛苦 @val213 @smallcjy @1037827920 @Saga1718 的大力支持,愿意在三天两头构建不成功的网络重构分支下协助我一同完成重构。现网络重构分支已准备好合入主线!

Samuka007 avatar Oct 14 '24 12:10 Samuka007

@Samuka007: no appropriate reviewer found, use r? to override

dragonosbot avatar Oct 14 '24 12:10 dragonosbot

r? @fslongjin @yuyi2439

Samuka007 avatar Oct 14 '24 12:10 Samuka007

image 这个define文件夹改名types更合乎惯例?没见过rust用define表示“定义公共的结构体”的意思的。

fslongjin avatar Oct 16 '24 05:10 fslongjin

image 这个define文件夹改名types更合乎惯例?没见过rust用define表示“定义公共的结构体”的意思的。

命名为 definition 如何呢?毕竟是一大票定义(

Samuka007 avatar Oct 16 '24 08:10 Samuka007

命名为 definition 如何呢?毕竟是一大票定义(

rust仓库里面写的是types image

然后rust圣经(R门!/滑稽)写的类型本身也是叫做Types image

之前看过一些库,没见过用define之类的名字的。

fslongjin avatar Oct 16 '24 08:10 fslongjin

命名为 definition 如何呢?毕竟是一大票定义(

然后,那个文件夹里面的类型的命名也是需要修改,如果某个类型是要跟Posix规范定义的值保持一致的(对外接口的),请全部加上Posix前缀。

fslongjin avatar Oct 16 '24 08:10 fslongjin

unix socket 似乎不能正常关闭、资源也没正常释放 @smallcjy @Saga1718

smallcjy avatar Oct 17 '24 06:10 smallcjy

tcp udp port释放未实现

Samuka007 avatar Oct 17 '24 06:10 Samuka007

重构的 PR 命名为 refactor 似乎比 feat 更合适?

chiichen avatar Oct 23 '24 03:10 chiichen

https://bbs.dragonos.org.cn/t/topic/414 跟踪 TCP Connect 开发

Samuka007 avatar Nov 20 '24 09:11 Samuka007

设备驱动模型部分发生了更改,请进行审查

cc @fslongjin

dragonosbot avatar Mar 10 '25 06:03 dragonosbot

@dragonosbot review

Samuka007 avatar Mar 10 '25 07:03 Samuka007

New TODO: 需要完善 epoll 机制

Samuka007 avatar Apr 21 '25 04:04 Samuka007

https://github.com/Samuka007/dragonos-berkeley-socket/

Samuka007 avatar May 25 '25 08:05 Samuka007

@fslongjin cc? 虽然 unix socket 还用不了,但是原来的也只是充当给 Novashell 通信的内部实现,目前把之前逻辑错误(即会因找不到unix路径所属socket而错误创建socket的错误)去掉之后可以无问题进入 busybox。

Samuka007 avatar Aug 04 '25 07:08 Samuka007

@fslongjin cc? 虽然 unix socket 还用不了,但是原来的也只是充当给 Novashell 通信的内部实现,目前把之前逻辑错误(即会因找不到unix路径所属socket而错误创建socket的错误)去掉之后可以无问题进入 busybox。

ok,后面的pr再实现这个呗

fslongjin avatar Aug 04 '25 09:08 fslongjin

解决了一下冲突,合进主线? @fslongjin cc

sparkzky avatar Aug 18 '25 06:08 sparkzky

@Samuka007 @fslongjin cc 支持epoll了,但是测试程序在我那个分支,可以先把这个分支合进主线~ 图片

sparkzky avatar Sep 02 '25 12:09 sparkzky

unix stream socket test

图片

sparkzky avatar Sep 08 '25 08:09 sparkzky