So, guys, once we get ourselves familiar with the basics of netlink socket programming, rest of the
concepts of the netlink, we will going to learn through one unified Netlink project, right?
So in this project, as you can see in the diagram, we will have a userspace application which will
be communicating with the routing table which is present in the kernel space, right?
So we will call this routing table as kernel routing table manager subsystem.
So in this project we shall be discussing the communication between user space application and routing
table kernel subsystem as an example.
Userspace application actions will be to perform Crud operations on this routing table sitting in the
kernel space.
Right.
That is our user space application will issue the order to create an entry to delete an entry or to
update an existing entry in this routing table.
And remember, this routing table is present in the kernel memory.
So on the kernel space side, we will going to write a Linux kernel module which will behave as a routing
table manager residing in the kernel space.
It means that our this Linux kernel module will be in charge of this routing table data structure.
Right.
All Linux kernel module will going to receive and process the orders coming from the application.
Right now, since in this project we have taken routing table as an example representing routing table
manager kernel subsystem.
Same netlink communication semantics applies to other kernel subsystems as well.
It means that once we learn how to set up a netlink based communication between userspace application
and any kernel subsystem, the same rule applies for communication between userspace application to
any other linux kernel subsystem.
Right.
So going forward in this course, we shall explore netlink socket based communication between userspace
and kernel space by developing userspace application which will interact with our Linux kernel module,
which is in charge of our routing subsystem of the kernel.
Once we understand how netlink based communication work using one subsystem as an example.
So what is that one subsystem?
That one subsystem is nothing, but it is the routing table manager which is represented by our Linux
kernel module.
So we can make use of our knowledge to develop userspace application which can interact with any other
kernel subsystems, right?
The principles and the rules of communications are same.
What changes are only the netlink messages that are being exchanged between userspace application and
the kernel subsystem with which the application is interacting.
Along the way, we shall also learn various other techniques of communication, such as TLB based communication
or event based communications.
Right?
So now it's time to write our first Netlink program.