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

📄 rip.c

📁 mgcp协议源代码。支持多种编码:g711
💻 C
字号:
/**************************************************************************** ** File: rip.c**** Author: Mike Borella**** Comments: Dump RIP header information. *******************************************************************************/#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <arpa/inet.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#include "config.h"#include "rip.h"extern u_char *packet_end;/*----------------------------------------------------------------------------**** dump_rip()**** Parse RIP packet and dump fields****----------------------------------------------------------------------------*/void dump_rip(u_char *bp, int length){  u_char *ep = bp + length;  u_char *p;  RipHdr *rip;  RipRouteHdr *rip_route;  RipAuthHdr *rip_auth;  int route_cnt;  /*   * Make sure we don't run off the end of the packet   */  if (ep > packet_end)     ep = packet_end;  p = bp;  printf("-----------------------------------------------------------------\n");  printf("                        RIP Header\n");  printf("-----------------------------------------------------------------\n");  rip = (RipHdr *) p;  printf("Command:                %d ", (int) rip->command);  switch(rip->command)    {    case RIP_CMD_RQ:      printf("(request)\n");      break;    case RIP_CMD_RP:      printf("(reply)\n");      break;    case RIP_CMD_POLL:      printf("(poll)\n");      break;    case RIP_CMD_POLL_ENTRY:      printf("(poll entry)\n");      break;    default:      printf("(unknown)\n");    }  printf("Version:                %d\n", (int) rip->version);  printf("Routing domain:         %d\n", (int) rip->domain);  p = p + sizeof(RipHdr);  /*   * Do the individual routes   */  route_cnt = 0;  while (p < ep)    {      route_cnt++;      printf("Route:                  %d\n", route_cnt);       rip_route = (RipRouteHdr *) p;      if (rip_route->addr_fam == 0xffff)	{	  rip_auth = (RipAuthHdr *) p;	  p = p + sizeof(RipAuthHdr);	}      else	{	  printf("  Address family:       %d\n", 		 (int) ntohs(rip_route->addr_fam));	  printf("  Route tag:            %d\n", 		 (int) ntohs(rip_route->route_tag));	  /* rip_route->ipaddr.s_addr = ntohl(rip_route->ipaddr.s_addr); */	  printf("  IP address            %s\n", 		 inet_ntoa(rip_route->ipaddr));	  /* rip_route->netmask.s_addr = ntohl(rip_route->netmask.s_addr); */	  printf("  Netmask:              %s\n", 		 inet_ntoa(rip_route->netmask));	  /* rip_route->next_hop.s_addr = ntohl(rip_route->next_hop.s_addr); */	  printf("  Next hop:             %s\n", 		 inet_ntoa(rip_route->next_hop));	  printf("  Metric:               %d\n", 		 (int) ntohl(rip_route->metric));	  p = p + sizeof(RipRouteHdr);	}    } /* while */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -