bool TCPIP_STACK_Init() { return TCPIP_STACK_Initialize(TCPIP_HOSTS_CONFIGURATION, sizeof (TCPIP_HOSTS_CONFIGURATION) / sizeof (*TCPIP_HOSTS_CONFIGURATION), TCPIP_STACK_MODULE_CONFIG_TBL, sizeof (TCPIP_STACK_MODULE_CONFIG_TBL) / sizeof (*TCPIP_STACK_MODULE_CONFIG_TBL)); }
SYS_MODULE_OBJ TCPIP_STACK_Init() { TCPIP_STACK_INIT tcpipInit; tcpipInit.moduleInit.sys.powerState = SYS_MODULE_POWER_RUN_FULL; tcpipInit.pNetConf = TCPIP_HOSTS_CONFIGURATION; tcpipInit.nNets = sizeof (TCPIP_HOSTS_CONFIGURATION) / sizeof (*TCPIP_HOSTS_CONFIGURATION); tcpipInit.pModConfig = TCPIP_STACK_MODULE_CONFIG_TBL; tcpipInit.nModules = sizeof (TCPIP_STACK_MODULE_CONFIG_TBL) / sizeof (*TCPIP_STACK_MODULE_CONFIG_TBL); return TCPIP_STACK_Initialize(0, &tcpipInit.moduleInit); }
static int _Command_StackOnOff(_CMDIO_DEV_NODE* pCmdIO, int argc, char** argv) { #if defined(TCPIP_STACK_COMMANDS_STORAGE_ENABLE) TCPIP_NET_HANDLE netH; int netIx; TCPIP_COMMAND_STG_DCPT *pDcpt; TCPIP_NETWORK_CONFIG *pCurrConf, *pDstConf; #endif // defined(TCPIP_STACK_COMMANDS_STORAGE_ENABLE) TCPIP_NETWORK_CONFIG *pStackConf; const char *msg; const void* cmdIoParam = pCmdIO->cmdIoParam; if (argc < 2) { (*pCmdIO->pCmdApi->msg)(cmdIoParam, "Usage: stack <up/down> <preserve>\r\n"); (*pCmdIO->pCmdApi->msg)(cmdIoParam, "Ex: stack down preserve\r\n"); return false; } if (memcmp(argv[1], "up", 2) == 0) { pStackConf = 0; #if defined(TCPIP_STACK_COMMANDS_STORAGE_ENABLE) if(pCmdStgDcpt != 0 && pCmdNetConf != 0) { // get the saved network configuration pDcpt = pCmdStgDcpt + 0; pDstConf = pCmdNetConf + 0; pCurrConf = 0; for (netIx = 0; netIx < initialNetIfs; netIx++) { if(pDcpt->stgSize) { // saved config is valid; restore pCurrConf = TCPIP_STACK_NetConfigSet(&pDcpt->netDcptStg, pDcpt->restoreBuff, sizeof(pDcpt->restoreBuff), 0); } else { // don't have a config to restore pCurrConf = 0; } if(pCurrConf == 0) { // restore failed break; } else { // save into array for the stack initialization memcpy(pDstConf, pCurrConf, sizeof(*pDstConf)); } pDcpt++; pDstConf++; } if(pCurrConf) { // success pStackConf = pCmdNetConf; msg = "Stack up: configuration restored\r\n"; } else { msg = "Stack up: configuration restore failed\r\n"; } (*pCmdIO->pCmdApi->msg)(cmdIoParam, msg); } #endif // defined(TCPIP_STACK_COMMANDS_STORAGE_ENABLE) (*pCmdIO->pCmdApi->print)(cmdIoParam, "Restarting the stack with %d interfaces\r\n", initialNetIfs); if (TCPIP_STACK_Initialize(pStackConf, initialNetIfs, 0, 0) == false) { msg = "Stack up failed\r\n"; } else { msg = "Stack up succeeded\r\n"; } (*pCmdIO->pCmdApi->msg)(cmdIoParam, msg); } else if (memcmp(argv[1], "down", 4) == 0) { #if defined(TCPIP_STACK_COMMANDS_STORAGE_ENABLE) tcpipCmdPreserveSavedInfo = false; if(argc == 3 && memcmp(argv[2], "preserve", strlen("preserve")) == 0) { if(pCmdStgDcpt) { // get the last network configuration so we use it when // restart the stack/interface pDcpt = pCmdStgDcpt + 0; for (netIx = 0; netIx < initialNetIfs; netIx++) { netH = TCPIP_STACK_IndexToNet(netIx); pDcpt->stgSize = TCPIP_STACK_NetConfigGet(netH, &pDcpt->netDcptStg, sizeof(pDcpt->netDcptStg), 0); pDcpt++; } (*pCmdIO->pCmdApi->msg)(cmdIoParam, "Stack down: configuration saved\r\n"); tcpipCmdPreserveSavedInfo = true; } } #endif // defined(TCPIP_STACK_COMMANDS_STORAGE_ENABLE) TCPIP_STACK_Deinitialize(); #if defined(TCPIP_STACK_COMMANDS_STORAGE_ENABLE) tcpipCmdPreserveSavedInfo = false; // make sure it doesn't work the next time #endif // defined(TCPIP_STACK_COMMANDS_STORAGE_ENABLE) (*pCmdIO->pCmdApi->msg)(cmdIoParam, "Stack down succeeded\r\n"); } return true; }