diff --git a/lib/facts/solaris/networking/ip6.rb b/lib/facts/solaris/networking/ip6.rb
new file mode 100644
index 0000000000..22bee32ba0
--- /dev/null
+++ b/lib/facts/solaris/networking/ip6.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Facts
+  module Solaris
+    module Networking
+      class Ip6
+        FACT_NAME = 'networking.ip6'
+        ALIASES = 'ipaddress6'
+
+        def call_the_resolver
+          fact_value = Facter::Resolvers::Solaris::Networking.resolve(:ip6)
+
+          [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
+        end
+      end
+    end
+  end
+end
diff --git a/lib/facts/solaris/networking/mac.rb b/lib/facts/solaris/networking/mac.rb
new file mode 100644
index 0000000000..3cf5bd769d
--- /dev/null
+++ b/lib/facts/solaris/networking/mac.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Facts
+  module Solaris
+    module Networking
+      class Mac
+        FACT_NAME = 'networking.mac'
+        ALIASES = 'macaddress'
+
+        def call_the_resolver
+          fact_value = Facter::Resolvers::Solaris::Networking.resolve(:mac)
+
+          [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
+        end
+      end
+    end
+  end
+end
diff --git a/lib/facts/solaris/networking/mtu.rb b/lib/facts/solaris/networking/mtu.rb
new file mode 100644
index 0000000000..95c48300e5
--- /dev/null
+++ b/lib/facts/solaris/networking/mtu.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Facts
+  module Solaris
+    module Networking
+      class Mtu
+        FACT_NAME = 'networking.mtu'
+
+        def call_the_resolver
+          fact_value = Facter::Resolvers::Solaris::Networking.resolve(:mtu)
+
+          Facter::ResolvedFact.new(FACT_NAME, fact_value)
+        end
+      end
+    end
+  end
+end
diff --git a/lib/facts/solaris/networking/netmask.rb b/lib/facts/solaris/networking/netmask.rb
new file mode 100644
index 0000000000..3b7e41381d
--- /dev/null
+++ b/lib/facts/solaris/networking/netmask.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Facts
+  module Solaris
+    module Networking
+      class Netmask
+        FACT_NAME = 'networking.netmask'
+        ALIASES = 'netmask'
+
+        def call_the_resolver
+          fact_value = Facter::Resolvers::Solaris::Networking.resolve(:netmask)
+
+          [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
+        end
+      end
+    end
+  end
+end
diff --git a/lib/facts/solaris/networking/netmask6.rb b/lib/facts/solaris/networking/netmask6.rb
new file mode 100644
index 0000000000..389796890d
--- /dev/null
+++ b/lib/facts/solaris/networking/netmask6.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Facts
+  module Solaris
+    module Networking
+      class Netmask6
+        FACT_NAME = 'networking.netmask6'
+        ALIASES = 'netmask6'
+
+        def call_the_resolver
+          fact_value = Facter::Resolvers::Solaris::Networking.resolve(:netmask6)
+
+          [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
+        end
+      end
+    end
+  end
+end
diff --git a/lib/facts/solaris/networking/network.rb b/lib/facts/solaris/networking/network.rb
new file mode 100644
index 0000000000..ba316c3562
--- /dev/null
+++ b/lib/facts/solaris/networking/network.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Facts
+  module Solaris
+    module Networking
+      class Network
+        FACT_NAME = 'networking.network'
+        ALIASES = 'network'
+
+        def call_the_resolver
+          fact_value = Facter::Resolvers::Solaris::Networking.resolve(:network)
+
+          [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
+        end
+      end
+    end
+  end
+end
diff --git a/lib/facts/solaris/networking/network6.rb b/lib/facts/solaris/networking/network6.rb
new file mode 100644
index 0000000000..508621337f
--- /dev/null
+++ b/lib/facts/solaris/networking/network6.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Facts
+  module Solaris
+    module Networking
+      class Network6
+        FACT_NAME = 'networking.network'
+        ALIASES = 'network'
+
+        def call_the_resolver
+          fact_value = Facter::Resolvers::Solaris::Networking.resolve(:network6)
+
+          [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
+        end
+      end
+    end
+  end
+end
diff --git a/lib/resolvers/solaris/networking_resolver.rb b/lib/resolvers/solaris/networking_resolver.rb
index d9b79a8a44..c7561cf979 100644
--- a/lib/resolvers/solaris/networking_resolver.rb
+++ b/lib/resolvers/solaris/networking_resolver.rb
@@ -12,8 +12,8 @@ class Networking < BaseResolver
         @fact_list ||= {}
 
         BINDINGS_KEY = {
-          FFI::AF_INET => 'bindings',
-          FFI::AF_INET6 => 'bindings6'
+          FFI::AF_INET => :bindings,
+          FFI::AF_INET6 => :bindings6
         }.freeze
 
         class << self
@@ -32,11 +32,14 @@ def read_facts(fact_name)
               add_mac(lifreq)
               add_bindings(lifreq)
               add_mtu(lifreq)
+              add_dhcp(lifreq.name)
             end
 
             @fact_list = { interfaces: @fact_list }
             primary_interface
-            extract_dhcp(@fact_list[:primary_interface])
+
+            ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
+
             @fact_list[fact_name]
           end
 
@@ -135,10 +138,10 @@ def primary_interface
             @fact_list[:primary_interface] = result.match(/interface: (.+)/)&.captures&.first
           end
 
-          def extract_dhcp(interface_name)
+          def add_dhcp(interface_name)
             result = Facter::Core::Execution.execute("dhcpinfo -i #{interface_name} ServerID", logger: log)
 
-            @fact_list[:dhcp] = result.chomp
+            @fact_list[interface_name][:dhcp] = result.chomp
           end
         end
       end
diff --git a/spec/mocks/ffi_mock.rb b/spec/mocks/ffi_mock.rb
index 45610b4f57..7fdf9fd3e5 100644
--- a/spec/mocks/ffi_mock.rb
+++ b/spec/mocks/ffi_mock.rb
@@ -19,11 +19,13 @@ def self.define_errno(arg)
   def self.type_size(arg); end
 
   module Library
+    LIBC = 'libc'.freeze
+
     def ffi_convention(arg); end
 
     def ffi_lib(arg); end
 
-    def attach_function(function, args, return_type); end
+    def attach_function(*); end
 
     def enum(*); end