UNIX网络编程---路由套接字(十八)
2013-09-19 08:55
183 查看
UNIX网络编程---路由套接字
一、概述
通过创建AF_ROUTE域对访问内核中路由子系统的接口做了清理。在路由域中支持的唯一一种套接字是原始套接字。路由套接字上支持3种类型的操作
1) 进程可以通过写到路由套接字而往内核发送消息。路径的添加和删除采用这种操作实现
2) 进程可以通过从路由套接字读入而自内核接受消息。内核采用这种操作通知进程已收到并处理一个ICMP重定向消息,或者请求外部路由进程解析一个路径
3) 进程可以使用sysctl函数倾泻出路由表或列出所有已配置的接口
二、数据链路套接字地址结构
通过路由套接字返回的一些信息中含有作为返回值给出的数据链路套接字地址结构。
Sdl_data成员含有名字和链路层地址(例如以太网接口的48位MAC地址)。名字从sdl_data[0]开始,而且不以空字符结尾。链路层地址从sdl_data[dsl_nlen]开始。
三、读和写
创建一个路由套接字后,进程可以通过写到该套接字向内核发送命令。通过读自该套接字从内核接受消息。路由套接字共有12个路由消息,其中5个可以由进程发出。
四、Sysctl操作
使用sysctl函数检查路由表和接口列表。创建路由套接字(一个AF_ROUTE域的原始套接字)需要超级用户权限,然而使用sysclt检查路由表和接口列表的进程却不限用户权限
#include <sys/param.h>
#include <sys/sysclt.h>
Int sysctl(int *name,u_int namelen,void *dldp,size_t*oldenp,void (newp,size_t newlen);
Name参数是指定名字的一个整数数组,namelen参数指定该数组中的元素个数。该数组总的第一个元素指定本请求定向到内核的哪个子系统。第二个及其后元素主次细化指定该子系统的某个部分。为了获取某个值,oldp参数指向一个供内核窜访该值的缓冲区。Oldenp则是一个值-结果参数;函数被调用时,oleenp指向的值指定该缓冲区的大小:函数返回时,该值给出内核存放在该缓冲区的数据量。
为了设置新值,newp参数指向一个大小为newlen参数值的缓冲区。如果不准备指定一个新值,那么newp应为一个空指针,newlen应为0.
五、Get_ini_info函数
六、接口名字和索引函数
一、概述
通过创建AF_ROUTE域对访问内核中路由子系统的接口做了清理。在路由域中支持的唯一一种套接字是原始套接字。路由套接字上支持3种类型的操作
1) 进程可以通过写到路由套接字而往内核发送消息。路径的添加和删除采用这种操作实现
2) 进程可以通过从路由套接字读入而自内核接受消息。内核采用这种操作通知进程已收到并处理一个ICMP重定向消息,或者请求外部路由进程解析一个路径
3) 进程可以使用sysctl函数倾泻出路由表或列出所有已配置的接口
二、数据链路套接字地址结构
通过路由套接字返回的一些信息中含有作为返回值给出的数据链路套接字地址结构。
Sdl_data成员含有名字和链路层地址(例如以太网接口的48位MAC地址)。名字从sdl_data[0]开始,而且不以空字符结尾。链路层地址从sdl_data[dsl_nlen]开始。
三、读和写
创建一个路由套接字后,进程可以通过写到该套接字向内核发送命令。通过读自该套接字从内核接受消息。路由套接字共有12个路由消息,其中5个可以由进程发出。
四、Sysctl操作
使用sysctl函数检查路由表和接口列表。创建路由套接字(一个AF_ROUTE域的原始套接字)需要超级用户权限,然而使用sysclt检查路由表和接口列表的进程却不限用户权限
#include <sys/param.h>
#include <sys/sysclt.h>
Int sysctl(int *name,u_int namelen,void *dldp,size_t*oldenp,void (newp,size_t newlen);
Name参数是指定名字的一个整数数组,namelen参数指定该数组中的元素个数。该数组总的第一个元素指定本请求定向到内核的哪个子系统。第二个及其后元素主次细化指定该子系统的某个部分。为了获取某个值,oldp参数指向一个供内核窜访该值的缓冲区。Oldenp则是一个值-结果参数;函数被调用时,oleenp指向的值指定该缓冲区的大小:函数返回时,该值给出内核存放在该缓冲区的数据量。
为了设置新值,newp参数指向一个大小为newlen参数值的缓冲区。如果不准备指定一个新值,那么newp应为一个空指针,newlen应为0.
五、Get_ini_info函数
六、接口名字和索引函数
相关文章推荐
- 《Unix网络编程》卷1:套接字联网API(第3版):非阻塞I/O、ioctl操作、路由套接字
- Unix网络编程代码 第7章 套接字选项
- 【unix网络编程第三版】阅读笔记(三):基本套接字编程
- UNIX网络编程——基本SCTP套接字编程
- UNIX网络编程笔记 第三章 套接字编程简介
- UNIX网络编程第3章套接字编程简介3.2套接字地址结构3.3值结果参数3.4字节排序函数
- 《unix网络编程》(18)基本UDP套接字 简单客户服务器回射程序及改进
- UNIX网络编程——套接字选项(setsockopt)
- UNIX网络编程——设置套接字超时
- UNP-UNIX网络编程 第三章:套接字编程简介
- UNIX网络编程——UNIX域套接字编程和socketpair 函数
- UNIX网络编程——原始套接字的魔力【上】
- Unix网络编程学习笔记【1】套接字地址结构
- UNIX网络编程之套接字学习小结
- Unix网络编程(一)-套接字地址结构
- Unix网络编程 卷1 第8章:基本UDP套接字编程(UDP回射客户/服务器程序: main/dg_echo/dg_cli)
- Unix网络编程 卷1 第3章:套接字编程简介(套接字地址结构)
- Unix网络编程学习笔记之第7章 套接字选项
- UNIX网络编程——套接字选项(SOL_SOCKET级别)
- UNIX网络编程——使用select 实现套接字I/O超时