📄 myrip.h
字号:
#ifndef _MYRIP_H#define _MYRIP_H#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <time.h>#include <sys/time.h>#include <sys/types.h>#include <string.h>#include <signal.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/select.h>#include <pthread.h>#include <netdb.h>#define RIP_VERSION 1#define RIP_REQUEST 1#define RIP_RESPONSE 2#define RIP_INFINITY 16#define RIP_MAX_ENTRY 25#define RIP_MAX_PACKET 504#define RIP_PACKET_HEAD 4#define RIP_PORT 520#define ROUTE_MAX_ENTRY 256#define LOCAL_ROUTE_ENTRY 10#define ROUTE_VALID 1#define ROUTE_UNVALID 0#define RIP_CHECK_OK 1#define RIP_CHECK_FAIL 0#define BROADCAST_INTERVAL 10#define CLOCK_TIMEOUT 15#define GARBAGE_REMOVE_TIMEOUT 25struct rip_entry{ unsigned short family; unsigned short zero1; struct in_addr ip; unsigned int zero2; unsigned int zero3; unsigned int metric;};struct rip_packet{ unsigned char command; unsigned char version; unsigned short zero; struct rip_entry rip_entries[RIP_MAX_ENTRY];};struct route_entry{ struct in_addr dest; struct in_addr next; unsigned int metric; time_t timer; int valid; int flag;};struct rip_packet current_rip_packet;//struct rip_packet current_rip_packet_r;int current_rip_count;struct route_entry routing_table[ROUTE_MAX_ENTRY];int current_route_count;int sockfd;pthread_mutex_t rt_mutex;pthread_mutex_t crp_mutex;struct in_addr local_addr;void print_routing_table();void print_message();void print_rip_packet();int check_rip_packet();int calculate_rip_metric(int rip_entry_number);void reset_rip_packet(int command);void init_routing_table();void init_all();void gen_request_all();void send_rip_packet_to(struct in_addr &dest_ip);void broadcast_rip_packet();void receive_rip_packet();void handle_request(struct in_addr & source_ip);void handle_response(struct in_addr & source_ip);void start_rip_daemon();void update_routing_table();void * timer_routine(void *);char * local_ip[LOCAL_ROUTE_ENTRY]={ "195.51.0.0", "195.51.0.1", "195.51.0.2", "195.51.0.3", "195.51.0.4", "195.51.0.5", "195.51.0.6", "195.51.0.7", "195.51.0.8", "195.51.0.9"};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -