Ejemplo n.º 1
0
void sendEventMessageOption121(int Len , unsigned char *option121Data)
{
   char *buf = (char*)malloc(sizeof(CmsMsgHeader)+Len);

   //char buf[sizeof(CmsMsgHeader) + Len]= {0};
   CmsMsgHeader *msg=(CmsMsgHeader *) buf;
   unsigned char *Data = (unsigned char *) (msg+1);
   CmsRet ret;
   int i;

   msg->type = CMS_MSG_DHCPC_OPTION121;
   msg->src = MAKE_SPECIFIC_EID(getpid(), EID_DHCPC);
   msg->dst = EID_SSK;
   msg->flags_event = 1;
   msg->dataLength = Len;

   //strncpy(Data , option121Data , Len);
   for(i=0 ; i<Len ; i++) Data[i] = option121Data[i];

   if ((ret = cmsMsg_send(msgHandle, msg)) != CMSRET_SUCCESS)
   {
      cmsLog_error("could not send out DHCPC_STATUS_CHANGED, ret=%d", ret);
   }
   else
   {
      cmsLog_notice("sent out DHCPC_OPTION121 (Len=%d)", Len);
   }

   free(buf);
   return;
}
Ejemplo n.º 2
0
void AEI_sendTraceRouteEventMessage(TraceRouteDataMsgBody *pTraceRouteInfo, TraceRouteResult result)
{
	char buf[sizeof(CmsMsgHeader) + sizeof(TraceRouteDataMsgBody)];
	CmsMsgHeader *msg=(CmsMsgHeader *) buf;
	TraceRouteDataMsgBody *traceRouteMsg = (TraceRouteDataMsgBody*)(msg+1);
	CmsRet ret;
	int i, strLength;

	if (!requesterId)
	{
		return;
	}

	msg->type = CMS_MSG_TRACE_ROUTE_STATE_CHANGE;
	msg->src = EID_TRACEROUTE;
	msg->dst = EID_SSK;
	msg->flags_event = 1;
	msg->dataLength = sizeof(TraceRouteDataMsgBody);
	memcpy(traceRouteMsg, pTraceRouteInfo, sizeof(TraceRouteDataMsgBody));
	traceRouteMsg->requesterId = requesterId;
	requesterId = 0;
	traceRouteMsg->result = result; 

	for (i=0; i<traceRouteMsg->routeHopsNumberOfEntries; i++)
	{
		strLength = strlen(traceRouteMsg->routeHops[i].hopRTTimes);
		traceRouteMsg->routeHops[i].hopRTTimes[strLength-1]='\0';
	}

#ifdef AEI_VDSL_CUSTOMER_QWEST
	if (result != Complete && result != Error_MaxHopCountExceeded)
#else
	if (result != Complete)
#endif
	{
		traceRouteMsg->responseTime = 0;
		traceRouteMsg->routeHopsNumberOfEntries = 0;
	}

	if ((ret = cmsMsg_send(msgHandle, msg)) != CMSRET_SUCCESS)
	{
		printf("traceroute send msg Fail\n");
	}
	else
	{
		printf("traceroute send msg success\n");
	}
	
}
Ejemplo n.º 3
0
static int myRead(char *outBuf, int inLen)
{
   int readLen = 0;
   static int xmlCfgLen = 0;
   static int offset = 0;
   static CmsMsgHeader *responseMsg=NULL;
   CmsMsgHeader requestMsg = EMPTY_MSG_HEADER;
   char *cfgStart;
   CmsRet ret;
   
   
   if (responseMsg == NULL) 
   {
      cmsLog_debug("first time, get config file from smd");
      /*
       * This is the first time that we were called.
       * Send a message to smd to request a copy of the config file.
       */
      requestMsg.src = EID_TFTP;
      requestMsg.dst = EID_SMD;
      requestMsg.type = CMS_MSG_GET_CONFIG_FILE;
      requestMsg.flags_request = 1;
      
      if ((ret = cmsMsg_send(msgHandle, &requestMsg)) != CMSRET_SUCCESS)
      {
         cmsLog_error("could not send GET_CONFIG_FILE msg to smd.");
         return -1;
      }

      if ((ret = cmsMsg_receive(msgHandle, &responseMsg)) != CMSRET_SUCCESS)
      {
         cmsLog_error("could not receive GET_CONFIG_FILE msg from smd.");
         CMSMEM_FREE_BUF_AND_NULL_PTR(responseMsg);
         return -1;
      }      

      xmlCfgLen = (int) responseMsg->dataLength;
      cmsLog_debug("got config buffer len=%u", xmlCfgLen);
   }

   /* config data starts immediately after the header */
   cfgStart = (char *) (responseMsg + 1);
   
   if (xmlCfgLen <= inLen)
      readLen = xmlCfgLen;
   else
      readLen = inLen;

   memcpy(outBuf, (cfgStart + offset), readLen);

   xmlCfgLen -= readLen;
   offset += readLen;
   glbUploadSize += readLen;

   if (xmlCfgLen == 0)
   {
      /* done copying all the config data out, free the message */
      CMSMEM_FREE_BUF_AND_NULL_PTR(responseMsg);
      offset = 0;
      cmsLog_debug("send out entire config buf, free msg");
   }

   return readLen;
}