NIC 对象绑定IP还未实现完成 明天继续

This commit is contained in:
impact-eintr
2022-11-24 21:32:04 +08:00
parent e51d8ea721
commit 4589d971fd
5 changed files with 165 additions and 10 deletions

View File

@@ -1,6 +1,7 @@
package stack
import (
"log"
"netstack/ilist"
"netstack/sleep"
"netstack/tcpip"
@@ -89,9 +90,16 @@ type NetworkDispatcher interface {
type LinkEndpointCapabilities uint
// type TransportProtocolFactory func() TransportProtocol TODO
type NetworkProtocolFactory func() NetworkProtocol
var (
// 以下两个map需要在init函数中注册
// 传输层协议的注册存储结构 TODO
// 网络层协议的注册存储结构 TODO
//transportProtocols = make(map[string]TransportProtocolFactory)
// 网络层协议的注册存储结构
networkProtocols = make(map[string]NetworkProtocolFactory)
linkEPMu sync.RWMutex
nextLinkEndpointID tcpip.LinkEndpointID = 1
@@ -100,7 +108,8 @@ var (
// ==============================网络层相关==============================
type NetworkProtocol interface {
// TODO 需要添加
Number() tcpip.NetworkProtocolNumber
// todo 需要添加
}
// NetworkEndpoint是需要由网络层协议例如ipv4ipv6的端点实现的接口
@@ -108,7 +117,7 @@ type NetworkEndpoint interface {
// TODO 需要添加
}
type NetworkEndpoingID struct {
type NetworkEndpointID struct {
LocalAddress tcpip.Address
}
@@ -147,6 +156,12 @@ type referencedNetworkEndpoint struct {
holdsInsertRef bool
}
// 注册一个新的网络协议工厂
func RegisterNetworkProtocolFactory(name string, p NetworkProtocolFactory) {
networkProtocols[name] = p
log.Println(networkProtocols)
}
// 注册一个链路层设备
func RegisterLinkEndpoint(linkEP LinkEndpoint) tcpip.LinkEndpointID {
linkEPMu.Lock()