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

📄 megaco_flex_scanner_drv.flex.src

📁 OTP是开放电信平台的简称
💻 SRC
📖 第 1 页 / 共 4 页
字号:
  /*  ``The contents of this file are subject to the Erlang Public License,   *  Version 1.1, (the "License"); you may not use this file except in   *  compliance with the License. You should have received a copy of the   *  Erlang Public License along with this software. If not, it can be   *  retrieved via the world wide web at http://www.erlang.org/.   *     *  Software distributed under the License is distributed on an "AS IS"   *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See   *  the License for the specific language governing rights and limitations   *  under the License.   *     *  The Initial Developer of the Original Code is Ericsson Utvecklings AB.   *  Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings   *  AB. All Rights Reserved.''   *     * 	  $Id$   * ----------------------------------------------------------------------   *  Author:   Hakan Mattsson <hakan@cslab.ericsson.com>   *  Purpose : Scanner for text encoded Megaco/H.248 messages   * ----------------------------------------------------------------------   *    * Throughout this file the prefix mfs is used for megaco_flex_scanner.   * The reason is to get shorter function and variable names.   */%option case-insensitive  /* MEGACO_YY_LINENO_OPTION   * Note that this construction is intended to make it   * possible to generate flex files that either reports   * line-number or one that don't.   * See MEGACO_DUMMY_DECL_YY_LINENO and   *     MEGACO_LINENO_OR_TOKENCOUNTER below.   */%MEGACO_YY_LINENO_OPTION%%option noyywrap%option noinput%option nounput %{#define HAVE_UIO_H#include "erl_driver.h"#include <stdarg.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#define TRUE  1;#define FALSE 0;#define FREE(bufP)        driver_free(bufP)#define ALLOC(sz)         driver_alloc(sz)#define REALLOC(bufP, sz) driver_realloc(bufP, sz)#define YY_MAIN false#define YY_FATAL_ERROR(msg) mfs_fatal_error(msg)static ErlDrvTermData mfs_AddToken = 0;static ErlDrvTermData mfs_AndAUDITSelectToken = 0;          /* v3 */static ErlDrvTermData mfs_AuditCapToken = 0;static ErlDrvTermData mfs_AuditToken = 0;static ErlDrvTermData mfs_AuditValueToken = 0;static ErlDrvTermData mfs_AuthToken = 0;static ErlDrvTermData mfs_BothToken = 0;                    /* v3 */static ErlDrvTermData mfs_BothwayToken = 0;static ErlDrvTermData mfs_BriefToken = 0;static ErlDrvTermData mfs_BufferToken = 0;static ErlDrvTermData mfs_COLON = 0;static ErlDrvTermData mfs_COMMA = 0;static ErlDrvTermData mfs_ContextAttrToken = 0;             /* v3 */static ErlDrvTermData mfs_ContextAuditToken = 0;static ErlDrvTermData mfs_ContextListToken = 0;             /* v3 */static ErlDrvTermData mfs_CtxToken = 0;static ErlDrvTermData mfs_DelayToken = 0;static ErlDrvTermData mfs_DeleteToken = 0;static ErlDrvTermData mfs_DigitMapDescriptor = 0;static ErlDrvTermData mfs_DigitMapDescriptorToken = 0;static ErlDrvTermData mfs_DigitMapToken = 0;static ErlDrvTermData mfs_DigitMapValue = 0;static ErlDrvTermData mfs_DirectionToken = 0;               /* v3 */static ErlDrvTermData mfs_DiscardToken = 0;static ErlDrvTermData mfs_DisconnectedToken = 0;static ErlDrvTermData mfs_DurationToken = 0;static ErlDrvTermData mfs_EQUAL = 0;static ErlDrvTermData mfs_EmbedToken = 0;static ErlDrvTermData mfs_EmergencyToken = 0;static ErlDrvTermData mfs_EmergencyOffToken = 0;            /* v3 */static ErlDrvTermData mfs_EmergencyValueToken = 0;          /* v3 */static ErlDrvTermData mfs_ErrorToken = 0;static ErlDrvTermData mfs_EventBufferToken = 0;static ErlDrvTermData mfs_EventsToken = 0;static ErlDrvTermData mfs_ExternalToken = 0;                /* v3 */static ErlDrvTermData mfs_FailoverToken = 0;static ErlDrvTermData mfs_ForcedToken = 0;static ErlDrvTermData mfs_GREATER = 0;static ErlDrvTermData mfs_GracefulToken = 0;static ErlDrvTermData mfs_H221Token = 0;static ErlDrvTermData mfs_H223Token = 0;static ErlDrvTermData mfs_H226Token = 0;static ErlDrvTermData mfs_HandOffToken = 0;static ErlDrvTermData mfs_IEPSToken = 0;                    /* v3 */static ErlDrvTermData mfs_IllegalChar = 0;static ErlDrvTermData mfs_ImmAckRequiredToken = 0;static ErlDrvTermData mfs_InactiveToken = 0;static ErlDrvTermData mfs_InSvcToken = 0;static ErlDrvTermData mfs_IntsigDelayToken = 0;             /* v3 */static ErlDrvTermData mfs_InternalToken = 0;                /* v3 */static ErlDrvTermData mfs_InterruptByEventToken = 0;static ErlDrvTermData mfs_InterruptByNewSignalsDescrToken = 0;static ErlDrvTermData mfs_IsolateToken = 0;static ErlDrvTermData mfs_IterationToken = 0;               /* v3 */static ErlDrvTermData mfs_KeepActiveToken = 0;static ErlDrvTermData mfs_LBRKT = 0;static ErlDrvTermData mfs_LESSER = 0;static ErlDrvTermData mfs_LSBRKT = 0;static ErlDrvTermData mfs_LocalControlToken = 0;static ErlDrvTermData mfs_LocalDescriptorToken = 0;static ErlDrvTermData mfs_LocalToken = 0;static ErlDrvTermData mfs_LockStepToken = 0;static ErlDrvTermData mfs_LoopbackToken = 0;static ErlDrvTermData mfs_MediaToken = 0;static ErlDrvTermData mfs_MegacopToken = 0;static ErlDrvTermData mfs_MethodToken = 0;/* static ErlDrvTermData mfs_MessageSegmentToken = 0; */static ErlDrvTermData mfs_MgcIdToken = 0;static ErlDrvTermData mfs_ModeToken = 0;static ErlDrvTermData mfs_ModemToken = 0;static ErlDrvTermData mfs_ModifyToken = 0;static ErlDrvTermData mfs_MoveToken = 0;static ErlDrvTermData mfs_MtpAddressToken = 0;static ErlDrvTermData mfs_MuxToken = 0;static ErlDrvTermData mfs_NEQUAL = 0;static ErlDrvTermData mfs_NeverNotifyToken = 0;             /* v3 */static ErlDrvTermData mfs_NotifyCompletionToken = 0;static ErlDrvTermData mfs_NotifyImmediateToken = 0;         /* v3 */static ErlDrvTermData mfs_NotifyRegulatedToken = 0;         /* v3 */static ErlDrvTermData mfs_NotifyToken = 0;static ErlDrvTermData mfs_Nx64kToken = 0;static ErlDrvTermData mfs_ObservedEventsToken = 0;static ErlDrvTermData mfs_OffToken = 0;static ErlDrvTermData mfs_OnOffToken = 0;static ErlDrvTermData mfs_OnToken = 0;static ErlDrvTermData mfs_OnewayToken = 0;static ErlDrvTermData mfs_OnewayBothToken = 0;              /* v3 */static ErlDrvTermData mfs_OnewayExternalToken = 0;          /* v3 */static ErlDrvTermData mfs_OrAUDITselectToken = 0;           /* v3 */static ErlDrvTermData mfs_OtherReasonToken = 0;static ErlDrvTermData mfs_OutOfSvcToken = 0;static ErlDrvTermData mfs_PackagesToken = 0;static ErlDrvTermData mfs_PendingToken = 0;static ErlDrvTermData mfs_PriorityToken = 0;static ErlDrvTermData mfs_ProfileToken = 0;static ErlDrvTermData mfs_QuotedChars = 0;static ErlDrvTermData mfs_RBRKT = 0;static ErlDrvTermData mfs_RSBRKT = 0;static ErlDrvTermData mfs_ReasonToken = 0;static ErlDrvTermData mfs_RecvonlyToken = 0;static ErlDrvTermData mfs_RemoteDescriptorToken = 0;static ErlDrvTermData mfs_RemoteToken = 0;static ErlDrvTermData mfs_RequestIDToken = 0;               /* v3 */static ErlDrvTermData mfs_ReplyToken = 0;static ErlDrvTermData mfs_ReservedGroupToken = 0;static ErlDrvTermData mfs_ReservedValueToken = 0;static ErlDrvTermData mfs_ResetEventsDescriptorToken = 0;   /* v3 */static ErlDrvTermData mfs_ResponseAckToken = 0;static ErlDrvTermData mfs_RestartToken = 0;static ErlDrvTermData mfs_SEP = 0;static ErlDrvTermData mfs_SafeChars = 0;/* static ErlDrvTermData mfs_SegmentationCOmpleteToken = 0;  */  /* v3 */static ErlDrvTermData mfs_SendonlyToken = 0;static ErlDrvTermData mfs_SendrecvToken = 0;static ErlDrvTermData mfs_ServiceChangeAddressToken = 0;static ErlDrvTermData mfs_ServiceChangeIncompleteToken = 0; /* v3 */static ErlDrvTermData mfs_ServiceChangeToken = 0;static ErlDrvTermData mfs_ServiceStatesToken = 0;static ErlDrvTermData mfs_ServicesToken = 0;static ErlDrvTermData mfs_SignalListToken = 0;static ErlDrvTermData mfs_SignalTypeToken = 0;static ErlDrvTermData mfs_SignalsToken = 0;static ErlDrvTermData mfs_StatsToken = 0;static ErlDrvTermData mfs_StreamToken = 0;static ErlDrvTermData mfs_SubtractToken = 0;static ErlDrvTermData mfs_SynchISDNToken = 0;static ErlDrvTermData mfs_TerminationStateToken = 0;static ErlDrvTermData mfs_TestToken = 0;static ErlDrvTermData mfs_TimeOutToken = 0;static ErlDrvTermData mfs_TimeStampToken = 0; /* OTP-5042 */static ErlDrvTermData mfs_TopologyToken = 0;static ErlDrvTermData mfs_TransToken = 0;static ErlDrvTermData mfs_V18Token = 0;static ErlDrvTermData mfs_V22Token = 0;static ErlDrvTermData mfs_V22bisToken = 0;static ErlDrvTermData mfs_V32Token = 0;static ErlDrvTermData mfs_V32bisToken = 0;static ErlDrvTermData mfs_V34Token = 0;static ErlDrvTermData mfs_V76Token = 0;static ErlDrvTermData mfs_V90Token = 0;static ErlDrvTermData mfs_V91Token = 0;static ErlDrvTermData mfs_VersionToken = 0;static ErlDrvTermData mfs_asn1_NOVALUE = 0;static ErlDrvTermData mfs_endOfMessage = 0;/* MEGACO_DUMMY_DECL_YY_LINENO * Note that this construction is intended to make it * possible to generate flex files that either reports * line-number or one that don't. * See MEGACO_YY_LINENO_OPTION above and *     MEGACO_LINENO_OR_TOKENCOUNTER below. */%MEGACO_DUMMY_DECL_YY_LINENO%static ErlDrvPort      mfs_port                = 0;static char* 	       mfs_digit_map_name_ptr  = 0;static int 	       mfs_digit_map_name_len  = 0;static char* 	       mfs_digit_map_value_ptr = 0;static int 	       mfs_digit_map_value_len = 0;static char* 	       mfs_digit_map_start_ptr = 0;static char* 	       mfs_digit_map_short_ptr = 0;static char* 	       mfs_digit_map_long_ptr  = 0;static char* 	       mfs_digit_map_duration_ptr = 0;static int 	       mfs_error               = FALSE;static char 	       mfs_error_msg[256];static char* 	       mfs_text_buf            = 0;static char* 	       mfs_text_ptr            = 0;static ErlDrvTermData* mfs_term_spec           = 0;static int   	       mfs_term_spec_size      = 0;static int   	       mfs_term_spec_index     = 0;static int   	       mfs_token_counter       = 0;static void mfs_alloc_failed(char* msg, int sz);static void mfs_fatal_error(char* msg); static void mfs_short_load_token(ErlDrvTermData token_tag);static void mfs_lower_load_token(ErlDrvTermData token_tag);static void mfs_octet_load_token(ErlDrvTermData token_tag, int is_empty);static void mfs_load_map_name();static void mfs_load_map_value();static void mfs_load_map_timer();static void mfs_load_map_token();static void mfs_ensure_term_spec(int size);static ErlDrvData mfs_start(ErlDrvPort port, char *buf);static void 	  mfs_stop(ErlDrvData handle);static void 	  mfs_command(ErlDrvData handle,                                               char *buf, int buf_len);static int 	  mfs_control(ErlDrvData handle,                                               unsigned int command,                        	             char *buf, int buf_len,       			                     char **res_buf, int res_buf_len);static void 	  mfs_finish(void);/*  * The driver entry  */static ErlDrvEntry mfs_entry = {    NULL,              /* init, always NULL for dynamic drivers */    mfs_start,         /* start, called when port is opened */    mfs_stop,          /* stop, called when port is closed */    mfs_command,       /* output, called when erlang has sent */    NULL,              /* ready_input, called when input descriptor ready */    NULL,              /* ready_output, called when output descriptor ready */    MEGACO_DRV_NAME,   /* char *driver_name, the arg to open_port */    mfs_finish,        /* finish, called when unloaded */    NULL,              /* void * that is not used (BC) */    mfs_control,       /* control, port_control callback */    NULL,              /* timeout, called on timeouts */    NULL               /* outputv, vector output interface */};    #define LOAD_TOKEN(TokenTag) mfs_lower_load_token(TokenTag)#define LOAD_SHORT_TOKEN(TokenTag) mfs_short_load_token(TokenTag)#define LOAD_OCTET_TOKEN(TokenTag) mfs_octet_load_token(TokenTag, 0)#define LOAD_EMPTY_OCTET_TOKEN(TokenTag) mfs_octet_load_token(TokenTag, 1)/* OTP-4236 */#define ASSIGN_TERM_SPEC(what)                     \{                                                  \   if (mfs_term_spec != NULL)                      \     mfs_term_spec[mfs_term_spec_index++] = what;  \}%}%x SKIP_RBRKT MTP_HEXDIG LOCAL_OCTETS REMOTE_OCTETS %x MAP_NAME MAP_OPT_LBRKT MAP_VALUE MAP_SKIP_COMMA MAP_BODY%x QUOTED_CHARS SKIP_DQUOTEdigit       ([0-9])alpha       ([a-zA-Z])hexdig      ([0-9a-fA-F])sp          (\x20)htab        (\x09)cr          (\x0D)lf          (\x0A)slash       (\/)dquote      (\")colon       (\:)dot         (\.)wsp         ({sp}|{htab})eol         ({cr}|({cr}{lf})|{lf})safechar    ({digit}|{alpha}|[\+\-\&\!\_\/\'\?\@\^\`\~\*\$\\\(\)\%\|\.])restchar    ([\;\[\]\{\}\:\,\#\<\>\=])octet       ((\\\})|[\x01-\x7C\x7E-\xFF])            comment     (\;({safechar}|{restchar}|{wsp}|\x22)*{eol})lwsp        ({wsp}|{comment}|{eol})*            equal       ({lwsp}\={lwsp})nequal      ({lwsp}\#{lwsp})lesser      ({lwsp}\<{lwsp})greater     ({lwsp}\>{lwsp})lbrkt       ({lwsp}\{{lwsp})rbrkt       ({lwsp}\}{lwsp})lsbrkt      ({lwsp}\[{lwsp})rsbrkt      ({lwsp}\]{lwsp})lpar        ({lwsp}\({lwsp})rpar        ({lwsp}\){lwsp})vbar        ({lwsp}\|{lwsp})comma       ({lwsp}\,{lwsp})sep         (({wsp}|{eol}|{comment}){lwsp})+opt         ((o\-)?)wild        ((w\-)?)%%<SKIP_RBRKT>{rbrkt}                     BEGIN(INITIAL);                           {digit}{8,8}t{digit}{8,8}               LOAD_TOKEN(mfs_TimeStampToken); /* OTP-5042 */                                        (MTP){lbrkt}                            BEGIN(MTP_HEXDIG);<MTP_HEXDIG>{hexdig}{4,8}               {LOAD_TOKEN(mfs_MtpAddressToken); BEGIN(SKIP_RBRKT);}                                        ((Local)|L){lbrkt}                      BEGIN(LOCAL_OCTETS);<LOCAL_OCTETS>{rbrkt}                   {LOAD_EMPTY_OCTET_TOKEN(mfs_LocalDescriptorToken); BEGIN(INITIAL);}<LOCAL_OCTETS>{octet}+                  {LOAD_OCTET_TOKEN(mfs_LocalDescriptorToken); BEGIN(SKIP_RBRKT);}                          ((Remote)|R){lbrkt}                     BEGIN(REMOTE_OCTETS);<REMOTE_OCTETS>{rbrkt}                  {LOAD_EMPTY_OCTET_TOKEN(mfs_RemoteDescriptorToken); BEGIN(INITIAL);}

⌨️ 快捷键说明

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