- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 PAGE 9 页 共 3 页
揭开unix网络之纱8- ioctl获得网络接口
概述
需处理网络接口的许多程序沿用的初始步骤之一就是从内核获取配置在系统中的所有接口。本任务由SIOCGIFCONF请求完成,它使用ifconf结构,ifconf又使用ifreq结构。
Ifconfig结构
net/if.h
struct ifconf{
int ifc_len;
union{
caddr_t ifcu_buf;
struct ifreq* ifcu_req;
}ifc_ifcu;
};
#define ifc_buf ifc_ifcu.ifcu_buf
#define ifc_req ifc_ifcu.ifcu_req
#define IFNAMSIZ 16
Struct ifreq{
Char ifr_name[IFNAMSIZ];
Union{
Struct sockaddr ifru_addr;
Struct sockaddr ifru_dstaddr;
Struct sockaddr ifru_broadaddr;
Short ifru_flags;
Int ifru_metric;
Caddr_t ifru_data;
}ifr_ifru;
};
#define ifr_addr ifr_ifru.ifru_addr
#define ifr_dstaddr ifr_ifru.ifru_dstaddr
#define ifr_broadaddr ifr_ifru.ifru_broadaddr
#define ifr_flags ifr_ifru.ifru_flags
#define ifr_metric ifr_ifru.ifru_metric
#define ifr_data ifr_ifru.ifru_data
Unp_ifi.h
#ifndef __UNP_IFI_H
#define __UNP_IFI_H
#include net/if.h
#define IFI_NAME 16 /*same as IFNAMSIZ in net/if.*/
#define IFI_HADDR 8 /*allow for 64-bit EUI-64 in future*/
struct ifi_info{
char ifi_name[IFI_NAME]; /*interface name,null-terminated*/
short ifi_index; /*interface index*/
short ifi_mtu; /*interface MTU*/
u_char ifi_haddr[IFI_HADDR]; /*hardware address*/
u_short ifi_hlen; /*#bytes in hardware address: 0,6,8*/
short ifi_flags; /*IFF_XXX constants from net/if.h*/
short ifi_myflags; /*our own IFI_XXX flags*/
struct sockaddr *ifi_addr; /*primary address*/
struct sockaddr *ifi_brdaddr; /*broadcast address*/
struct sockaddr *ifi_dstaddr; /*destination address*/
struct ifi_info *ifi_next; /*next of these structures*/
};
#define IFI_ALIAS 1 /*ifi_addr is an alias*/
/*function prototypes*/
struct ifi_info *get_ifi_info(int,int);
void free_ifi_info(struct ifi_info *);
#endif
get_ifi_info
#include unistd.h
#include sys/socket.h
#include sys/types.h
#include errno.h
#include netinet/in.h
#include sys/ioctl.h
#include
文档评论(0)