Data Structures Featured in This Part of the Book
The section "Main IPv4 Data Structures" in Chapter 19 gave a brief overview of the main data structures. This section has a detailed description of each data structure type. Figure 23-3 shows the file that defines each data structure.
iphdr Structure
The meaning of its fields has already been covered in the section "IP Header" in Chapter 18.
ip_options Structure
This structure represents the options for a packet that needs to be transmitted or forwarded. The options are stored in this structure because it is easier to read than the corresponding portion of the IP header itself.

Figure 23-3. Distribution of data structures in kernel files
Let's go field by field. They should be fairly simple to understand if you have read
the section "IP Options" in Chapter 18. After this description, you will be
able to understand more easily how the parsing is done and how its results are used by
the IP layer subsystems, such as the code that processes incoming IP packets. Some of
the bit fields are grouped together into an unsigned char; the declarations of these end
with :1.
-
unsigned char optlen Length of the set of options. As explained in Chapter 18, this is limited to a maximum of 40 bytes by the definition of the IP header.
-
unsigned char is_changed:1 Set if the IP header has been modified (such as an IP address or a timestamp). This is useful to know ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access