Clone the source code:
git clone https://libvirt.org/git/libvirt.git
The directory listing inside the repository is something like this.
libvirtd is based on C programming language. It has bindings in different languages – C,C++,C#,Java,PHP, Ruby, and so on.
docs, daemon, and src are the few important directories. It is an well documented project, which is found in http://libvirt.org.
libvirtd starts connection or operates based on driver modes. On initialization, the drivers are registered with libvirtd.
Different types of drivers are a part of libvirtd. Each driver has a registration API, which loads up the driver specific function references for the libvirt APIs to call.
As we see in the above figure there is a Public API exposed to the client. When the client calls the Public API, depending on the connection uri, delegation is done to the specific driver implementation.