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