一、在本章中,有两个数据结构是很重要的,一个是in_ifaddr,一个是sockaddr_in,这两个结构是ifaddr和sockaddr对Internet的专有结构,这两对结构的互相的结构所占大小是完全一样的,因此可以用c语言中的强制类型转换进行转换。
二、在第四章二中,讲解了ioctl系统调用在接口层的(数据链路层)的逻辑及代码,在本章中,第129页的图和第四章的图是一样的,但是讲解了跟设置、获取IP地址、掩码和广播地址相关的逻辑及代码。
三、在图6-11中,第四章中的逻辑是从ifioctl函数左分支和中间分支走的
- 1.本章中的逻辑是从ifioctl函数的右分支走的(代码中是switch的default分支)或者从soo_ioctl函数的默认(default)分支走的
- 2.之后通过udp_usrreq函数或者tcp_usrreq函数进入in_control函数
- 3.in_control函数比较大。在函数中,有两个关键的switch语句块,第一个switch负责预处理ioctl系统调用的命令,第二个switch负责做具体的指派地址等操作。在做具体操作的中,指派IP地址的操作直接调用in_ifinit函数来做具体的操作。
- 4.在in_control函数之后,相关的接口有一些专用的东西需要处理,如以太网的硬件地址,环回接口的设置。