zoukankan      html  css  js  c++  java
  • lua中是 ffi 解析 【是如何处理数据包的/pkt是如何传进去的】 fsfsfs

    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变量是如何赋值的呢?

  • 相关阅读:
    第十篇 .NET高级技术之委托
    第九篇 .NET高级技术ref、out
    文华财经函数大全
    为字段创建全文检索索引
    C#.NET中代码注释提示
    WPF中的资源引用心得
    XAML文件动态加载
    spring MVC找不到JS的问题
    Oracle性能监控脚本
    ExtJs之Ext.data.Store
  • 原文地址:https://www.cnblogs.com/honpey/p/8035382.html
Copyright © 2011-2022 走看看