• 大小: 69KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: 路由器  linux  

资源简介

只支持linux操作系统,内附路由器框架图和说明文档,按照文档操作没多大问题

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include “get_interface.h“

int interface_num=0;//接口数量
INTERFACE net_interface[MAXINTERFACES];//接口数据

/******************************************************************
函 数: int get_interface_num()
功 能: 获取接口数量
参 数: 无
*******************************************************************/
int get_interface_num(){
return interface_num;
}

/******************************************************************
函 数: int getinterface()
功 能: 获取接口信息
参 数: 无
*******************************************************************/
void getinterface(){
struct ifreq buf[MAXINTERFACES];    /* ifreq结构数组 */
struct ifconf ifc;                  /* ifconf结构 */

int sock_raw_fd = socket(PF_PACKET SOCK_RAW htons(ETH_P_ALL));
 /* 初始化ifconf结构 */
    ifc.ifc_len = sizeof(buf);
    ifc.ifc_buf = (caddr_t) buf;
 
    /* 获得接口列表 */
    if (ioctl(sock_raw_fd SIOCGIFCONF (char *) &ifc) == -1){
        perror(“SIOCGIFCONF ioctl“);
        return ;
    }
    interface_num = ifc.ifc_len / sizeof(struct ifreq); /* 接口数量 */
    printf(“interface_num=%d\n\n“ interface_num);
  char buff[20]=““;
int ip;
int if_len = interface_num;
    while (if_len-- > 0){ /* 遍历每个接口 */
        printf(“%s\n“ buf[if_len].ifr_name); /* 接口名称 */
        sprintf(net_interface[if_len].name “%s“ buf[if_len].ifr_name); /* 接口名称 */
printf(“-%d-%s--\n“if_lennet_interface[if_len].name);
        /* 获得接口标志 */
        if (!(ioctl(sock_raw_fd SIOCGIFFLAGS (char *) &buf[if_len]))){
            /* 接口状态 */
            if (buf[if_len].ifr_flags & IFF_UP){
                printf(“UP\n“);
net_interface[if_len].flag = 1;
            }
            else{
                printf(“DOWN\n“);
net_interface[if_len].flag = 0;
            }
        }else{
            char str[256];
            sprintf(str “SIOCGIFFLAGS ioctl %s“ buf[if_len].ifr_name);
            perror(str);
        }
 
        /* IP地址 */
        if (!(ioctl(sock_raw_fd SIOCGIFADDR (char *) &buf[if_len]))){
printf(“IP:%s\n“(char*)inet_ntoa(((struct sockaddr_in*) (&buf[if_len].ifr_addr))->sin_addr));
bzero(buffsizeof(buff));
sprintf(buff “%s“ (char*)inet_ntoa(((struct sockaddr_in*) (&buf[if_len].ifr_addr))->sin_addr));
inet_pton(AF_INET buff &ip);
memcpy(net_interface[if_len].ip &ip 4);
}else{
            char str[256];
            sprintf(str “SIOCGIFADDR ioctl %s“ buf[if_len].ifr_name);
            perror(str);
        }
 
        /* 子网掩码 */
        if (!(ioctl(sock_raw_fd SIOCGIFNETMASK (char *) &buf[if_len]))){
            printf(“netmask:%s\n“(char*)inet_ntoa(((struct sockaddr_in*) (&buf[if_len].ifr_addr))->sin_addr));
bzero(buffsizeof(buff));
sprintf(buff “%s“ (char*)inet

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-01 15:25  简易路由器-demo\
     文件       15872  2018-11-01 15:22  简易路由器-demo\BUG_LIST.wps
     目录           0  2018-11-01 15:22  简易路由器-demo\getinterface\
     文件        4769  2018-11-01 15:22  简易路由器-demo\getinterface\get_interface.c
     文件         876  2018-11-01 15:22  简易路由器-demo\getinterface\get_interface.h
     文件         131  2018-11-01 15:22  简易路由器-demo\getinterface\建议.txt
     目录           0  2018-11-01 15:23  简易路由器-demo\V1.2\
     文件        2207  2018-11-01 15:23  简易路由器-demo\V1.2\arp_link.c
     文件        1556  2018-11-01 15:23  简易路由器-demo\V1.2\arp_link.h
     文件         535  2018-11-01 15:22  简易路由器-demo\V1.2\arp_pthread.c
     文件         324  2018-11-01 15:22  简易路由器-demo\V1.2\arp_pthread.h
     文件        4769  2018-11-01 15:22  简易路由器-demo\V1.2\get_interface.c
     文件         876  2018-11-01 15:22  简易路由器-demo\V1.2\get_interface.h
     文件          26  2018-11-01 15:22  简易路由器-demo\V1.2\ip_config
     文件        4196  2018-11-01 15:22  简易路由器-demo\V1.2\ip_link.c
     文件        2403  2018-11-01 15:22  简易路由器-demo\V1.2\ip_link.h
     文件        5063  2018-11-01 15:22  简易路由器-demo\V1.2\ip_pthread.c
     文件         394  2018-11-01 15:22  简易路由器-demo\V1.2\ip_pthread.h
     文件        4060  2018-11-01 15:22  简易路由器-demo\V1.2\key_pthread.c
     文件         315  2018-11-01 15:22  简易路由器-demo\V1.2\key_pthread.h
     文件        2215  2018-11-01 15:22  简易路由器-demo\V1.2\main.c
     文件         178  2018-11-01 15:22  简易路由器-demo\V1.2\main.h
     文件         291  2018-11-01 15:23  简易路由器-demo\V1.2\Makefile
     文件         305  2018-11-01 15:22  简易路由器-demo\V1.2\说明.txt
     文件       53343  2018-11-01 15:22  简易路由器-demo\流程图.pdf
     目录           0  2018-11-01 15:22  简易路由器-demo\演示\
     文件        4008  2018-11-01 15:22  简易路由器-demo\演示\Linux下配置ip.txt
     文件          32  2018-11-01 15:22  简易路由器-demo\演示\演示.txt

评论

共有 条评论