6.8 Internet实用函数

列出了几个操作Internet地址或依赖于ifnet结构的函数,它们通常用于发现不能单从32 bit IP地址中获得的子网信息。这些函数的实现主要包括数据结构的转换和操作位掩码。读者在netinet/in.c中可以找到这些函数。你是否曾经想过,如何从IP地址中得到更多的子网信息呢?这些函数正是你的答案!

函数说明

  • in_netof 返回in中的网络和子网部分。主机比特被设置为0。对于D类地址,返回D类首标比特和用于多播组的0比特。

```c

u_long in_netof(struct in_addr in);

```

  • in_canforward 如果地址为in的IP分组有资格转发,则返回真。D类和E类地址、环回网络地址和有一个为0网络号的地址不能转发。

```c

int in_canforward(struct in_addr in);

```

  • in_localaddr 如果主机in被定位在一个直接连接的网络,则返回真。如果全局变量subnetsarelocal非0,则所有直接连接的网络的子网也被认为是本地的。

```c

int in_localaddr(struct in_addr in);

```

  • in_broadcast 如果in是一个由ifp指向的接口所关联的广播地址,则返回真。

```c

int in_broadcast(struct in_addr in, struct ifnet *ifp);

```

图6-31 Internet地址函数

Net/2在in_canforward中有一个错误:它允许转发环回地址。因为大多数Net/2系统被配置为只承认一个环回地址,如127.0.1,Net/2系统常沿着默认路由在环回网络中转发其他地址(例如127.0.2)。一个到127.0.2的telnet可能不是你所希望的!(习题6.6)

6.9 ifnet实用函数

几个查找数据结构的函数显示在图6-5中。列于图6-32的函数接受任何协议族类的地址,因为它们的参数是指向一个sockaddr结构的指针,这个结构中包含有地址族类。与图6-31中的函数比较,在那里的每个函数将32 bit的IP地址作为一个参数。这些函数定义在文件net/if.c中。

想要更深入了解IP地址的子网划分?你可以访问IP地址网络子网划分IP地址子网划分IP地址和子网划分来获取更多详细信息。这些资源将为你提供更多实际的例子和工具,帮助你更好地理解和应用这些概念。