github.com/cilium/cilium@v1.16.2/pkg/datapath/linux/modules/modules_linux_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package modules 5 6 import ( 7 "bytes" 8 "reflect" 9 "testing" 10 ) 11 12 const ( 13 loadedModulesContent = `ebtable_nat 16384 1 - Live 0x0000000000000000 14 ebtable_broute 16384 1 - Live 0x0000000000000000 15 bridge 172032 1 ebtable_broute, Live 0x0000000000000000 16 ip6table_nat 16384 1 - Live 0x0000000000000000 17 nf_nat_ipv6 16384 1 ip6table_nat, Live 0x0000000000000000 18 ip6table_mangle 16384 1 - Live 0x0000000000000000 19 ip6table_raw 16384 1 - Live 0x0000000000000000 20 ip6table_security 16384 1 - Live 0x0000000000000000 21 iptable_nat 16384 1 - Live 0x0000000000000000 22 nf_nat_ipv4 16384 1 iptable_nat, Live 0x0000000000000000 23 iptable_mangle 16384 1 - Live 0x0000000000000000 24 iptable_raw 16384 1 - Live 0x0000000000000000 25 iptable_security 16384 1 - Live 0x0000000000000000 26 ebtable_filter 16384 1 - Live 0x0000000000000000 27 ebtables 36864 3 ebtable_nat,ebtable_broute,ebtable_filter, Live 0x0000000000000000 28 ip6table_filter 16384 1 - Live 0x0000000000000000 29 ip6_tables 28672 5 ip6table_nat,ip6table_mangle,ip6table_raw,ip6table_security,ip6table_filter, Live 0x0000000000000000 30 iptable_filter 16384 1 - Live 0x0000000000000000 31 ip_tables 28672 5 iptable_nat,iptable_mangle,iptable_raw,iptable_security,iptable_filter, Live 0x0000000000000000 32 x_tables 40960 23 xt_multiport,xt_nat,xt_addrtype,xt_mark,xt_comment,xt_CHECKSUM,ipt_MASQUERADE,xt_tcpudp,ip6t_rpfilter,ip6t_REJECT,ipt_REJECT,xt_conntrack,ip6table_mangle,ip6table_raw,ip6table_security,iptable_mangle,iptable_raw,iptable_security,ebtables,ip6table_filter,ip6_tables,iptable_filter,ip_tables, Live 0x0000000000000000` 33 34 builtinModulesContent = `kernel/net/bridge/netfilter/ebtable_nat.ko 35 kernel/net/bridge/netfilter/ebtable_broute.ko 36 kernel/net/bridge/bridge.ko 37 kernel/net/ipv6/netfilter/ip6table_nat.ko 38 kernel/net/ipv6/netfilter/nf_nat_ipv6.ko 39 kernel/net/ipv6/netfilter/ip6table_mangle.ko 40 kernel/net/ipv6/netfilter/ip6table_raw.ko 41 kernel/net/ipv6/netfilter/ip6table_security.ko 42 kernel/net/ipv4/netfilter/iptable_nat.ko 43 kernel/net/ipv4/netfilter/nf_nat_ipv4.ko 44 kernel/net/ipv4/netfilter/iptable_mangle.ko 45 kernel/net/ipv4/netfilter/iptable_raw.ko 46 kernel/net/ipv4/netfilter/iptable_security.ko 47 kernel/net/bridge/netfilter/ebtable_filter.ko 48 kernel/net/bridge/netfilter/ebtables.ko 49 kernel/net/ipv6/netfilter/ip6table_filter.ko 50 kernel/net/ipv6/netfilter/ip6_tables.ko 51 kernel/net/ipv4/netfilter/iptable_filter.ko 52 kernel/net/ipv4/netfilter/ip_tables.ko 53 kernel/net/netfilter/x_tables.ko` 54 ) 55 56 func TestParseLoadedModuleFile(t *testing.T) { 57 expectedModules := []string{ 58 "ebtable_nat", 59 "ebtable_broute", 60 "bridge", 61 "ip6table_nat", 62 "nf_nat_ipv6", 63 "ip6table_mangle", 64 "ip6table_raw", 65 "ip6table_security", 66 "iptable_nat", 67 "nf_nat_ipv4", 68 "iptable_mangle", 69 "iptable_raw", 70 "iptable_security", 71 "ebtable_filter", 72 "ebtables", 73 "ip6table_filter", 74 "ip6_tables", 75 "iptable_filter", 76 "ip_tables", 77 "x_tables", 78 } 79 80 r := bytes.NewBuffer([]byte(loadedModulesContent)) 81 moduleInfos, err := parseLoadedModulesFile(r) 82 if err != nil { 83 t.Fatalf("unexpected error from parseLoadedModulesFile: %s", err) 84 } 85 if !reflect.DeepEqual(moduleInfos, expectedModules) { 86 t.Fatalf("expected modules %v\nfound %v", expectedModules, moduleInfos) 87 } 88 } 89 90 func TestParseBuiltinModuleFile(t *testing.T) { 91 expectedModules := []string{ 92 "ebtable_nat", 93 "ebtable_broute", 94 "bridge", 95 "ip6table_nat", 96 "nf_nat_ipv6", 97 "ip6table_mangle", 98 "ip6table_raw", 99 "ip6table_security", 100 "iptable_nat", 101 "nf_nat_ipv4", 102 "iptable_mangle", 103 "iptable_raw", 104 "iptable_security", 105 "ebtable_filter", 106 "ebtables", 107 "ip6table_filter", 108 "ip6_tables", 109 "iptable_filter", 110 "ip_tables", 111 "x_tables", 112 } 113 114 r := bytes.NewBuffer([]byte(builtinModulesContent)) 115 moduleInfos, err := parseBuiltinModulesFile(r) 116 if err != nil { 117 t.Fatalf("unexpected error from parseBuiltinModulesFile: %s", err) 118 } 119 if !reflect.DeepEqual(moduleInfos, expectedModules) { 120 t.Fatalf("expected modules %v\nfound %v", expectedModules, moduleInfos) 121 } 122 } 123 124 func TestListModules(t *testing.T) { 125 if _, err := listModules(); err != nil { 126 t.Fatalf("unexpected error from listModules: %s", err) 127 } 128 }