Module: RbBCC::Table

Defined in:
lib/rbbcc/table.rb

Constant Summary collapse

BPF_MAP_TYPE_HASH =
1
BPF_MAP_TYPE_ARRAY =
2
BPF_MAP_TYPE_PROG_ARRAY =
3
BPF_MAP_TYPE_PERF_EVENT_ARRAY =
4
BPF_MAP_TYPE_PERCPU_HASH =
5
BPF_MAP_TYPE_PERCPU_ARRAY =
6
BPF_MAP_TYPE_STACK_TRACE =
7
BPF_MAP_TYPE_CGROUP_ARRAY =
8
BPF_MAP_TYPE_LRU_HASH =
9
BPF_MAP_TYPE_LRU_PERCPU_HASH =
10
BPF_MAP_TYPE_LPM_TRIE =
11
BPF_MAP_TYPE_ARRAY_OF_MAPS =
12
BPF_MAP_TYPE_HASH_OF_MAPS =
13
BPF_MAP_TYPE_DEVMAP =
14
BPF_MAP_TYPE_SOCKMAP =
15
BPF_MAP_TYPE_CPUMAP =
16
BPF_MAP_TYPE_XSKMAP =
17
BPF_MAP_TYPE_SOCKHASH =
18

Class Method Summary collapse

Class Method Details

.new(bpf, map_id, map_fd, keytype, leaftype, name, **kwargs) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 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