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; }
ANSC_STATUS CosaDml_GreIfSetKeyGenPolicy(ULONG ins, COSA_DML_KEY_ID_GEN_POLICY policy) { char psmRec[MAX_GRE_PSM_REC + 1], psmVal[64]; char *mode; char greNetworkInterface[256]; char tmpPath[256]; if (ins != 1) return ANSC_STATUS_FAILURE; switch (policy) { case COSA_DML_KEY_ID_GEN_POLICY_DISABLED: mode = "Disabled"; break; case COSA_DML_KEY_ID_GEN_POLICY_PROVISIONED: mode = "Manual"; break; case COSA_DML_KEY_ID_GEN_POLICY_AUTO: mode = "Auto"; break; default: return ANSC_STATUS_FAILURE; } if (GrePsmGetStr(GRE_PARAM_GREIF, ins, greNetworkInterface, sizeof(greNetworkInterface)) != 0) return ANSC_STATUS_FAILURE; snprintf(tmpPath, sizeof(tmpPath), "%sKeyMode", greNetworkInterface); if (g_SetParamValueString(tmpPath, mode) != ANSC_STATUS_SUCCESS) return ANSC_STATUS_FAILURE; /* save to PSM */ snprintf(psmRec, sizeof(psmRec), GRE_PARAM_KEYGENPOL, ins); snprintf(psmVal, sizeof(psmVal), "%d", policy); if (GrePsmSet(psmRec, psmVal) != 0) return ANSC_STATUS_FAILURE; return ANSC_STATUS_SUCCESS; }
ANSC_STATUS CosaDml_GreIfSetKeyId(ULONG ins, const char *keyId) { char psmRec[MAX_GRE_PSM_REC + 1]; char greNetworkInterface[256]; char tmpPath[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), "%sKey", greNetworkInterface); if (g_SetParamValueString(tmpPath, (char *)keyId) != 0) return ANSC_STATUS_FAILURE; /* save to PSM */ snprintf(psmRec, sizeof(psmRec), GRE_PARAM_KEYID, ins); if (GrePsmSet(psmRec, keyId) != 0) return ANSC_STATUS_FAILURE; return ANSC_STATUS_SUCCESS; }
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; }
void SetVideoServiceConfig() { int ret = ANSC_STATUS_SUCCESS; BOOL isBridgeMode = FALSE; char bval[2] = {0}; char pMoCAComponentName[64]="eRT.com.cisco.spvtg.ccsp.moca"; char pComponentPath[64]="/com/cisco/spvtg/ccsp/moca"; char *paramNames[]={"Device.MoCA.Interface.1.Enable"}; char buf[5] = {0}; char FirewallLevel[32] = {0}; ULONG len = 0; len = sizeof(FirewallLevel); ret = g_GetParamValueString(g_pDslhDmlAgent, "Device.X_CISCO_COM_Security.Firewall.FirewallLevel", FirewallLevel, &len ); if(ret != ANSC_STATUS_SUCCESS) { pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); AnscTraceError(("[%s] VideoService : Fail to get Firewall Level \n", __FUNCTION__)); return; } if(!strcmp(FirewallLevel, "High")) { ret = g_SetParamValueString("Device.X_CISCO_COM_Security.Firewall.FirewallLevel", "Medium"); if(ret != ANSC_STATUS_SUCCESS) { pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); AnscTraceError(("[%s] VideoService : Fail to set Firewall Level to Medium\n", __FUNCTION__)); return; } else { CcspTraceWarning(("Firewall Level being set to MEDIUM when VIDEOSERVICE is ENABLED\n")); } } ret = is_usg_in_bridge_mode(&isBridgeMode); if ( ret == ANSC_STATUS_SUCCESS ) { if(isBridgeMode) { ret = g_SetParamValueString("Device.X_CISCO_COM_DeviceControl.LanManagementEntry.1.LanMode","router"); if(ret != ANSC_STATUS_SUCCESS) { pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); AnscTraceError(("[%s] VideoService : Fail to set Disable Bridge Mode \n", __FUNCTION__)); return; } else { CcspTraceWarning(("Bridge Mode being DISABLED when VIDEOSERVICE is ENABLED\n")); } } } else { pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); AnscTraceError(("[%s] VideoService : Fail to query bridge mode \n", __FUNCTION__)); return; } syscfg_get( NULL, "moca_enabled", buf, sizeof(buf)); if( buf != NULL ) { if (strcmp(buf,"0") == 0) { parameterValStruct_t value = {"Device.MoCA.Interface.1.Enable", "true", ccsp_boolean}; char compo[256] = "eRT.com.cisco.spvtg.ccsp.moca"; char bus[256] = "/com/cisco/spvtg/ccsp/moca"; char* faultParam = NULL; int ret1 = CCSP_FAILURE; CCSP_MESSAGE_BUS_INFO *bus_info = (CCSP_MESSAGE_BUS_INFO *)bus_handle; ret1 = CcspBaseIf_setParameterValues( bus_handle, compo, bus, 0, 0, &value, 1, TRUE, &faultParam ); if(ret1 != CCSP_SUCCESS) { if(faultParam) { bus_info->freefunc(faultParam); } pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); CcspTraceError(("RDK_LOG_ERROR, [%s] VideoService MoCA Enable FAILED: Failed ret %d\n",__FUNCTION__,ret1)); return; } else { CcspTraceWarning(("MoCA is being ENABLED when VIDEOSERVICE is ENABLED\n")); } } } pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); }