⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myrip.h

📁 rip协议示范
💻 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 + -