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

📄 mtu_kvm.c

📁 大名鼎鼎的路由器源码。程序分ZEBRA、OSPFRIP等3个包。程序框架采用一个路由协议一个进程的方式
💻 C
字号:
/* MTU get using kvm_read. * Copyright (C) 1999 Kunihiro Ishiguro * * This file is part of GNU Zebra. * * GNU Zebra is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any * later version. * * GNU Zebra is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Zebra; see the file COPYING.  If not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA.   */#include <zebra.h>#include <kvm.h>#include <limits.h>#include <fcntl.h>#include "if.h"/* get interface MTU to use kvm_read */voidif_kvm_get_mtu (struct interface *ifp){  kvm_t *kvmd;  struct ifnet ifnet;  unsigned long ifnetaddr;  int len;   char ifname[IFNAMSIZ];  char tname[INTERFACE_NAMSIZ + 1];  char buf[_POSIX2_LINE_MAX];   struct nlist nl[] =   {    {"_ifnet"},    {""}  };  ifp->mtu = -1;    kvmd = kvm_openfiles (NULL, NULL, NULL, O_RDONLY, buf);  if (kvmd == NULL)     return ;    kvm_nlist(kvmd, nl);   ifnetaddr = nl[0].n_value;   if (kvm_read(kvmd, ifnetaddr, (char *)&ifnetaddr, sizeof ifnetaddr) < 0)     {      kvm_close (kvmd);      return ;    }   while(ifnetaddr != 0)     {      if (kvm_read (kvmd, ifnetaddr, (char *)&ifnet, sizeof ifnet) < 0) 	{	  kvm_close (kvmd);	  return ;	}      if (kvm_read (kvmd, (u_long)ifnet.if_name, ifname, IFNAMSIZ) < 0) 	{	  kvm_close (kvmd);	  return ;	}      len = snprintf (tname, INTERFACE_NAMSIZ + 1, 		      "%s%d", ifname, ifnet.if_unit);      if (strncmp (tname, ifp->name, len) == 0)	break;      ifnetaddr = (u_long)ifnet.if_next;    }  kvm_close (kvmd);  if (ifnetaddr == 0)     {      return ;    }  ifp->mtu = ifnet.if_mtu;}

⌨️ 快捷键说明

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