ifconfigWord格式文档下载.docx
- 文档编号:19199302
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:15
- 大小:16.01KB
ifconfigWord格式文档下载.docx
《ifconfigWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《ifconfigWord格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
{
if(argc==1)
{
info_list(0);
return0;
}
if(argc==2)
if(strcmp(argv[1],"
all"
)==0)
info_list
(1);
get_interface_info(argv[1]);
if(argc==3)
if(strcmp(argv[2],"
set"
set_interface(argv[1]);
up"
interface_up(argv[1]);
}
down"
interface_down(argv[1]);
usage();
}
intinfo_list(intall)
{
intlen;
char*ifreq_pointer;
len=10*sizeof(structifreq);
ifreq_pointer=(char*)malloc(len);
structifconfget_info;
get_info.ifc_len=len;
get_info.ifc_ifcu.ifcu_buf=ifreq_pointer;
intsockfd;
sockfd=socket(PF_INET,SOCK_STREAM,0);
ioctl(sockfd,SIOCGIFCONF,&
get_info);
intcount;
count=get_info.ifc_len/sizeof(structifreq);
structsockaddr_in*return_sockaddr;
structifreq*result=(structifreq*)ifreq_pointer;
inti=0;
if(all==1)
for(i;
i<
count;
i++)
printf("
%s/n"
result[i].ifr_name);
get_ipaddr(result[i].ifr_name);
get_mac(result[i].ifr_name);
get_netmask(result[i].ifr_name);
get_broadcast(result[i].ifr_name);
else
structifreqtmp;
ints;
if((s=socket(PF_INET,SOCK_STREAM,0))<
0)
perror("
Socket"
);
exit(-1);
for(i;
strcpy(tmp.ifr_name,result[i].ifr_name);
if(ioctl(s,SIOCGIFFLAGS,&
tmp)<
ioctl"
if((tmp.ifr_ifru.ifru_flags&
IFF_UP)==0)
continue;
tmp.ifr_name);
get_ipaddr(tmp.ifr_name);
get_mac(tmp.ifr_name);
get_netmask(tmp.ifr_name);
get_broadcast(tmp.ifr_name);
exit(0);
intget_ipaddr(char*interface_name)
return-1;
structifreqifr;
strcpy(ifr.ifr_name,interface_name);
if(ioctl(s,SIOCGIFADDR,&
ifr)<
structsockaddr_in*ptr;
ptr=(structsockaddr_in*)&
ifr.ifr_ifru.ifru_addr;
IP:
inet_ntoa(ptr->
sin_addr));
intget_mac(char*interface_name)
if(strcmp(interface_name,"
lo"
if(ioctl(s,SIOCGIFHWADDR,&
ifr)!
=0)
u_char*ptr;
ptr=(u_char*)&
ifr.ifr_ifru.ifru_hwaddr.sa_data[0];
MAC:
%02x-%02x-%02x-%02x-%02x-%02x/n"
*ptr,*(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4),*(ptr+5));
intget_netmask(char*interface_name)
if(ioctl(s,SIOCGIFNETMASK,&
ifr.ifr_ifru.ifru_netmask;
Netmask:
intget_broadcast(char*interface_name)
if(ioctl(s,SIOCGIFBRDADDR,&
ifr.ifr_ifru.ifru_broadaddr;
Broadcast:
intget_interface_info(char*interface_name)
get_ipaddr(interface_name);
get_mac(interface_name);
get_netmask(interface_name);
get_broadcast(interface_name);
intset_interface(char*interface_name)
charip[18];
charmac_addr[20];
charnetmask[18];
charbroadcast[18];
Change"
To:
"
fgets(ip,17,stdin);
if(strcmp(ip,"
/n"
gotoset_mac;
set_ipaddr(interface_name,ip);
set_mac:
fgets(mac_addr,19,stdin);
if(strcmp(mac_addr,"
gotoset_netmask;
set_mac(interface_name,mac_addr);
set_netmask:
fgets(netmask,17,stdin);
if(strcmp(netmask,"
gotoset_broadcast;
set_netmask(interface_name,netmask);
set_broadcast:
fgets(broadcast,17,stdin);
if(strcmp(broadcast,"
set_broadcast(interface_name,broadcast);
intinterface_up(char*interface_name)
shortflag;
flag=IFF_UP;
if(ioctl(s,SIOCGIFFLAGS,&
ifr.ifr_ifru.ifru_flags|=flag;
if(ioctl(s,SIOCSIFFLAGS,&
intinterface_down(char*interface_name)
Youcan'
tpulldowninterfacelo/n"
flag=~IFF_UP;
ifr.ifr_ifru.ifru_flags&
=flag;
intset_ipaddr(char*interface_name,char*ip)
ints;
structsockaddr_inaddr;
bzero(&
addr,sizeof(structsockaddr_in));
addr.sin_family=PF_INET;
inet_aton(ip,&
addr.sin_addr);
memcpy(&
ifr.ifr_ifru.ifru_addr,&
if(ioctl(s,SIOCSIFADDR,&
intset_mac(char*interface_name,char*mac_addr)
sa_family_tget_family;
get_family=ifr.ifr_ifru.ifru_hwaddr.sa_family;
interface_down(interface_name);
ifr,sizeof(structifreq));
ifr.ifr_ifru.ifru_hwaddr.sa_family=get_family;
shorttmp;
inti,j;
j=0;
for(i=0;
i<
17;
i+=3)
if(mac_addr[i]<
58&
&
mac_addr[i]>
47)
tmp=mac_addr[i]-48;
71&
64)
tmp=mac_addr[i]-55;
103&
96)
tmp=mac_addr[i]-87;
tmp=tmp<
<
4;
if(mac_addr[i+1]<
mac_addr[i+1]>
tmp|=(mac_addr[i+1]-48);
tmp|=(mac_addr[i+1]-55);
tmp|=(mac_addr[i+1]-87);
ifr.ifr_ifru.ifru_hwaddr.sa_data[j++],&
tmp,1);
if(ioctl(s,SIOCSIFHWADDR,&
interface_up(interface_name);
intset_netmask(char*interface_name,char*netmask)
structsockaddr_innetmask_addr;
netmask_addr,sizeof(structsockaddr_in));
netmask_addr.sin_family=PF_INET;
inet_aton(netmask,&
netmask_addr.sin_addr);
ifr.ifr_ifru.ifru_netmask,&
if(ioctl(s,SIOCSIFNETMASK,&
return-1;
intset_broadcast(char*interface_name,char*broadcast)
structsockaddr_inbroadcast_addr;
broadcast_addr,sizeof(structsockaddr_in));
broadcast_addr.sin_family=PF_INET;
inet_aton(broadcast,&
broadcast_addr.sin_addr);
ifr.ifr_ifru.ifru_broadaddr,&
if(ioctl(s,SIOCSIFBRDADDR,&
intusage(void)
Usage:
myifconfig[all]|[interface[set|up|down]]/n"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ifconfig
