ANSC_STATUS CosaDmlDiGetFirstUseDate ( ANSC_HANDLE hContext, char* pValue, PULONG pulSize ) { UtopiaContext ctx; int rc = -1; char firstUseDate[64]; if (!Utopia_Init(&ctx)) return ERR_UTCTX_INIT; rc = Utopia_Get_First_Use_Date(&ctx,firstUseDate); Utopia_Free(&ctx,0); // fprintf(stderr, "<RT> rc=%d, First Use Date = '%s'\n", rc, firstUseDate); if(rc || firstUseDate[0] == '\0') _ansc_sprintf(firstUseDate, "2013-11-22T00:00:00"); AnscCopyString(pValue,firstUseDate); *pulSize = AnscSizeOfString(pValue); return ANSC_STATUS_SUCCESS; }
ANSC_STATUS CosaDmlDiGetProvisioningCode ( ANSC_HANDLE hContext, char* pValue, ULONG* pulSize ) { #if 0 UtopiaContext ctx; int rc = -1; char temp[64]; if (!Utopia_Init(&ctx)) return ERR_UTCTX_INIT; rc = Utopia_Get_Prov_Code(&ctx,temp); Utopia_Free(&ctx,0); AnscCopyString(pValue,temp); *pulSize = AnscSizeOfString(pValue); #endif // Provisioning Code sent to ACS is Serial Number of the device #ifdef _COSA_DRG_TPG_ plat_GetFlashValue("unitsn", unitsn); sprintf(pValue, "%c%c%c%c%c%c%c",unitsn[0],unitsn[1],unitsn[2],unitsn[3],unitsn[4],unitsn[5],unitsn[6]); #elif _COSA_INTEL_USG_ARM_ if (platform_hal_GetSerialNumber(pValue) != RETURN_OK ) return ANSC_STATUS_FAILURE; #endif *pulSize = AnscSizeOfString(pValue); return ANSC_STATUS_SUCCESS; }
static int RLog_LoadConf(PCOSA_DML_RLOG conf) { UtopiaContext ctx; char param[256]; if (!Utopia_Init(&ctx)) return -1; memset(conf, 0, sizeof(*conf)); Utopia_RawGet(&ctx, NULL, RLOG_CFG_ENABLE, param, sizeof(param)); if (atoi(param) == 1) conf->Enable = TRUE; else conf->Enable = FALSE; Utopia_RawGet(&ctx, NULL, RLOG_CFG_HOST, conf->Host, sizeof(conf->Host)); Utopia_RawGet(&ctx, NULL, RLOG_CFG_PORT, param, sizeof(param)); conf->Port = atoi(param); /* could not change */ conf->Protocol = COSA_DML_RLOG_PROTO_UDP; snprintf(conf->Patterns, sizeof(conf->Patterns), "*.*"); Utopia_Free(&ctx, 0); return 0; }
/********************************************************************** caller: self prototype: ANSC_STATUS CosaDmlNeighdiscIfSetCfg ( ANSC_HANDLE hContext, PCOSA_DML_NEIGHDISC_IF_CFG pCfg ); Description: The API the NEIGHDISC configuration. Arguments: ANSC_HANDLE hContext, PCOSA_DML_NEIGHDISC_IF_CFG pCfg Return: The status of the operation. **********************************************************************/ ANSC_STATUS CosaDmlNeighdiscIfSetCfg ( ANSC_HANDLE hContext, PCOSA_DML_NEIGHDISC_IF_CFG pCfg ) { UtopiaContext utctx = {0}; char out[256] = {0}; if ( g_neighdisc_interface.Cfg.InstanceNumber != pCfg->InstanceNumber ) return ANSC_STATUS_CANT_FIND; /*handle syscfg stuff*/ if (!Utopia_Init(&utctx)) return ANSC_STATUS_FAILURE; if (!AnscEqualString(pCfg->Alias, g_neighdisc_interface.Cfg.Alias, TRUE)) Utopia_RawSet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_alias",pCfg->Alias); if (pCfg->RetransTimer != g_neighdisc_interface.Cfg.RetransTimer) { sprintf(out, "%d", pCfg->RetransTimer); Utopia_RawSet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_RetransTimer",out); /*this is so called backend implementation*/ _write_sysctl_file(RetransTimer_SYSCTL_FILE, pCfg->RetransTimer); } if (pCfg->RtrSolicitationInterval != g_neighdisc_interface.Cfg.RtrSolicitationInterval) { sprintf(out, "%d", pCfg->RtrSolicitationInterval); Utopia_RawSet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_RtrSolicitationInterval",out); /*this is so called backend implementation*/ /*RtrSolicitationInterval is in the unit of millisecond, but kernel wants seconds.*/ _write_sysctl_file(RtrSolicitationInterval_SYSCTL_FILE, (pCfg->RtrSolicitationInterval/1000 ? pCfg->RtrSolicitationInterval/1000:1)); } if (pCfg->MaxRtrSolicitations != g_neighdisc_interface.Cfg.MaxRtrSolicitations) { sprintf(out, "%d", pCfg->MaxRtrSolicitations); Utopia_RawSet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_MaxRtrSolicitations",out); /*this is so called backend implementation*/ _write_sysctl_file(MaxRtrSolicitations_SYSCTL_FILE, pCfg->MaxRtrSolicitations); } Utopia_Free(&utctx,1); AnscCopyMemory(&g_neighdisc_interface.Cfg, pCfg, sizeof(*pCfg)); return ANSC_STATUS_SUCCESS; }
ANSC_STATUS CosaDmlDiSetProvisioningCode ( ANSC_HANDLE hContext, char* pProvisioningCode ) { UtopiaContext ctx; int rc = -1; if (!Utopia_Init(&ctx)) return ERR_UTCTX_INIT; rc = Utopia_Set_Prov_Code(&ctx,pProvisioningCode); Utopia_Free(&ctx,!rc); return ANSC_STATUS_SUCCESS; }
static int RLog_SaveConf(const PCOSA_DML_RLOG conf) { UtopiaContext ctx; char param[256]; if (!Utopia_Init(&ctx)) return -1; if (conf->Enable) Utopia_RawSet(&ctx, NULL, RLOG_CFG_ENABLE, "1"); else Utopia_RawSet(&ctx, NULL, RLOG_CFG_ENABLE, "0"); Utopia_RawSet(&ctx, NULL, RLOG_CFG_HOST, conf->Host); snprintf(param, sizeof(param), "%d", conf->Port); Utopia_RawSet(&ctx, NULL, RLOG_CFG_PORT, param); Utopia_Free(&ctx, 1); return 0; }
ANSC_STATUS CosaDmlNeighdiscIfGetEntry ( ANSC_HANDLE hContext, ULONG ulIndex, PCOSA_DML_NEIGHDISC_IF_FULL pEntry ) { UtopiaContext utctx = {0}; char out[256] = {0}; int need_write = 0; if (!Utopia_Init(&utctx)) return ANSC_STATUS_FAILURE; memset(out, 0, sizeof(out)); Utopia_RawGet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_inst_num",out,sizeof(out)); if (!out[0] || !(atoi(out))) { /*the first time system boots up*/ need_write = 1; strcpy(out, "1"); Utopia_RawSet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_inst_num",out); } g_neighdisc_interface.Cfg.InstanceNumber = atoi(out); memset(out, 0, sizeof(out)); Utopia_RawGet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_alias",out,sizeof(out)); if (!out[0]) { /*the first time system boots up*/ need_write = 1; strcpy(out, "InterfaceSetting1"); Utopia_RawSet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_alias",out); } safe_strcpy(g_neighdisc_interface.Cfg.Alias, out, sizeof(g_neighdisc_interface.Cfg.Alias)); /*we don't support writing to these variables*/ g_neighdisc_interface.Cfg.bEnabled = TRUE; g_neighdisc_interface.Cfg.bNUDEnable = TRUE; g_neighdisc_interface.Cfg.bRSEnable = TRUE; Utopia_RawGet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_RetransTimer",out,sizeof(out)); if (!out[0] || !(atoi(out))) g_neighdisc_interface.Cfg.RetransTimer = 1000; else g_neighdisc_interface.Cfg.RetransTimer = atoi(out); Utopia_RawGet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_RtrSolicitationInterval",out,sizeof(out)); if (!out[0] || !(atoi(out))) g_neighdisc_interface.Cfg.RtrSolicitationInterval = 4000; else g_neighdisc_interface.Cfg.RtrSolicitationInterval = atoi(out); Utopia_RawGet(&utctx,NULL,SYSCFG_FORMAT_NEIGHDISC_IF"_MaxRtrSolicitations",out,sizeof(out)); if (!out[0] || !(atoi(out))) g_neighdisc_interface.Cfg.MaxRtrSolicitations = 3; else g_neighdisc_interface.Cfg.MaxRtrSolicitations = atoi(out); Utopia_Free(&utctx,need_write); AnscCopyMemory(pEntry, &g_neighdisc_interface, sizeof(*pEntry)); /*handle backend*/ _apply_kernel_params(&pEntry->Cfg); return ANSC_STATUS_SUCCESS; }