⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 megaco_flex_scanner_drv.flex.src

📁 OTP是开放电信平台的简称
💻 SRC
📖 第 1 页 / 共 4 页
字号:
  ASSIGN_TERM_SPEC(3);    ASSIGN_TERM_SPEC(ERL_DRV_TUPLE);  ASSIGN_TERM_SPEC(3);}DRIVER_INIT(mfs_drv){  DBG( ("DRIVER_INIT(mfs_drv) -> entry\n") );  return &mfs_entry;}static ErlDrvData mfs_start(ErlDrvPort port, char *buf){  DBG( ("mfs_start -> entry\n") );  mfs_port = port;  mfs_AddToken = driver_mk_atom("AddToken");  mfs_AndAUDITSelectToken = driver_mk_atom("AndAUDITSelectToken");  mfs_AuditCapToken = driver_mk_atom("AuditCapToken");  mfs_AuditToken = driver_mk_atom("AuditToken");  mfs_AuditValueToken = driver_mk_atom("AuditValueToken");  mfs_AuthToken = driver_mk_atom("AuthToken");  mfs_BothToken = driver_mk_atom("BothToken");  mfs_BothwayToken = driver_mk_atom("BothwayToken");  mfs_BriefToken = driver_mk_atom("BriefToken");  mfs_BufferToken = driver_mk_atom("BufferToken");  mfs_COLON = driver_mk_atom("COLON");  mfs_COMMA = driver_mk_atom("COMMA");  mfs_ContextAttrToken = driver_mk_atom("ContextAttrToken");  mfs_ContextAuditToken = driver_mk_atom("ContextAuditToken");  mfs_ContextListToken = driver_mk_atom("ContextListToken");  mfs_CtxToken = driver_mk_atom("CtxToken");  mfs_DelayToken = driver_mk_atom("DelayToken");  mfs_DeleteToken = driver_mk_atom("DeleteToken");  mfs_DigitMapDescriptor = driver_mk_atom("DigitMapDescriptor");  mfs_DigitMapDescriptorToken = driver_mk_atom("DigitMapDescriptorToken");  mfs_DigitMapToken = driver_mk_atom("DigitMapToken");  mfs_DigitMapValue = driver_mk_atom("DigitMapValue");  mfs_DirectionToken = driver_mk_atom("DirectionToken");  mfs_DiscardToken = driver_mk_atom("DiscardToken");  mfs_DisconnectedToken = driver_mk_atom("DisconnectedToken");  mfs_DurationToken = driver_mk_atom("DurationToken");  mfs_EQUAL = driver_mk_atom("EQUAL");  mfs_EmbedToken = driver_mk_atom("EmbedToken");  mfs_EmergencyToken = driver_mk_atom("EmergencyToken");  mfs_EmergencyOffToken = driver_mk_atom("EmergencyOffToken");  mfs_EmergencyValueToken = driver_mk_atom("EmergencyValueToken");  mfs_ErrorToken = driver_mk_atom("ErrorToken");  mfs_EventBufferToken = driver_mk_atom("EventBufferToken");  mfs_EventsToken = driver_mk_atom("EventsToken");  mfs_ExternalToken = driver_mk_atom("ExternalToken");  mfs_FailoverToken = driver_mk_atom("FailoverToken");  mfs_ForcedToken = driver_mk_atom("ForcedToken");  mfs_GREATER = driver_mk_atom("GREATER");  mfs_GracefulToken = driver_mk_atom("GracefulToken");  mfs_H221Token = driver_mk_atom("H221Token");  mfs_H223Token = driver_mk_atom("H223Token");  mfs_H226Token = driver_mk_atom("H226Token");  mfs_HandOffToken = driver_mk_atom("HandOffToken");  mfs_IEPSToken = driver_mk_atom("IEPSToken");  mfs_IllegalChar = driver_mk_atom("IllegalChar");  mfs_ImmAckRequiredToken = driver_mk_atom("ImmAckRequiredToken");  mfs_InSvcToken = driver_mk_atom("InSvcToken");  mfs_InactiveToken = driver_mk_atom("InactiveToken");  mfs_InternalToken = driver_mk_atom("InternalToken");  mfs_InterruptByEventToken = driver_mk_atom("InterruptByEventToken");  mfs_InterruptByNewSignalsDescrToken = driver_mk_atom("InterruptByNewSignalsDescrToken");  mfs_IntsigDelayToken = driver_mk_atom("IntsigDelayToken");  mfs_IsolateToken = driver_mk_atom("IsolateToken");  mfs_IterationToken = driver_mk_atom("IterationToken");  mfs_KeepActiveToken = driver_mk_atom("KeepActiveToken");  mfs_LBRKT = driver_mk_atom("LBRKT");  mfs_LESSER = driver_mk_atom("LESSER");  mfs_LSBRKT = driver_mk_atom("LSBRKT");  mfs_LocalControlToken = driver_mk_atom("LocalControlToken");  mfs_LocalDescriptorToken = driver_mk_atom("LocalDescriptorToken");  mfs_LocalToken = driver_mk_atom("LocalToken");  mfs_LockStepToken = driver_mk_atom("LockStepToken");  mfs_LoopbackToken = driver_mk_atom("LoopbackToken");  mfs_MediaToken = driver_mk_atom("MediaToken");  mfs_MegacopToken = driver_mk_atom("MegacopToken");  /* mfs_MessageSegmentToken = driver_mk_atom("MessageSegmentToken"); */  mfs_MethodToken = driver_mk_atom("MethodToken");  mfs_MgcIdToken = driver_mk_atom("MgcIdToken");  mfs_ModeToken = driver_mk_atom("ModeToken");  mfs_ModemToken = driver_mk_atom("ModemToken");  mfs_ModifyToken = driver_mk_atom("ModifyToken");  mfs_MoveToken = driver_mk_atom("MoveToken");  mfs_MtpAddressToken = driver_mk_atom("MtpAddressToken");  mfs_MuxToken = driver_mk_atom("MuxToken");  mfs_NEQUAL = driver_mk_atom("NEQUAL");  mfs_NotifyCompletionToken = driver_mk_atom("NotifyCompletionToken");  mfs_NotifyImmediateToken = driver_mk_atom("NotifyImmediateToken");  mfs_NotifyRegulatedToken = driver_mk_atom("NotifyRegulatedToken");  mfs_NeverNotifyToken = driver_mk_atom("NeverNotifyToken");  mfs_NotifyToken = driver_mk_atom("NotifyToken");  mfs_Nx64kToken = driver_mk_atom("Nx64kToken");  mfs_ObservedEventsToken = driver_mk_atom("ObservedEventsToken");  mfs_OffToken = driver_mk_atom("OffToken");  mfs_OnOffToken = driver_mk_atom("OnOffToken");  mfs_OnToken = driver_mk_atom("OnToken");  mfs_OnewayToken = driver_mk_atom("OnewayToken");  mfs_OnewayBothToken = driver_mk_atom("OnewayBothToken");  mfs_OnewayExternalToken = driver_mk_atom("OnewayExternalToken");  mfs_OrAUDITselectToken = driver_mk_atom("OrAUDITselectToken");  mfs_OtherReasonToken = driver_mk_atom("OtherReasonToken");  mfs_OutOfSvcToken = driver_mk_atom("OutOfSvcToken");  mfs_PackagesToken = driver_mk_atom("PackagesToken");  mfs_PendingToken = driver_mk_atom("PendingToken");  mfs_PriorityToken = driver_mk_atom("PriorityToken");  mfs_ProfileToken = driver_mk_atom("ProfileToken");  mfs_QuotedChars = driver_mk_atom("QuotedChars");  mfs_RBRKT = driver_mk_atom("RBRKT");  mfs_RSBRKT = driver_mk_atom("RSBRKT");  mfs_ReasonToken = driver_mk_atom("ReasonToken");  mfs_RecvonlyToken = driver_mk_atom("RecvonlyToken");  mfs_RemoteDescriptorToken = driver_mk_atom("RemoteDescriptorToken");  mfs_RemoteToken = driver_mk_atom("RemoteToken");  mfs_ReplyToken = driver_mk_atom("ReplyToken");  mfs_RequestIDToken = driver_mk_atom("RequestIDToken");  mfs_ReservedGroupToken = driver_mk_atom("ReservedGroupToken");  mfs_ReservedValueToken = driver_mk_atom("ReservedValueToken");  mfs_ResetEventsDescriptorToken = driver_mk_atom("ResetEventsDescriptorToken");  mfs_ResponseAckToken = driver_mk_atom("ResponseAckToken");  mfs_RestartToken = driver_mk_atom("RestartToken");  mfs_SEP = driver_mk_atom("SEP");  mfs_SafeChars = driver_mk_atom("SafeChars");  /* mfs_SegmentationCOmpleteToken = driver_mk_atom("SegmentationCOmpleteToken"); */  mfs_SendonlyToken = driver_mk_atom("SendonlyToken");  mfs_SendrecvToken = driver_mk_atom("SendrecvToken");  mfs_ServiceChangeAddressToken = driver_mk_atom("ServiceChangeAddressToken");  mfs_ServiceChangeIncompleteToken = driver_mk_atom("ServiceChangeIncompleteToken");  mfs_ServiceChangeToken = driver_mk_atom("ServiceChangeToken");  mfs_ServiceStatesToken = driver_mk_atom("ServiceStatesToken");  mfs_ServicesToken = driver_mk_atom("ServicesToken");  mfs_SignalListToken = driver_mk_atom("SignalListToken");  mfs_SignalTypeToken = driver_mk_atom("SignalTypeToken");  mfs_SignalsToken = driver_mk_atom("SignalsToken");  mfs_StatsToken = driver_mk_atom("StatsToken");  mfs_StreamToken = driver_mk_atom("StreamToken");  mfs_SubtractToken = driver_mk_atom("SubtractToken");  mfs_SynchISDNToken = driver_mk_atom("SynchISDNToken");  mfs_TerminationStateToken = driver_mk_atom("TerminationStateToken");  mfs_TestToken = driver_mk_atom("TestToken");  mfs_TimeOutToken = driver_mk_atom("TimeOutToken");  mfs_TimeStampToken = driver_mk_atom("TimeStampToken"); /* OTP-5042 */  mfs_TopologyToken = driver_mk_atom("TopologyToken");  mfs_TransToken = driver_mk_atom("TransToken");  mfs_V18Token = driver_mk_atom("V18Token");  mfs_V22Token = driver_mk_atom("V22Token");  mfs_V22bisToken = driver_mk_atom("V22bisToken");  mfs_V32Token = driver_mk_atom("V32Token");  mfs_V32bisToken = driver_mk_atom("V32bisToken");  mfs_V34Token = driver_mk_atom("V34Token");  mfs_V76Token = driver_mk_atom("V76Token");  mfs_V90Token = driver_mk_atom("V90Token");  mfs_V91Token = driver_mk_atom("V91Token");  mfs_VersionToken = driver_mk_atom("VersionToken");  mfs_asn1_NOVALUE = driver_mk_atom("asn1_NOVALUE");  mfs_endOfMessage = driver_mk_atom("endOfMessage");  DBG( ("mfs_start -> exit\n") );  return (ErlDrvData) 0;}static void mfs_stop(ErlDrvData handle){  mfs_port = 0;  DBG( ("mfs_stop -> exit\n") );  return;}static void mfs_command(ErlDrvData handle, 			char *buf, int buf_len){  driver_failure_atom(mfs_port, "bad_usage");  return;}static int mfs_control(ErlDrvData          handle, 		       unsigned int        command,		       char  *buf,     int buf_len, 		       char **res_buf, int res_buf_len){  YY_BUFFER_STATE state;  DBG( ("mfs_control -> entry with"	"\n   command:     %d"	"\n   buf_len:     %d"	"\n   res_buf_len: %d\n", command, buf_len, res_buf_len) );  if (NULL == (mfs_text_buf = ALLOC(buf_len))) {    int len;    mfs_alloc_failed("failed allocating text buffer", buf_len);    len = strlen(mfs_error_msg);    if (res_buf_len < len) {      /*        * Since we failed the memory allocation in the first place,       * there is no point in trying to get more memory for the        * error code...       */      len = res_buf_len;    }    strncpy(*res_buf, mfs_error_msg, len);    return len;  }  mfs_text_ptr = mfs_text_buf;  mfs_term_spec_size  = 1000 + buf_len;       /* OTP-4237 */  mfs_term_spec       = ALLOC(mfs_term_spec_size * sizeof(ErlDrvTermData));  if (NULL == mfs_term_spec) {    int len;    mfs_alloc_failed("failed allocating term spec buffer", 		     mfs_term_spec_size * sizeof(ErlDrvTermData));    len = strlen(mfs_error_msg);    if (res_buf_len < len) {      /*        * Since we failed the memory allocation in the first place,       * there is no point in trying to get more memory for the        * error code...       */      len = res_buf_len;    }    strncpy(*res_buf, mfs_error_msg, len);    driver_free(mfs_text_buf);    return len;      }  mfs_term_spec_index = 0;  mfs_token_counter   = 0;  mfs_error           = FALSE;  /* Prepare the first field in the {tokens, TokenList, LastLine} tuple */  mfs_ensure_term_spec(2);  ASSIGN_TERM_SPEC(ERL_DRV_ATOM);  ASSIGN_TERM_SPEC(driver_mk_atom("tokens"));  /* Perform the actual scan */  yylineno = 1;  state = yy_scan_bytes(buf, buf_len);  yylex();  yy_delete_buffer(state);  if (!mfs_error) {    /*      * Prepare the rest of the {tokens, TokenList, LastLine} tuple      * and send it as message top caller.      */    mfs_ensure_term_spec(7);    ASSIGN_TERM_SPEC(ERL_DRV_NIL);    ASSIGN_TERM_SPEC(ERL_DRV_LIST);    ASSIGN_TERM_SPEC(mfs_token_counter + 1);    ASSIGN_TERM_SPEC(ERL_DRV_INT);    ASSIGN_TERM_SPEC(LINENO_OR_TOKENCNT);    ASSIGN_TERM_SPEC(ERL_DRV_TUPLE);    ASSIGN_TERM_SPEC(3);        DBG( ("mfs_control -> send the term when"	  "\n   term_spec_index: %d"	  "\n   term_spec_size:  %d\n", 	  mfs_term_spec_index, mfs_term_spec_size) );    driver_send_term(mfs_port,                      driver_caller(mfs_port),                     mfs_term_spec,                      mfs_term_spec_index);        if (mfs_text_buf  != NULL) driver_free(mfs_text_buf);    if (mfs_term_spec != NULL) driver_free(mfs_term_spec);    DBG( ("mfs_control -> done (0)\n") );    return 0;  } else {    /*      * Return the error message      */    int len = strlen(mfs_error_msg);    /*     * If we fail to realloc a bigger block of memory     * we have to make do with what we got     */    if (res_buf_len < len) {      void *tmp = REALLOC(*res_buf, len);      if (tmp != NULL)	*res_buf = tmp;      else	len = res_buf_len;    }    strncpy(*res_buf, mfs_error_msg, len);    if (mfs_text_buf  != NULL) driver_free(mfs_text_buf);    if (mfs_term_spec != NULL) driver_free(mfs_term_spec);    DBG( ("mfs_control -> done (%d)\n", len) );    return len;  }}static void mfs_finish(void){  return;}static void mfs_fatal_error(char* msg){  if (!mfs_error) {    int len = strlen(msg);    if (len >= sizeof(mfs_error_msg))      len = sizeof(mfs_error_msg) - 1;          strncpy(mfs_error_msg, msg, len);    mfs_error_msg[len] = '\0';    mfs_error = TRUE;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -