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  }