Ethereal-dev: [Ethereal-dev] Re: [Ethereal-cvs] rev 17057: /trunk/plugins/lua/: Makefile.am pa
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: LEGO <luis.ontanon@xxxxxxxxx>
Date: Fri, 20 Jan 2006 01:33:15 +0100
Hi List, For the last few days I've been working in embedding Lua (a programming language) into ethereal. Info about Lua can be found in http://www.lua.org . I choose Lua because I found it preety easy to embed (so far less than 2K lines of straightforrward C). Because it implements references to functions (Callbacks) which are very essential to ethereal's model. And mainly because embeding it took me a fraction of the time it has taken me just to begin the fruitless developement of an ethereal specific language, and last but not leaast because it is already documented. So far I've implemented the minimum needed to write a dissector in Lua. attached you'll find one. The .lua file (only one so far) can be ~/.ethereal/init.lua or any file as far as you pass the full pathname via environment variable ETHEREAL_LUA_INIT. To get it to work you need to download lua-5.0.2.tar.gz into the plugin/lua directory, uncompress it, cd to it and call make (at least on my mac). Ah, you need to modify the makefiles too. The "classes" for Lua I've created so far are: ValueString -- a class to manage value_strings :new() -- create a new empty Valuetring :add(val,str) -- add a value-string pair to a ValueString :match(val) -- a wrapper arroud val_to_str() Field -- a class that represents registration info of fields. :new(name,fieldname,...) declare a field (both the hfid and the registration info) FieldArray -- a class that represents the field_array of a protocol. :new() -- creates an empty field array to start with :add(field) -- adds a field to the array Ett -- a class to represent an ett :new() -- create an ett EttArray -- a class that represents the ett array for a protocol :new() -- creates an empty array :add(ett) -- adds an Ett to it :register() -- registers the ett array with ethereal Proto -- a class that represents protocol info in ethereal :new(name,filter_name,descr) -- creates and registers a new protocol :register_field_array(field_array) -- registers a field array as this protocol's fa :add_uint_pref(abbr,...) -- adds an uint preference to this protocol :add_bool_pref(abbr,...) -- adds a string preference to this protocol :add_string_pref(abbr,...) -- adds an bool preference to this protocol :get_pref(abbr) -- fetches the value of a preference DissectorTable -- a class to intreface to dissector tables :new(name,ui_name,type,opt_base) -- create a dissector table for others to register :get(name) -- obtain a reference to another's dissector table :add(pattern,proto) -- add a protocol to a table (*) :try(pattern,tvb,pinfo,tree) -- try to invoke a dissector through a table Dissector -- a class that represent another dissector :get(name) -- wraps find_dissector :call(tvb,pinfo,tree) -- calls a dissector Tvb -- a class that represents a tvb :new(tvb,opt_offset,opt_len) -- creates a subset tvb :get_* -- wrappers to tvb_get_* functions Pinfo -- a class that represents a packet_info structure :number -- the frame number :len -- the frame len :caplen -- the frame capture len :abs_ts -- absolute timestamp a floating number (s + ns/10^9) :rel_ts -- relative timestamp :delta_ts -- delta :visited -- pinfo->fd->flags.visited :src_address -- so far a string representing the address :dst_address -- we need an adress class! :dl_src :dl_dst :net_src :net_dst :ipproto :circuit_id :ptype :match_port :match_string :curr_proto :col -- colifo = pinfo:col(COL_INFO) Column -- a class that represents a column :clear :set :append :prepend Tree -- a class that represents a proto_tree :add_item -- overeloaded to accept many types of items, stil incomplete :add_item_le -- same thing but little_endian :get_parent -- yields the parent Item Item -- a class that represents a proto_item :add_subtree :set_text :append_text :set_len :set_expert_flags :set_generated :set_hidden On 1/20/06, lego@xxxxxxxxxxxx <lego@xxxxxxxxxxxx> wrote: > User: lego > Date: 2006/01/19 06:06 PM > > Log: > Starts to work so I check it in. > > This is an interface to the Lua programming language. > > http://www.lua.org > > I've already wrote a simple dissector that calls another dissectors. > > soon It will be able to register a tap and do something more. > > I did not checkin changes to the Makefiles so in order to use it you must change the makefiles. > > Other than that to get it to work you need to download lua-5.0.2.tar.gz into the plugin directory, uncompress it, cd to it and call make. > > the interface is buggy and far from finished, time will help on this. > > Directory: /trunk/plugins/lua/ > Changes Path Action > +58 -0 Makefile.am Added > +1977 -0 packet-lua.c Added > +45 -0 plugin.c Added > > > > http://anonsvn.ethereal.com/viewcvs/viewcvs.py?rev=17057&view=rev > > _______________________________________________ > Ethereal-cvs mailing list > Ethereal-cvs@xxxxxxxxxxxx > http://www.ethereal.com/mailman/listinfo/ethereal-cvs > -- This information is top security. When you have read it, destroy yourself. -- Marshall McLuhan
Attachment:
packet-cellog.lua
Description: Binary data
- Follow-Ups:
- Prev by Date: Re: [Ethereal-dev] SSL decryption
- Next by Date: [Ethereal-dev] Buildbot crash output
- Previous by thread: [Ethereal-dev] Anyone knows if 802.11k is decoded by Ethereal?
- Next by thread: Re: [Ethereal-dev] Re: [Ethereal-cvs] rev 17057: /trunk/plugins/lua/: Makefile.am packet-lua.c plugin.c
- Index(es):