module RbBCC::Table

Constants

BPF_MAP_TYPE_ARRAY
BPF_MAP_TYPE_ARRAY_OF_MAPS
BPF_MAP_TYPE_CGROUP_ARRAY
BPF_MAP_TYPE_CPUMAP
BPF_MAP_TYPE_DEVMAP
BPF_MAP_TYPE_HASH
BPF_MAP_TYPE_HASH_OF_MAPS
BPF_MAP_TYPE_LPM_TRIE
BPF_MAP_TYPE_LRU_HASH
BPF_MAP_TYPE_LRU_PERCPU_HASH
BPF_MAP_TYPE_PERCPU_ARRAY
BPF_MAP_TYPE_PERCPU_HASH
BPF_MAP_TYPE_PERF_EVENT_ARRAY
BPF_MAP_TYPE_PROG_ARRAY
BPF_MAP_TYPE_SOCKHASH
BPF_MAP_TYPE_SOCKMAP
BPF_MAP_TYPE_STACK_TRACE
BPF_MAP_TYPE_XSKMAP

Public Class Methods

new(bpf, map_id, map_fd, keytype, leaftype, name, **kwargs) click to toggle source
# File lib/rbbcc/table.rb, line 28
def self.new(bpf, map_id, map_fd, keytype, leaftype, name, **kwargs)
  ttype = Clib.bpf_table_type_id(bpf.module, map_id)
  case ttype
  when BPF_MAP_TYPE_HASH
    HashTable.new(bpf, map_id, map_fd, keytype, leaftype)
  when BPF_MAP_TYPE_ARRAY
    ArrayTable.new(bpf, map_id, map_fd, keytype, leaftype)
  when BPF_MAP_TYPE_PERF_EVENT_ARRAY
    PerfEventArray.new(bpf, map_id, map_fd, keytype, leaftype, name: name)
  when BPF_MAP_TYPE_STACK_TRACE
    StackTrace.new(bpf, map_id, map_fd, keytype, leaftype)
  else
    raise "Unknown table type #{ttype}"
  end
end