#include "link.h" void title() { printf("[人机交互线程的全部功能]\n"); printf("2:设置过滤 IP \n"); printf("3:删除过滤 IP \n"); printf("4:查看过滤 IP \n"); printf("5:查看 arp 缓存 \n"); printf("10:退出路由器\n"); } //*************************过滤链表****************************** //尾插 MY_ROU *rou_pTailInsert(MY_ROU *head) { //申请一个待插入的空间 MY_ROU *pi=(MY_ROU*)malloc(sizeof(MY_ROU)); pi->next=NULL; printf("输入过滤ip:"); //向空间中插入数据 scanf("%s",pi->ip); //判断是否有数据 if(head==NULL) { head=pi; } else { //寻找插入的节点 MY_ROU *p1=head; while(p1->next!=NULL) { p1=p1->next; } //插入 p1->next=pi; } printf("设置完成\n"); return head; } //遍历 void rou_print_link(MY_ROU *head) { if(head==NULL) { printf("没有数据\n"); } else { while(head!=NULL) { printf("ip:%s\n",head->ip); head=head->next; } } return; } //释放链表 MY_ROU* rou_freeLink(MY_ROU *head) { MY_ROU *pd; pd=head; while(head!=NULL) { head=pd->next; free(pd); pd=head; } printf("过滤链表释放完毕\n"); return head; } //查找ip int rou_searcharpLink(MY_ROU *head,char *ip) { int i=0; while(head!=NULL) { if(strcmp(ip,head->ip)==0) { i++; //printf("存在相同ip\n"); return 1; } head=head->next; } if(0==i) { //printf("未找到ip\n"); return 0; } } //删除 MY_ROU *rou_pDeleteLink(MY_ROU *head) { char num[16]=""; MY_ROU *pe=head; MY_ROU *pf=head; printf("请输入你要删除的ip:"); scanf("%s",num); if(NULL==head) { printf("无可删除数据\n"); } else { while(strcmp(pe->ip,num)) { pf=pe; pe=pe->next; if(NULL==pf->next) { printf("未找到要删除数据\n"); return head; } } if(pe==head) { head=pe->next; free(pe); } else { pf->next=pe->next; free(pe); } } return head; } //*************************过滤链表****************************** //*************************arp缓存表***************************** //arp缓存表尾插 MY_ARP *arp_pTailInsert(MY_ARP *head,char *mac,char *ip) { //申请一个待插入的空间 MY_ARP *pi=(MY_ARP*)malloc(sizeof(MY_ARP)); pi->next=NULL; //向空间中插入数据 strcpy(pi->ip,ip); strcpy(pi->mac,mac); //判断是否有数据 if(head==NULL) { head=pi; } else { //寻找插入的节点 MY_ARP *p1=head; while(p1->next!=NULL) { p1=p1->next; } //插入 p1->next=pi; } printf("插入一个ip:%s mac:%s 到arp缓存表\n",pi->ip,pi->mac); return head; } //arp中查找ip和mac int arp_searcharpLink(MY_ARP *head,char *ip) { int i=0; while(head!=NULL) { if(strcmp(ip,head->ip)==0) { i++; //printf("存在相同ip和mac\n"); return 1; } head=head->next; } if(0==i) { //printf("未找到ip和mac\n"); return 0; } } //遍历arp缓存表 void arp_print_link(MY_ARP *head) { if(head==NULL) { printf("没有数据\n"); } else { while(head!=NULL) { printf("ip:%s mac:%s\n",head->ip,head->mac); head=head->next; } } return; } //释放arp链表 MY_ARP* arp_freeLink(MY_ARP *head) { MY_ARP *pd; pd=head; while(head!=NULL) { head=pd->next; free(pd); pd=head; } printf("arp链表释放完毕\n"); return head; } //*************************arp缓存表*****************************