节点协议栈初始化概述

PARTITION_InitializeNodes:

1.网络层预先初始化:NETWORK_PreInit-->NetworkIpPreInit

//初始化数据结构
ip = (NetworkDataIp *) MEM_malloc(sizeof(NetworkDataIp));
memset(ip, 0, sizeof(NetworkDataIp));
node->networkData.networkVar = ip;

//初始化转发表、多播转发表
NetworkInitForwardingTable(node);
NetworkInitMulticastForwardingTable(node);
//初始化多播列表
ListInit(node, &ip->multicastGroupList);
//初始化统计数据
NetworkIpInitStats(node, &(ip->stats));
//初始化本地回环转发表
NetworkIpLoopbackForwardingTableInit(node);

2.网络层初始化:NETWORK_Initialize-->NetworkIpInit

//为CPU创建缓存队列
NetworkIpInitCpuQueueConfiguration(node,nodeInput);
//初始化本地回环-->添加本地回环转发表项
NetworkIpLoopbackInit(node, nodeInput);//-->NetworkIpLoopbackForwardingTableAddEntry
//解析IPV4单播、组播协议(包括应用层bellmanford等和网络层路由协议aodv等)
NetworkIpParseAndSetRoutingProtocolType(node, nodeInput);
//-->NetworkIpAddUnicastRoutingProtocolType(node,routingProtocolType,i,NETWORK_IPV4);
//-->NetworkIpAddMulticastRoutingProtocolType(node,multicastProtocolType,i);

初始化网络层路由协议:NETWORK_Initialize-->IpRoutingInit-->AodvInit

3.传输层初始化:TRANSPORT_Initialize-->TransportUdpInit

TransportDataUdp* udp = (TransportDataUdp*)MEM_malloc(sizeof(TransportDataUdp));
TransportUdpInitTrace(node, nodeInput);

4.初始化应用层路由协议:APP_Initialize

APP_TraceInitialize(node, nodeInput);
//初始化静态路由、默认路由
RoutingStaticInit(node,nodeInput,ROUTING_PROTOCOL_STATIC);
RoutingStaticInit(node,nodeInput,ROUTING_PROTOCOL_DEFAULT);
//初始化应用层路由协议
switch (ip->interfaceInfo[i]->routingProtocolType)
{
    case ROUTING_PROTOCOL_BELLMANFORD:
    {
        if (node->appData.bellmanford == NULL)
        {
            RoutingBellmanfordInit(node);
            RoutingBellmanfordInitTrace(node, nodeInput);
        }
        break;
    }
    。。。。。。
}

5.初始化应用层流量产生协议:APP_InitializeApplications

猜你喜欢

转载自blog.csdn.net/zhang1806618/article/details/109100540