• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

lua中是ffi解析【是如何处理数据包的/pkt是如何传进去的】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

lua中的ffi是如何解析的呢?

拿bcc中对proto的解析说起;

metatype是有大学问的:

ffi.metatype(ffi.typeof('struct ip_t'), {
    __index = { 
        -- Skip IP header length (stored as number of words)
        -- e.g. hlen = 5, Header Length = 5 x sizeof(u32) = 20 octets
        -- Mask first nibble and shift by 2 (multiplication by 4)
        icmp = function(e, dst) next_offset(e, dst, ffi.typeof('uint8_t'), 0, 0x0f, 2) end,
        udp  = function(e, dst) next_offset(e, dst, ffi.typeof('uint8_t'), 0, 0x0f, 2) end,
        tcp  = function(e, dst) next_offset(e, dst, ffi.typeof('uint8_t'), 0, 0x0f, 2) end,
    }   
})

 其中,ip_t就是

_G(pkg) 这是变量的最后一道屏障,如果在这里访问不到变量,那么lua就要报错了!

lua中的表真是高度抽象的一个概念:

pkg.ip.proto, pkg是全局的包,然后ip是这类变量的回调函数,proto又是ip的局部变量

在函数中metatype('struct net_t') 是一个

pkt是一个全局变量表示数据包,那么这个pkt变量是如何赋值的呢?

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua中只读表和只允许修改表发布时间:2022-07-22
下一篇:
LConfig:利用Lua脚本做程序的配置文件发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap