tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Lua in-kernel (lbuf library)



Am 16.10.13 16:41, schrieb Lourival Vieira Neto:
> Hi Justin,
> 
> On Tue, Oct 15, 2013 at 7:38 PM, Justin Cormack
> <justin%specialbusservice.com@localhost> wrote:
>> On Thu, Oct 10, 2013 at 7:15 PM, Lourival Vieira Neto
>> <lourival.neto%gmail.com@localhost> wrote:
>>> Hi folks,
>>>
>>> It has been a long time since my GSoC project and though I have tried
>>> to come back, I've experienced some personal issues. However, now I'm
>>> coding again.
>>>
>>> I'm developing a library to handle buffers in Lua, named lbuf. It is
>>> been developed as part of my efforts to perform experimentation in
>>> kernel network stack using Lua. Initially, I intended to bind mbuf to
>>> allow, for example, to write protocols dissectors in Lua. For example,
>>> calling a Lua function to inspect network packets:
>>>
>>> function filter(packet)
>>>   if packet.field == value then return DROP end
>>>   return PASS
>>> end
>>>
>>> Thus, I started to design a Lua binding to mbuf inspired by '#pragma
>>> pack' and bitfields of C lang. Then, I realized that this Lua library
>>> could be useful to other kernel (and user-space) areas, such as device
>>> drivers and user-level protocols. So, I started to develop this
>>> binding generically as a independent library to give random access to
>>> bits in a buffer. It is just in the early beginning, but I want to
>>> share some thoughts.
>>
>> I have been using the luajit ffi and luaffi, which let you directly
>> use C structs (with bitfields) in Lua to do this. It makes it easier
>> to reuse stuff that is already defined in C. (luaffi is not in its
>> current state portable but my plan is to strip out the non portable
>> bits, which are the function call support).
>>
>> Justin
> 
> I never used luaffi. It sounds very interesting and I think it could
> be very useful to bind already defined C structs, but my purpose is to
> dynamically define data layouts using Lua syntax (without parsing C
> code).

FFI in the kernel can be dangerous.  Pure Lua is a perfect confinment
for code, but with an FFI a Lua script can access almost anything in the
kernel.  One has to think twice if one wants that.

Well, assuming it would be module, so I would not have to load it if I
don't want to.





Home | Main Index | Thread Index | Old Index