ANSC_STATUS 
CosaDmlRLog_Init(void)
{
    COSA_DML_RLOG conf;
    int level;

    if (RLog_LoadConf(&conf) != 0)
    {
        RLOG_DBG("%s: fail to load config\n", __FUNCTION__);
        AnscTraceError(("%s: fail to load config\n", __FUNCTION__));
        return ANSC_STATUS_FAILURE;
    }

    if (!conf.Enable && vsystem("ps | grep syslogd | grep -v grep >/dev/null") == 0)
    {
        /* do not restart syslogd */
        RLOG_DBG("%s: Nothing need to do !\n", __FUNCTION__);
        return ANSC_STATUS_SUCCESS;
    }

    if (RLog_Restart(&conf) != 0)
    {
        RLOG_DBG("%s: fail to start remote logging\n", __FUNCTION__);
        AnscTraceError(("%s: fail to start remote logging\n", __FUNCTION__));
        return ANSC_STATUS_FAILURE;
    }

    RLOG_DBG("%s: start remote log success !\n", __FUNCTION__);
    return ANSC_STATUS_SUCCESS;
}
int  
CcspCcMbi_AddTblRow
    (
        int sessionId,
        char * objectName,
        int * instanceNumber,
        void * user_data
    )
{
    ANSC_STATUS                     returnStatus       = ANSC_STATUS_SUCCESS;
    PDSLH_MPA_INTERFACE             pDslhMpaIf         = (PDSLH_MPA_INTERFACE        )g_pDslhCpeController->GetDslhMpaIf((ANSC_HANDLE)g_pDslhCpeController);
    int                             iStatus            = 0;

    /*with component binding, we have multiple CpeController handle, each for a component*/
    if (user_data)
    {
        PDSLH_CPE_CONTROLLER_OBJECT      pCpeco = user_data;

        pDslhMpaIf         = (PDSLH_MPA_INTERFACE        )pCpeco->GetDslhMpaIf((ANSC_HANDLE)pCpeco);
    }

    if ( (g_currentSessionID != 0) && (sessionId != g_currentSessionID) )
    {
        AnscTraceWarning(("!!! AddTblRow discarded, session id is NOT match !!!\n"));

        return ANSC_STATUS_DISCARD;
    }

    if ( !objectName || !instanceNumber )
    {
        AnscTraceError(("Input parameter invalid for ssp_SsdMbi_AddTblRow\n"));

        returnStatus = CCSP_ERR_INVALID_ARGUMENTS;

        goto EXIT;
    }

    if ( !pDslhMpaIf )
    {
        AnscTraceError(("pDslhMpaIf is NULL for ssp_SsdMbi_AddTblRow\n"));

        returnStatus = ANSC_STATUS_INTERNAL_ERROR;

        goto EXIT;
    }

    returnStatus =
        pDslhMpaIf->AddObject
            (
                pDslhMpaIf->hOwnerContext,
                DSLH_MPA_ENTITY_ACS,
                objectName,
                instanceNumber,
                &iStatus
            );

EXIT:

    return (returnStatus == ANSC_STATUS_SUCCESS) ? CCSP_SUCCESS : returnStatus;
}
ANSC_STATUS
CosaDml_GreIfSetKeepAlivePolicy(ULONG ins, COSA_DML_KEEPALIVE_POLICY policy)
{
    char str_value[khotspotfd_policy_len+1];
    int status;
    char psmRec[MAX_GRE_PSM_REC + 1], psmVal[16];

    if (ins != 1)
        return ANSC_STATUS_FAILURE;

    status = snprintf(str_value, khotspotfd_policy_len, "%d", policy);

    if(status > 0) {

        if(sysevent_set(sysevent_fd, sysevent_token, 
            khotspotfd_keep_alive_policy, str_value, 0)) {

            AnscTraceError(("sysevent set %s failed\n", khotspotfd_keep_alive_policy)); 
        } else {
            AnscTraceWarning(("sysevent set %s to %s\n", khotspotfd_keep_alive_policy, str_value)); 
        }
    }

    /* save to PSM */
    snprintf(psmRec, sizeof(psmRec), GRE_PARAM_KAPOL, ins);
    snprintf(psmVal, sizeof(psmVal), "%d", policy);
    if (GrePsmSet(psmRec, psmVal) != 0)
        return ANSC_STATUS_FAILURE;

    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CosaDml_GreIfSetKeepAliveFailInterval(ULONG ins, ULONG val)
{
    char str_value[khotspotfd_keep_alive_len+1];
    int status;
    char psmRec[MAX_GRE_PSM_REC + 1];
    char psmVal[16];

    if (ins != 1)
        return ANSC_STATUS_FAILURE;

    status = snprintf(str_value, khotspotfd_keep_alive_len, "%d", val);

    if(status > 0) {

        if(sysevent_set(sysevent_fd, sysevent_token, 
            khotspotfd_dead_interval, str_value, 0)) {

            AnscTraceError(("sysevent set %s failed\n", str_value)); 
        } else {
            AnscTraceWarning(("sysevent set %s to %s\n", khotspotfd_dead_interval, str_value)); 
        }
    }

    /* save to PSM */
    snprintf(psmRec, sizeof(psmRec), GRE_PARAM_KAFAILITVL, ins);
    snprintf(psmVal, sizeof(psmVal), "%lu", val);
    if (GrePsmSet(psmRec, psmVal) != 0)
        return ANSC_STATUS_FAILURE;

    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CosaDml_GreIfSetReconnPrimary(ULONG ins, ULONG time)
{
    char str_value[khotspotfd_max_secondary_len+1];
    int status;
    char psmRec[MAX_GRE_PSM_REC + 1];
    char psmVal[16];

    if (ins != 1)
        return ANSC_STATUS_FAILURE;

    status = snprintf(str_value, khotspotfd_max_secondary_len, "%d", time);

    if(status > 0) {

        if(sysevent_set(sysevent_fd, sysevent_token, 
            khotspotfd_max_secondary, str_value, 0)) {

            AnscTraceError(("sysevent set %s failed\n", str_value)); 
        } else {
            AnscTraceWarning(("sysevent set %s to %s\n", khotspotfd_max_secondary, str_value)); 
        }
    }

    /* save to PSM */
    snprintf(psmRec, sizeof(psmRec), GRE_PARAM_RECONNPRI, ins);
    snprintf(psmVal, sizeof(psmVal), "%lu", time);
    if (GrePsmSet(psmRec, psmVal) != 0)
        return ANSC_STATUS_FAILURE;

    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CosaDml_GreIfSetDhcpRemoteId(ULONG ins, BOOL enable)
{
    char psmRec[MAX_GRE_PSM_REC + 1];
    char val[64];

    if (ins != 1)
        return ANSC_STATUS_FAILURE;

    snprintf(val, sizeof(val), "%d", enable ? 1 : 0);
    if(sysevent_set(sysevent_fd, sysevent_token, 
                kSnooper_remote_enable, val, 0) != 0) {
        AnscTraceError(("Fail to set sysevent %s\n", kSnooper_remote_enable));
        return ANSC_STATUS_FAILURE;
    } else {
        AnscTraceDebug(("Set sysevent %s OK\n", kSnooper_remote_enable));
    }

    /* save to PSM */
    snprintf(psmRec, sizeof(psmRec), GRE_PARAM_DHCPRMID, ins);
    if (GrePsmSet(psmRec, enable ? "1" : "0") != 0)
        return ANSC_STATUS_FAILURE;

    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CosaDml_CGreIfSetCfg(ULONG ins, COSA_DML_CGRE_IF *greIf)
{
    const char *evt = "gre-restart";
    char val[64];
    char rec[128], old[16];

    /* 
     * "force restart"
     * 1. Enable is set to TRUE
     * 2. Enable was already TRUE
     */
    if ((greIf->ChangeFlag & COSA_DML_CGRE_CF_ENABLE) && greIf->Enable == TRUE) {
        snprintf(rec, sizeof(rec), CGRE_PARAM_ENABLE, ins);
        if (CGre_PsmGet(rec, old, sizeof(old)) == 0 && atoi(old) == 1)
            evt = "gre-forceRestart";
        }

    if (greIf->ChangeFlag) {
        if (CGre_SaveConf(ins, greIf) != 0)
            return ANSC_STATUS_FAILURE;
        greIf->ChangeFlag = 0;
    }

    snprintf(val, sizeof(val), "%lu", ins);
    if (sysevent_set(sysevent_fd, sysevent_token, (char *)evt, val, 0) != 0) {
        AnscTraceError(("Fail to set sysevent: %s %s\n", evt, val));
        return ANSC_STATUS_FAILURE;
    }

    fprintf(stderr, "Set sysevent: %s %s OK !\n", evt, val);
    return ANSC_STATUS_SUCCESS;
}
Exemplo n.º 8
0
/* SetParameterValues */
BOOL Cosa_SetParamValuesNoCommit
	(
		char*	   				    pDestComp,
		char*						pDestPath,
		parameterValStruct_t		*val,
		int							size
	)
{
	int                        iStatus     = 0;
	char                       *faultParam = NULL;
    CCSP_MESSAGE_BUS_INFO *bus_info = (CCSP_MESSAGE_BUS_INFO *)bus_handle;

    iStatus = CcspBaseIf_setParameterValues
				(
					bus_handle, 
					pDestComp, 
					pDestPath,
					0, CCSP_COMPONENT_ID_CLI,   /* session id and write id */
					val, 
					size, 
					FALSE,   /* no commit */
					&faultParam
				);	

    if (iStatus != CCSP_SUCCESS && faultParam)
    {
		AnscTraceError(("Error:Failed to SetValue for param '%s'\n", faultParam));
		bus_info->freefunc(faultParam);
	}

	return iStatus == CCSP_SUCCESS;
}
ANSC_STATUS
CosaDml_GreIfSetDSCPMarkPolicy(ULONG ins, INT dscp)
{
    char psmRec[MAX_GRE_PSM_REC + 1];
    char psmVal[16];
    char greNetworkInterface[256];
    char tmpPath[256];
    char tmp2Path[256];

    if (ins != 1)
        return ANSC_STATUS_FAILURE;

    if (GrePsmGetStr(GRE_PARAM_GREIF, ins, greNetworkInterface, sizeof(greNetworkInterface)) != 0)
        return ANSC_STATUS_FAILURE;
    snprintf(tmpPath, sizeof(tmpPath), "%sTOSMode", greNetworkInterface);
    snprintf(tmp2Path, sizeof(tmp2Path), "%sTOS", greNetworkInterface);

    if (dscp >= 0) {
        if (g_SetParamValueString(tmpPath, "Static") != ANSC_STATUS_SUCCESS
                || g_SetParamValueUlong(tmp2Path, dscp << 2) != ANSC_STATUS_SUCCESS) {
            AnscTraceError(("Fail to set Cisco GRE DM\n"));
            return ANSC_STATUS_FAILURE;
        }
    } else if (dscp == -1) {
        if (g_SetParamValueString(tmpPath, "Inherited") != ANSC_STATUS_SUCCESS) {
            AnscTraceError(("Fail to set Cisco GRE DM\n"));
            return ANSC_STATUS_FAILURE;
        }
    } else if (dscp == -2) {
        if (g_SetParamValueString(tmpPath, "AutoMapped") != ANSC_STATUS_SUCCESS) {
            AnscTraceError(("Fail to set Cisco GRE DM\n"));
            return ANSC_STATUS_FAILURE;
        }
    } else {
        AnscTraceError(("Bad DSCP value\n"));
        return ANSC_STATUS_FAILURE;
    }

    /* save to PSM */
    snprintf(psmRec, sizeof(psmRec), GRE_PARAM_DSCPPOL, ins);
    snprintf(psmVal, sizeof(psmVal), "%d", dscp);
    if (GrePsmSet(psmRec, psmVal) != 0)
        return ANSC_STATUS_FAILURE;

    return ANSC_STATUS_SUCCESS;
}
ULONG
CosaDml_HsSsidAssoDevGetNumberOfEntries(ULONG ssidIns)
{
    struct hs_ssid *hsssid;

    if (load_hs_ssid() != 0) {
        AnscTraceError(("fail to loa hotspot ssid info\n"));
        return 0;
    }

    if (ssidIns > g_num_hs_ssid) {
        AnscTraceError(("ssid ins: %d is not exist\n", ssidIns));
        return 0;
    }
    hsssid = &g_hs_ssids[ssidIns - 1];

    return hsssid->ncli;
}
static int
tableGroupGetSubDMMapping
	(
        ANSC_HANDLE     hThisObject,
	char*		pSubDM,
        int             indexes[3]
        )
{
	PCCSP_TABLE_HELPER_OBJECT       pThisObject     = (PCCSP_TABLE_HELPER_OBJECT)hThisObject;
	int								size			= 0;
	parameterValStruct_t**			paramValues	    = NULL;
	parameterValStruct_t*			pValue          = NULL;
	char							pTemp[256]      = { 0 };
	char*							pSubDMName = pTemp;
	int							iReturn         = 0;
	int 					uDMType;

	_ansc_sprintf(pTemp, pSubDM, indexes[0], indexes[1], indexes[2]);

	if( !Cosa_GetParamValues(pThisObject->pCcspComp, pThisObject->pCcspPath, &pSubDMName, 1, &size, &paramValues))
	{
		AnscTraceError(("Failed to get value of '%s'\n", pTemp));
	}
	else
	{
		pValue = paramValues[0];

		if (pValue->parameterName && pValue->parameterValue)
			CcspTraceDebug(("Index SubDM:  %s %s\n", pValue->parameterName, pValue->parameterValue));
		uDMType = (int)pValue->type;

		if( uDMType == ccsp_int || uDMType == ccsp_long || uDMType == ccsp_unsignedInt || uDMType == ccsp_unsignedLong)
		{
			iReturn = atoi(pValue->parameterValue);
		}
		else
		{
			AnscTraceError(("Index SubDM, Invalid data type. %s %s\n", pValue->parameterName, pValue->parameterValue));
		}
	}
	Cosa_FreeParamValues(size, paramValues);

	return iReturn;
}
ANSC_STATUS
CosaDml_HotspotInit(void)
{
    int shmid;

    if ((shmid = shmget(kSnooper_Statistics, kSnooper_SharedMemSize, IPC_CREAT | 0666)) < 0) {
        AnscTraceError(("shmget: %s\n", strerror(errno)));
        return ANSC_STATUS_FAILURE;
    }

    if ((g_snstat = shmat(shmid, NULL, 0)) == (snooper_statistics_s *)-1) {
        AnscTraceError(("shmat: %s\n", strerror(errno)));
        g_snstat = NULL;
        return ANSC_STATUS_FAILURE;
    }

    AnscTraceDebug(("Init Hotspot Done\n"));

    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS 
CosaDml_CGreInit(void)
{
    sysevent_fd = sysevent_open("127.0.0.1", SE_SERVER_WELL_KNOWN_PORT, 
            SE_VERSION, "cisco-gre-dm", &sysevent_token);
    if (sysevent_fd < 0) {
        AnscTraceError(("sysevent_open failed\n"));
        return ANSC_STATUS_FAILURE;
    }

    return ANSC_STATUS_SUCCESS;
}
int 
CcspCcMbi_SetCommit
    (
        int sessionId,
        unsigned int writeID,
        dbus_bool commit,
        void * user_data
    )
{
    ANSC_STATUS                     returnStatus       = ANSC_STATUS_SUCCESS;
    PDSLH_MPA_INTERFACE             pDslhMpaIf         = (PDSLH_MPA_INTERFACE        )g_pDslhCpeController->GetDslhMpaIf((ANSC_HANDLE)g_pDslhCpeController);
    PDSLH_CWMP_SOAP_FAULT           pCwmpSoapFault     = (PDSLH_CWMP_SOAP_FAULT      )NULL;
    int                             iStatus            = 0;

    /*with component binding, we have multiple CpeController handle, each for a component*/
    if (user_data)
    {
        PDSLH_CPE_CONTROLLER_OBJECT      pCpeco = user_data;

        pDslhMpaIf         = (PDSLH_MPA_INTERFACE        )pCpeco->GetDslhMpaIf((ANSC_HANDLE)pCpeco);
    }

    if ( (g_currentSessionID != 0) && (sessionId != g_currentSessionID) )
    {
        AnscTraceWarning(("!!! SetCommit discarded, session id is NOT match !!!\n"));

        return ANSC_STATUS_DISCARD;
    }

    if ( !pDslhMpaIf )
    {
        AnscTraceError(("pDslhMpaIf is NULL for ssp_SsdMbi_AddTblRow\n"));

        returnStatus = ANSC_STATUS_INTERNAL_ERROR;

        goto EXIT;
    }

    returnStatus =
        pDslhMpaIf->SetCommit
            (
                pDslhMpaIf->hOwnerContext,
                DSLH_MPA_ENTITY_ACS,
                &iStatus,
                sessionId,
                writeID,
                commit
            );

EXIT:

    return (returnStatus == ANSC_STATUS_SUCCESS) ? CCSP_SUCCESS : CCSP_FAILURE;
}
ANSC_STATUS
CosaDml_HsSsidGetEntryByIndex(ULONG idx, COSA_DML_HOTSPOT_SSID *entry)
{
    char ifs[1024];
    char *tok, *delim, *sp, *from;
    ULONG offset;

    if (load_hs_ssid() != 0) {
        AnscTraceError(("Fail to load HHS SSID list\n"));
        return ANSC_STATUS_FAILURE;
    }

    if (idx >= g_num_hs_ssid) {
        AnscTraceError(("Invalid index\n"));
        return ANSC_STATUS_FAILURE;
    }

    entry->InstanceNumber = idx + 1;
    snprintf(entry->Alias, sizeof(entry->Alias), "cpe-HsSsid-%d", idx + 1);
    snprintf(entry->SSID, sizeof(entry->SSID), "%s", g_hs_ssids[idx].path);
    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CosaDml_HsSsidAssoDevGetEntryByIndex(ULONG ssidIns, ULONG idx, COSA_DML_HOTSPOT_ASSODEV *entry)
{
    struct hs_ssid *hsssid;
    struct hs_client *cli;

    if (load_hs_ssid() != 0) {
        AnscTraceError(("fail to loa hotspot ssid info\n"));
        return ANSC_STATUS_FAILURE;
    }

    if (ssidIns > g_num_hs_ssid) {
        AnscTraceError(("ssid %s not exist\n", ssidIns));
        return 0;
    }
    hsssid = &g_hs_ssids[ssidIns - 1];

    if (idx >= hsssid->ncli || !entry) {
        AnscTraceError(("bad parameter\n"));
        return ANSC_STATUS_FAILURE;
    }
    cli = &hsssid->clis[idx];

    entry->InstanceNumber = idx + 1;
    entry->SsidIns = ssidIns;
    snprintf(entry->Alias, sizeof(entry->Alias), "cpe-HsAssoDev-%d", idx + 1);
    snprintf(entry->MACAddress, sizeof(entry->MACAddress), "%s", cli->mac);
    snprintf(entry->Hostname, sizeof(entry->Hostname), "%s", cli->hostname);
    entry->RSSILevel = cli->rssi;
    snprintf(entry->IPv4Address, sizeof(entry->IPv4Address), "%s", cli->v4addr);
    snprintf(entry->DHCPv4Status, sizeof(entry->DHCPv4Status), "%s", cli->dh4_status);
    snprintf(entry->IPv6Address, sizeof(entry->IPv6Address), "%s", cli->v6addr);
    snprintf(entry->IPv6Prefix, sizeof(entry->IPv6Prefix), "%s", cli->v6pref);
    snprintf(entry->DHCPv6Status, sizeof(entry->DHCPv6Status), "%s", cli->dh6_status);
    snprintf(entry->IPv6LinkLocalAddress, sizeof(entry->IPv6LinkLocalAddress), "%s", cli->v6lladdr);

    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS 
CosaDmlRLog_SetConf(PCOSA_DML_RLOG pRLog)
{
    if (!pRLog)
        return ANSC_STATUS_FAILURE;

    if (RLog_Restart(pRLog) != 0)
    {
        RLOG_DBG("%s: fail to restart remote logging\n", __FUNCTION__);
        AnscTraceError(("%s: fail to restart remote logging\n", __FUNCTION__));
        return ANSC_STATUS_FAILURE;
    }

    if (RLog_SaveConf(pRLog) != 0)
    {
        RLOG_DBG("%s: fail to save config\n", __FUNCTION__);
        AnscTraceError(("%s: fail to save config\n", __FUNCTION__));
        return ANSC_STATUS_FAILURE;
    }

    RLOG_DBG("%s: set config success !\n", __FUNCTION__);
    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CosaDml_GreIfGetReconnPrimary(ULONG ins, ULONG *time)
{
    if (ins != 1 || !time)
        return ANSC_STATUS_FAILURE;

    if (!g_hsfdStat) {
        AnscTraceError(("hotspotfd shm not set\n"));
        return ANSC_STATUS_FAILURE;
    }

    *time = g_hsfdStat->secondaryMaxTime;
    return ANSC_STATUS_SUCCESS;
}
ULONG
CosaDml_HsSsidGetNumberOfEntries(void)
{
    char ifs[1024];
    char *tok, *delim, *sp, *from;
    ULONG cnt;
    
    if (load_hs_ssid() != 0) {
        AnscTraceError(("Fail to load HHS SSID list\n"));
        return 0;
    }

    return g_num_hs_ssid;
}
ANSC_STATUS
CosaDml_GreIfGetKeepAliveThreshold(ULONG ins, ULONG *val)
{
    if (ins != 1 || !val)
        return ANSC_STATUS_FAILURE;

    if (!g_hsfdStat) {
        AnscTraceError(("hotspotfd shm not set\n"));
        return ANSC_STATUS_FAILURE;
    }

    *val = g_hsfdStat->keepAliveThreshold;
    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CosaDml_GreIfSetEndpoints(ULONG ins, const char *eps)
{
    char psmRec[MAX_GRE_PSM_REC + 1];
    char buf[1025];
    char *pri, *sec;

    if (ins != 1 || !eps)
        return ANSC_STATUS_FAILURE;

    snprintf(buf, sizeof(buf), "%s", eps);
    pri = buf;
    if ((sec = strchr(buf, ',')) != NULL)
        *sec++ = '\0';

    if (pri && strlen(pri)) {
        if (sysevent_set(sysevent_fd, sysevent_token, kHotspotfd_primary, pri, 0) != 0) {
            AnscTraceError(("Fail to set sysevent: %s to %s\n", kHotspotfd_primary, pri));
            return ANSC_STATUS_FAILURE;
        }
    }

    if (sec && strlen(sec)) {
        if (sysevent_set(sysevent_fd, sysevent_token, khotspotfd_secondary, sec, 0) != 0) {
            AnscTraceError(("Fail to set sysevent: %s to %s\n", khotspotfd_secondary, sec));
            return ANSC_STATUS_FAILURE;
        }
    }

    /* save to PSM */
    snprintf(psmRec, sizeof(psmRec), GRE_PARAM_ENDPOINTS, ins);
    if (GrePsmSet(psmRec, eps) != 0)
        return ANSC_STATUS_FAILURE;

    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS 
CosaDml_GreInit(void)
{
    int shmid;
    void *params = NULL;

    sysevent_fd = sysevent_open(
            "127.0.0.1", SE_SERVER_WELL_KNOWN_PORT, 
            SE_VERSION, kHotspotfd_events, 
            &sysevent_token
    );

    if (sysevent_fd < 0)
    {
        AnscTraceError(("sysevent_open failed\n"));
    } else {
        AnscTraceWarning(("sysevent_open success\n"));
    }

    if ((shmid = shmget(kKeepAlive_Statistics, kKeepAlive_SharedMemSize, IPC_CREAT | 0666)) < 0) {
        AnscTraceError(("shmget: %s\n", strerror(errno)));
        return ANSC_STATUS_FAILURE;
    }

    if ((g_hsfdStat = shmat(shmid, NULL, 0)) == (hotspotfd_statistics_s *)-1) {
        AnscTraceError(("shmat: %s\n", strerror(errno)));
        g_hsfdStat = NULL;
        return ANSC_STATUS_FAILURE;
    }
    
    AnscCreateTask(circuit_id_init_thread, USER_DEFAULT_TASK_STACK_SIZE, USER_DEFAULT_TASK_PRIORITY, params, "CircuitIDInitThread");

    AnscTraceDebug(("Init Hotspot GRE Done\n"));

    return ANSC_STATUS_SUCCESS;
}
static char *GetAssoBridgeWiFiPort(ULONG ins)
{
    char *assoBrsWfp = NULL;

    if ((assoBrsWfp = malloc(1024)) == NULL)
        return NULL;

    if (GrePsmGetStr(GRE_PARAM_ASSOBRSWFP, ins, assoBrsWfp, 1024) != 0)
    {
        AnscTraceError(("Fail to get AssociatedBridgesWiFiPort from Psm.\n"));
        free( assoBrsWfp );
        assoBrsWfp = NULL;
    }

    return assoBrsWfp;
}
/* need free */
static char *GetAssoBridge(ULONG ins)
{
    char *assoBrs = NULL;

    if ((assoBrs = malloc(1024)) == NULL)
        return NULL;

    if (GrePsmGetStr(GRE_PARAM_ASSOBRS, ins, assoBrs, 1024) != 0)
    {
        AnscTraceError(("Fail to get AssociatedBridges from Psm.\n"));
        free( assoBrs );
        assoBrs = NULL;
    }

    return assoBrs;
}
ANSC_STATUS 
CosaDmlRLog_GetConf(PCOSA_DML_RLOG pRLog)
{
    if (!pRLog)
        return ANSC_STATUS_FAILURE;
    
    if (RLog_LoadConf(pRLog) != 0)
    {
        RLOG_DBG("%s: fail to read config\n", __FUNCTION__);
        AnscTraceError(("%s: fail to read config\n", __FUNCTION__));
        return ANSC_STATUS_FAILURE;
    }

    RLOG_DBG("%s: get config success !\n", __FUNCTION__);
    return ANSC_STATUS_SUCCESS;
}
Exemplo n.º 26
0
/* SetParameterValues */
BOOL Cosa_SetParamValuesNoCommit
	(
		char*	   				    pDestComp,
		char*						pDestPath,
		parameterValStruct_t		*val,
		int							size
	)
{
	int                        iStatus     = 0;
	char                       *faultParam = NULL;

    CCSP_MESSAGE_BUS_INFO *bus_info = (CCSP_MESSAGE_BUS_INFO *)bus_handle;
        /*Removing Logging of Password values due to Security Requirement*/
	if(NULL != strstr(val->parameterName,".Security.X_COMCAST-COM_KeyPassphrase"))
	{
		CcspTraceInfo(("RDKB_SNMP : SNMP SET called for param '%s'\n",val->parameterName));
	}
	else
	{
		CcspTraceInfo(("RDKB_SNMP : SNMP SET called for param '%s' with value '%s'\n",val->parameterName,val->parameterValue));
	}
    iStatus = CcspBaseIf_setParameterValues
				(
					bus_handle, 
					pDestComp, 
					pDestPath,
					0, CCSP_COMPONENT_ID_SNMP,   /* session id and write id */
					val, 
					size, 
					FALSE,   /* no commit */
					&faultParam
				);	

    if (iStatus != CCSP_SUCCESS && faultParam)
    {
		AnscTraceError(("Error:Failed to SetValue for param '%s'\n", faultParam));
        CcspTraceWarning(("RDKB_SNMP : Failed to set parameter value for '%s'\n",faultParam)); 
		bus_info->freefunc(faultParam);
    }
    else
    {
                
                CcspTraceInfo(("RDKB_SNMP : SNMP SET SUCCESS for param '%s'\n",val->parameterName));
    } 
            return iStatus == CCSP_SUCCESS;
}
ANSC_STATUS
CosaDml_GreIfGetStats(ULONG ins, COSA_DML_GRE_IF_STATS *stats)
{
    if (ins != 1|| !stats)
        return ANSC_STATUS_FAILURE;

    if (!g_hsfdStat) {
        AnscTraceError(("hotspotfd shm not set\n"));
        return ANSC_STATUS_FAILURE;
    }

    stats->KeepAliveSent = g_hsfdStat->keepAlivesSent;
    stats->KeepAliveReceived = g_hsfdStat->keepAlivesReceived;
    stats->DiscardChecksumReceived = 0; // XXX: Backend not supportted
    stats->DiscardSequenceNumberReceived = 0; // XXX: Backend not supportted

    return ANSC_STATUS_SUCCESS;
}
Exemplo n.º 28
0
/* Init COSA */
BOOL Cosa_Init(void)
{
#ifdef _COSA_SIM_
//#if 1
    snprintf(dst_pathname_cr, sizeof(dst_pathname_cr), "com.cisco.spvtg.ccsp.CR");
#else
    /*
     *  Hardcoding "eRT." is just a workaround. We need to feed the subsystem
     *  info into this initialization routine.
     */
    sprintf(dst_pathname_cr, "%s%s", CCSP_SNMP_AGENT_PA_SUBSYSTEM, CCSP_DBUS_INTERFACE_CR);
#endif
    if(!bus_handle)
    {
        if (CCSP_Message_Bus_Init(COMPONENT_NAME, CONF_FILENAME, &bus_handle, 
                    malloc, free) != 0)
        {
            AnscTraceError(("%s: CCSP_Message_Bus_Init error\n", __FUNCTION__));
			CcspTraceError(("%s: CCSP_Message_Bus_Init error\n", __FUNCTION__));
            return FALSE;
        }
    }
    return TRUE;
}
ANSC_STATUS
CosaDml_GreIfSetLocalInterfaces(ULONG ins, const char *ifs)
{
    char psmRec[MAX_GRE_PSM_REC + 1], dm[1024];
    char *cp, *if1, *if2, *br1, *br2, *brwfp1, *brwfp2;
    char *ifsBuf, *brsBuf, *brswfpBuf;
    int brIns, brInsStr[3];

    if (ins != 1 || !ifs)
        return ANSC_STATUS_FAILURE;

    if1 = if2 = br1 = br2 = brwfp1 = brwfp2 = NULL;
    ifsBuf = brsBuf = brswfpBuf = NULL;

    /*
     * when we got more then one local interfaces, we have to "models":
     * 1. each VLAN(Bridge) per SSID, 
     *    how can we determine which VLAN the IF belongs to ?
     *    a) let's use 1:1 mapping for IF and VLAN.
     *       first IF for first VLAN (Bridge)
     *    b) assume that port1 is for management port, port2 for upstream, port3 for local IF.
     *       that' ok since in this mode, each bridge has only one local IF.
     * 2. single VLAN for all SSIDs
     *    XXX: we do not support this model now
     *         to support this mode , we have to add/del port.
     */
    if ((ifsBuf = strdup(ifs)) == NULL)
        return ANSC_STATUS_FAILURE;
    if ((brsBuf = GetAssoBridge(ins)) == NULL) {
        free(ifsBuf);
        return ANSC_STATUS_FAILURE;
    }
    if ((brswfpBuf = GetAssoBridgeWiFiPort(ins)) == NULL) {
        free(ifsBuf);
        free(brsBuf);
        return ANSC_STATUS_FAILURE;
    }

    if1 = ifsBuf;
    if ((cp = strchr(ifsBuf, ',')) != NULL) {
        *cp++ = '\0';
        if2 = cp;
        if ((cp = strchr(cp, ',')) != NULL)
            *cp++ = '\0';
    }

    br1 = brsBuf;
    if ((cp = strchr(brsBuf, ',')) != NULL) {
        *cp++ = '\0';
        br2 = cp;
        if ((cp = strchr(cp, ',')) != NULL)
            *cp++ = '\0';
    }

    brwfp1 = brswfpBuf;
    if ((cp = strchr(brswfpBuf, ',')) != NULL) {
        *cp++ = '\0';
        brwfp2 = cp;
        if ((cp = strchr(cp, ',')) != NULL)
            *cp++ = '\0';
    }

    AnscTraceDebug(("if1 %s, br1 %s brwfp1 %s\n", if1 ? if1 : "n/a", br1 ? br1 : "n/a", brwfp1 ? brwfp1 : "n/a"));
    AnscTraceDebug(("if2 %s, br2 %s brwfp2 %s\n", if2 ? if2 : "n/a", br2 ? br2 : "n/a", brwfp2 ? brwfp2 : "n/a"));

    /* XXX: MultiLAN DM do not use "." for object path */
    if (if1 && strlen(if1) && if1[strlen(if1) - 1] == '.')
        if1[strlen(if1) - 1] = '\0';
    if (if2 && strlen(if2) && if2[strlen(if2) - 1] == '.')
        if2[strlen(if2) - 1] = '\0';

    if (br1 && strlen(br1)) {
        if (!if1 || !strlen(if1))
            if1 = "";
        snprintf(dm, sizeof(dm), "%sLowerLayers", brwfp1);
        AnscTraceDebug(("set %s to %s\n", dm, if1));
        if (g_SetParamValueString(dm, if1) != ANSC_STATUS_SUCCESS)
            AnscTraceError(("Fail to set %s to %s\n", dm, if1));

        /* inform the scripts about the changing */
        sscanf(br1, GRE_DM_BR_TEMP, &brIns);
        snprintf(brInsStr, sizeof(brInsStr), "%d", brIns);
        if (sysevent_set(sysevent_fd, sysevent_token, "hotspot-update_bridges", brInsStr, 0) != 0)
            AnscTraceError(("Fail to set sysevent: %s to %s\n", "hotspot_bridge-update", brInsStr));
    }

    if (br2 && strlen(br2)) {
        if (!if2 || !strlen(if2))
            if2 = "";
        snprintf(dm, sizeof(dm), "%sLowerLayers", brwfp2);
        AnscTraceDebug(("set %s to %s\n", dm, if2));
        if (g_SetParamValueString(dm, if2) != ANSC_STATUS_SUCCESS)
            AnscTraceError(("Fail to set %s to %s\n", dm, if2));

        /* inform the scripts about the changing */
        sscanf(br2, GRE_DM_BR_TEMP, &brIns);
        snprintf(brInsStr, sizeof(brInsStr), "%d", brIns);
        if (sysevent_set(sysevent_fd, sysevent_token, "hotspot-update_bridges", brInsStr, 0) != 0)
            AnscTraceError(("Fail to set sysevent: %s to %s\n", "hotspot_bridge-update", brInsStr));
    }

    /* save to PSM */
    snprintf(psmRec, sizeof(psmRec), GRE_PARAM_LOCALIFS, ins);
    if (GrePsmSet(psmRec, ifs) != 0) {
        free(ifsBuf);
        free(brsBuf);
        free(brswfpBuf);
        return ANSC_STATUS_FAILURE;
    }

    free(ifsBuf);
    free(brsBuf);
    free(brswfpBuf);
    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CosaDml_GreIfGetLocalInterfaces(ULONG ins, char *ifs, ULONG size)
{
    char *brlist, *br, *delim, *start, *sp;
    ULONG ptInsList[16], ptInsCnt = 16;
    char dm[1024], dmval[1024 + 1];
    ULONG dmsize;
    int i;
    char *tif;

    if (ins != 1 || !ifs)
        return ANSC_STATUS_FAILURE;

    memset(ifs, 0, size);

    if ((brlist = GetAssoBridge(ins)) == NULL)
        return ANSC_STATUS_FAILURE;

    /* for each bridge */
    for (start = brlist, delim = ",";
            (br = strtok_r(start, delim, &sp)) != NULL;
            start = NULL) {

        AnscTraceDebug(("Bridge: %s\n", br));

        /* for each port */
        snprintf(dm, sizeof(dm), "%sPort.", br);
        if (g_GetInstanceNumbers(dm, ptInsList, &ptInsCnt) != ANSC_STATUS_SUCCESS) {
            AnscTraceError(("Fail to get port ins numbers\n"));
            continue;
        }

        AnscTraceDebug(("  Port Num: %lu\n", ptInsCnt));

        for (i = 0; i < ptInsCnt; i++) {
            /* skip management port */
            snprintf(dm, sizeof(dm), "%sPort.%d.ManagementPort", br, ptInsList[i]);
            if (g_GetParamValueBool(g_pDslhDmlAgent, dm)) {
                AnscTraceDebug(("  Skip Port[%d], it's a management port\n", ptInsList[i]));
                continue;
            }

            /* skip upstream port (GRE IF) */
            dmsize = sizeof(dmval) - 1;
            snprintf(dm, sizeof(dm), "%sPort.%d.LowerLayers", br, ptInsList[i]);
            if (g_GetParamValueString(g_pDslhDmlAgent, dm, dmval, &dmsize) != 0 
                    || strstr(dmval, "Device.WiFi.SSID") == NULL) {
                AnscTraceDebug(("  Skip Port[%d]: %s\n", ptInsList[i], dmval));
                continue;
            }

            /* XXX: MultiLAN DM do not use "." for object path */
            if (strlen(dmval) && dmval[strlen(dmval) - 1] != '.' && strlen(dmval) < sizeof(dmval) - 1) {
                //AnscTraceDebug(("  Adding '.' to local if path\n"));
                strcat(dmval, ".");
            }

            /* add it to list */
            AnscTraceDebug(("  Add Port[%d] `%s/%s` to Local IF\n", ptInsList[i], dm, dmval));
            //if (strlen(ifs)) {
            if (!start || strlen(ifs)) { /* Local If and Bridge are 1:1 mapping, we need "," */
                snprintf(ifs +  strlen(ifs), size - strlen(ifs), ",%s", dmval);
            } else {
                snprintf(ifs +  strlen(ifs), size - strlen(ifs), "%s", dmval);
            }
        }
    }

    free(brlist);

    AnscTraceDebug(("  Local IFs: %s\n", ifs));

    //if (GrePsmGetStr(GRE_PARAM_LOCALIFS, ins, ifs, size) != 0)
    //    return ANSC_STATUS_FAILURE;

    return ANSC_STATUS_SUCCESS;
}