/* Virginia Tech Cognitive Radio Open Source Systems * Virginia Tech, 2009 * * TODO LICENSE INFORMATION GOES HERE */ /* TODO DESCRIPTION OF FILE. * * This file is a temporary demo of a policy engine using some of our socket * communication functions. This is *not* an actual implementation of our * defined PolicyEngine class. */ #include #include #include #include "vtcross/common.h" #include "vtcross/containers.h" #include "vtcross/socket_comm.h" #define CR_PORT 30002 int32_t ValidateTransmissionParameters(struct Parameter pList[], \ struct CE_Info *ce_info, int decision_array[]) { LOG("Policy Engine:: Policies Validated.\n"); for (size_t i = 0; i < ce_info->numParameters; i++) decision_array[i] = 1; return 1; } int32_t RegisterPE(int32_t socketFD) { SendMessage(socketFD, "p_register"); LOG("Policy Engine:: Registration message sent.\n"); return 1; } int32_t SendCEDecision(int32_t socketFD, struct Parameter pList[], \ struct CE_Info *ce_info, int32_t decision_array[]) { char var[50]; for (size_t i = 0; i < ce_info->numParameters; i++) { sprintf(var, "%i", decision_array[i]); SendMessage(socketFD, var); } return 1; } int32_t ParsePolicies() { LOG("Policy Engine:: Policies parsed.\n"); return 1; } int32_t main(int32_t argc, char *argv[]) { if(argc < 3) ERROR(1, "Usage: %s hostname port\n", argv[0]); int32_t decision_array[10]; struct Parameter pList[10]; struct CE_Info ce_info; int32_t ret = 0; int32_t socketFD = ClientSocket(argv[1], argv[2]); LOG("Policy Engine:: Parsing local policies.\n"); ParsePolicies(); RegisterPE(socketFD); while(1) { LOG("Policy Engine:: Waiting for Policy Check Request.\n"); ret = GetRequest(socketFD, pList, &ce_info); if(ret == 1) { LOG("Policy Engine:: Validating Transmission Parameters.\n"); ValidateTransmissionParameters(pList, &ce_info, decision_array); LOG("Policy Engine:: Sending Policy decision to Server.\n"); SendCEDecision(socketFD, pList, &ce_info, decision_array); } } return 0; }