@ -56,9 +56,10 @@ class FreeBSDVirtual(Virtual, VirtualSysctlDetectionMixin):
host_tech . update ( sec_jail_jailed [ ' virtualization_tech_host ' ] )
host_tech . update ( sec_jail_jailed [ ' virtualization_tech_host ' ] )
if virtual_facts [ ' virtualization_type ' ] == ' ' :
if virtual_facts [ ' virtualization_type ' ] == ' ' :
sysctl = kern_vm_guest or hw_hv_vendor or sec_jail_jailed
# We call update here, then re-set virtualization_tech_host/guest
# We call update here, then re-set virtualization_tech_host/guest
# later.
# later.
for sysctl in [ kern_vm_guest , hw_hv_vendor , sec_jail_jailed ] :
if sysctl :
virtual_facts . update ( sysctl )
virtual_facts . update ( sysctl )
virtual_vendor_facts = self . detect_virt_vendor ( ' hw.model ' )
virtual_vendor_facts = self . detect_virt_vendor ( ' hw.model ' )
@ -68,6 +69,16 @@ class FreeBSDVirtual(Virtual, VirtualSysctlDetectionMixin):
if virtual_facts [ ' virtualization_type ' ] == ' ' :
if virtual_facts [ ' virtualization_type ' ] == ' ' :
virtual_facts . update ( virtual_vendor_facts )
virtual_facts . update ( virtual_vendor_facts )
# if vmm.ko kernel module is loaded
kldstat_bin = self . module . get_bin_path ( ' kldstat ' )
if kldstat_bin is not None :
( rc , out , err ) = self . module . run_command ( ' %s -q -m vmm ' % kldstat_bin )
if rc == 0 :
host_tech . add ( ' bhyve ' )
virtual_facts [ ' virtualization_type ' ] = ' bhyve '
virtual_facts [ ' virtualization_role ' ] = ' host '
virtual_facts [ ' virtualization_tech_guest ' ] = guest_tech
virtual_facts [ ' virtualization_tech_guest ' ] = guest_tech
virtual_facts [ ' virtualization_tech_host ' ] = host_tech
virtual_facts [ ' virtualization_tech_host ' ] = host_tech
return virtual_facts
return virtual_facts