亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ripng_interface.c

?? zebra測試源代碼用于 SOCKET 通信
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Interface related function for RIPng. * Copyright (C) 1998 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 "linklist.h"#include "if.h"#include "prefix.h"#include "memory.h"#include "network.h"#include "filter.h"#include "log.h"#include "stream.h"#include "zclient.h"#include "command.h"#include "table.h"#include "thread.h"#include "ripngd/ripngd.h"#include "ripngd/ripng_debug.h"/* If RFC2133 definition is used. */#ifndef IPV6_JOIN_GROUP#define IPV6_JOIN_GROUP  IPV6_ADD_MEMBERSHIP #endif#ifndef IPV6_LEAVE_GROUP#define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP #endif/* Static utility function. */static void ripng_enable_apply (struct interface *);static void ripng_passive_interface_apply (struct interface *);/* Join to the all rip routers multicast group. */intripng_multicast_join (struct interface *ifp){  int ret;  struct ipv6_mreq mreq;  memset (&mreq, 0, sizeof (mreq));  inet_pton(AF_INET6, RIPNG_GROUP, &mreq.ipv6mr_multiaddr);  mreq.ipv6mr_interface = ifp->ifindex;  ret = setsockopt (ripng->sock, IPPROTO_IPV6, IPV6_JOIN_GROUP,		    (char *) &mreq, sizeof (mreq));  if (ret < 0)    zlog_warn ("can't setsockopt IPV6_JOIN_GROUP: %s", strerror (errno));  if (IS_RIPNG_DEBUG_EVENT)    zlog_info ("RIPng %s join to all-rip-routers multicast group", ifp->name);  return ret;}/* Leave from the all rip routers multicast group. */intripng_multicast_leave (struct interface *ifp){  int ret;  struct ipv6_mreq mreq;  memset (&mreq, 0, sizeof (mreq));  inet_pton(AF_INET6, RIPNG_GROUP, &mreq.ipv6mr_multiaddr);  mreq.ipv6mr_interface = ifp->ifindex;  ret = setsockopt (ripng->sock, IPPROTO_IPV6, IPV6_LEAVE_GROUP,		    (char *) &mreq, sizeof (mreq));  if (ret < 0)    zlog_warn ("can't setsockopt IPV6_LEAVE_GROUP: %s\n", strerror (errno));  if (IS_RIPNG_DEBUG_EVENT)    zlog_info ("RIPng %s leave from all-rip-routers multicast group",	       ifp->name);  return ret;}/* Check max mtu size. */intripng_check_max_mtu (){  listnode node;  struct interface *ifp;  int mtu;  mtu = 0;  for (node = listhead (iflist); node; nextnode (node))    {      ifp = getdata (node);      if (mtu < ifp->mtu)	mtu = ifp->mtu;    }  return mtu;}intripng_if_down (struct interface *ifp){  struct route_node *rp;  struct ripng_info *rinfo;  struct ripng_interface *ri;  if (ripng)    {      for (rp = route_top (ripng->table); rp; rp = route_next (rp))	if ((rinfo = rp->info) != NULL)	  {	    /* Routes got through this interface. */	    if (rinfo->ifindex == ifp->ifindex		&& rinfo->type == ZEBRA_ROUTE_RIPNG		&& rinfo->sub_type == RIPNG_ROUTE_RTE)	      {		ripng_zebra_ipv6_delete ((struct prefix_ipv6 *) &rp->p,					 &rinfo->nexthop,					 rinfo->ifindex);		RIPNG_TIMER_OFF (rinfo->t_timeout);		RIPNG_TIMER_OFF (rinfo->t_garbage_collect);	      		rp->info = NULL;		route_unlock_node (rp);	      		ripng_info_free (rinfo);	      }	    else	      {		/* All redistributed routes got through this interface. */		if (rinfo->ifindex == ifp->ifindex)		  ripng_redistribute_delete (rinfo->type, rinfo->sub_type,					     (struct prefix_ipv6 *) &rp->p,					     rinfo->ifindex);	      }	  }    }  ri = ifp->info;    if (ripng && ri->running)   {     if (IS_RIPNG_DEBUG_EVENT)       zlog_info ("turn off %s", ifp->name);     /* Leave from multicast group. */     ripng_multicast_leave (ifp);     ri->running = 0;   }  return 0;}/* Inteface link up message processing. */intripng_interface_up (int command, struct zclient *zclient, zebra_size_t length){  struct stream *s;  struct interface *ifp;  /* zebra_interface_state_read() updates interface structure in iflist. */  s = zclient->ibuf;  ifp = zebra_interface_state_read (s);  if (ifp == NULL)    return 0;  if (IS_RIPNG_DEBUG_ZEBRA)    zlog_info ("interface up %s index %d flags %ld metric %d mtu %d",	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);  /* Check if this interface is RIPng enabled or not. */  ripng_enable_apply (ifp);  /* Check for a passive interface. */  ripng_passive_interface_apply (ifp);  /* Apply distribute list to the all interface. */  ripng_distribute_update_interface (ifp);  return 0;}/* Inteface link down message processing. */intripng_interface_down (int command, struct zclient *zclient,		      zebra_size_t length){  struct stream *s;  struct interface *ifp;  /* zebra_interface_state_read() updates interface structure in iflist. */  s = zclient->ibuf;  ifp = zebra_interface_state_read (s);  if (ifp == NULL)    return 0;  ripng_if_down (ifp);  if (IS_RIPNG_DEBUG_ZEBRA)    zlog_info ("interface down %s index %d flags %ld metric %d mtu %d",	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);  return 0;}/* Inteface addition message from zebra. */intripng_interface_add (int command, struct zclient *zclient, zebra_size_t length){  struct interface *ifp;  ifp = zebra_interface_add_read (zclient->ibuf);  if (IS_RIPNG_DEBUG_ZEBRA)    zlog_info ("RIPng interface add %s index %d flags %ld metric %d mtu %d",	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);  /* Check is this interface is RIP enabled or not.*/  ripng_enable_apply (ifp);  /* Apply distribute list to the interface. */  ripng_distribute_update_interface (ifp);  /* Check interface routemap. */  ripng_if_rmap_update_interface (ifp);  return 0;}intripng_interface_delete (int command, struct zclient *zclient,			zebra_size_t length){  return 0;}intripng_interface_address_add (int command, struct zclient *zclient,			     zebra_size_t length){  struct connected *c;  struct prefix *p;  char buf[INET6_ADDRSTRLEN];  c = zebra_interface_address_add_read (zclient->ibuf);  if (c == NULL)    return 0;  p = c->address;  if (p->family == AF_INET6)    {      if (IS_RIPNG_DEBUG_ZEBRA)	zlog_info ("RIPng connected address %s/%d add",		   inet_ntop (AF_INET6, &p->u.prefix6, buf, INET6_ADDRSTRLEN),		   p->prefixlen);            /* Check is this interface is RIP enabled or not.*/      ripng_enable_apply (c->ifp);    }  return 0;}intripng_interface_address_delete (int command, struct zclient *zclient,				zebra_size_t length){  struct connected *ifc;  struct prefix *p;  char buf[INET6_ADDRSTRLEN];  ifc = zebra_interface_address_delete_read (zclient->ibuf);    if (ifc)    {      p = ifc->address;      if (p->family == AF_INET6)	{	  if (IS_RIPNG_DEBUG_ZEBRA)	    zlog_info ("RIPng connected address %s/%d delete",		       inet_ntop (AF_INET6, &p->u.prefix6, buf,				  INET6_ADDRSTRLEN),		       p->prefixlen);	  /* Check is this interface is RIP enabled or not.*/	  ripng_enable_apply (ifc->ifp);	}      connected_free (ifc);    }  return 0;}/* RIPng enable interface vector. */vector ripng_enable_if;/* RIPng enable network table. */struct route_table *ripng_enable_network;/* Lookup RIPng enable network. */intripng_enable_network_lookup (struct interface *ifp){  listnode listnode;  struct connected *connected;  for (listnode = listhead (ifp->connected); listnode; nextnode (listnode))    if ((connected = getdata (listnode)) != NULL)      {	struct prefix *p; 	struct route_node *node;	p = connected->address;	if (p->family == AF_INET6)	  {	    node = route_node_match (ripng_enable_network, p);	    if (node)	      {		route_unlock_node (node);		return 1;	      }	  }      }  return -1;}/* Add RIPng enable network. */intripng_enable_network_add (struct prefix *p){  struct route_node *node;  node = route_node_get (ripng_enable_network, p);  if (node->info)    {      route_unlock_node (node);      return -1;    }  else    node->info = "enabled";  return 1;}/* Delete RIPng enable network. */intripng_enable_network_delete (struct prefix *p){  struct route_node *node;  node = route_node_lookup (ripng_enable_network, p);  if (node)    {      node->info = NULL;      /* Unlock info lock. */      route_unlock_node (node);      /* Unlock lookup lock. */      route_unlock_node (node);      return 1;    }  return -1;}/* Lookup function. */intripng_enable_if_lookup (char *ifname){  int i;  char *str;  for (i = 0; i < vector_max (ripng_enable_if); i++)    if ((str = vector_slot (ripng_enable_if, i)) != NULL)      if (strcmp (str, ifname) == 0)	return i;  return -1;}/* Add interface to ripng_enable_if. */intripng_enable_if_add (char *ifname){  int ret;  ret = ripng_enable_if_lookup (ifname);  if (ret >= 0)    return -1;  vector_set (ripng_enable_if, strdup (ifname));  return 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线观看视频在线观看| 欧美变态tickle挠乳网站| 国产精品欧美一区二区三区| 国产成人综合自拍| 中文av一区二区| 成人久久久精品乱码一区二区三区| 国产目拍亚洲精品99久久精品| 国产精品一区二区久久精品爱涩| 国产女人18毛片水真多成人如厕 | 国产欧美日韩激情| 成人动漫av在线| 亚洲精品国产视频| 91精品国产91热久久久做人人 | 懂色av噜噜一区二区三区av| 中文字幕视频一区| 欧美日韩国产中文| 精品写真视频在线观看| 欧美高清在线一区| 91国产丝袜在线播放| 日韩av电影天堂| 国产欧美一区二区三区沐欲| 91一区二区在线观看| 亚洲电影在线播放| 久久午夜电影网| 色婷婷av一区二区| 激情另类小说区图片区视频区| 国产视频在线观看一区二区三区| 91美女在线视频| 精品在线一区二区三区| ●精品国产综合乱码久久久久| 欧美日韩在线三区| 岛国精品一区二区| 日韩va欧美va亚洲va久久| 久久精品一区二区三区不卡| 色综合天天天天做夜夜夜夜做| 免费观看久久久4p| 亚洲欧美日韩在线| 欧美mv日韩mv亚洲| 欧洲色大大久久| 国产高清不卡二三区| 亚洲第一成人在线| 亚洲欧洲精品一区二区三区 | 欧美日韩大陆一区二区| 成人综合在线观看| 日本午夜一区二区| 一区二区三区免费网站| 久久伊人中文字幕| 欧美喷潮久久久xxxxx| 91麻豆自制传媒国产之光| 国产一区二区三区电影在线观看| 亚洲国产一区二区在线播放| 国产精品久久毛片av大全日韩| 日韩久久精品一区| 欧美网站大全在线观看| 不卡的电视剧免费网站有什么| 久热成人在线视频| 午夜精品一区二区三区三上悠亚| 中文字幕一区二区三区在线观看| 26uuu色噜噜精品一区| 欧美一级高清片| 欧美美女直播网站| 在线观看区一区二| 91片在线免费观看| 94色蜜桃网一区二区三区| 懂色av噜噜一区二区三区av| 狠狠色丁香久久婷婷综合_中| 日本成人在线网站| 日本不卡中文字幕| 亚洲一区二区黄色| 亚洲一二三级电影| 亚洲午夜精品在线| 一区二区三区不卡在线观看 | 天天色综合天天| 亚洲一线二线三线视频| 亚洲摸摸操操av| 亚洲伦在线观看| 亚洲美女屁股眼交3| 亚洲色图20p| 亚洲综合丝袜美腿| 亚洲曰韩产成在线| 亚洲成av人片在线观看无码| 亚洲与欧洲av电影| 丝袜美腿亚洲一区| 青椒成人免费视频| 精品综合久久久久久8888| 国产呦萝稀缺另类资源| 国产精品一品二品| 成人免费观看av| 色哟哟一区二区| 欧美精品欧美精品系列| 欧美一区二区久久久| 日韩欧美在线网站| 久久综合av免费| 国产精品久久久久一区| 一区二区三区久久| 亚洲超丰满肉感bbw| 捆绑调教一区二区三区| 国产成人精品免费在线| 99热在这里有精品免费| 欧亚一区二区三区| 日韩欧美国产wwwww| 久久影院午夜片一区| 1024亚洲合集| 五月激情丁香一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产一区二区三区精品视频| 成人av影视在线观看| 欧美色窝79yyyycom| 26uuu精品一区二区在线观看| 国产精品久久福利| 五月天精品一区二区三区| 精品一区二区三区欧美| 97精品久久久午夜一区二区三区| 欧美裸体一区二区三区| 日本一区二区三区视频视频| 亚洲色大成网站www久久九九| 日韩激情一二三区| 高清视频一区二区| 欧美日韩mp4| 日本一区二区三区视频视频| 亚洲电影一级黄| 国产精品99久| 欧美日韩成人一区| 国产精品麻豆久久久| 日产国产欧美视频一区精品| 成人免费毛片高清视频| 制服丝袜中文字幕亚洲| 国产精品久久久久久妇女6080| 午夜国产精品一区| www.色精品| 欧美精品一区二区不卡| 午夜欧美2019年伦理| a级精品国产片在线观看| 日韩欧美在线观看一区二区三区| 亚洲乱码中文字幕| 国产成人精品网址| 日韩欧美成人激情| 亚洲福利一区二区| 91香蕉视频mp4| 国产婷婷色一区二区三区| 日一区二区三区| 欧美综合亚洲图片综合区| 国产婷婷色一区二区三区四区| 日本不卡123| 欧美午夜精品免费| 亚洲天堂成人网| 国产成人精品www牛牛影视| 日韩你懂的电影在线观看| 亚洲线精品一区二区三区八戒| www.亚洲色图.com| 国产精品免费久久久久| 国内成+人亚洲+欧美+综合在线| 91精品国产综合久久香蕉麻豆| 亚洲在线成人精品| 91久久精品午夜一区二区| 亚洲欧洲成人自拍| 成人国产一区二区三区精品| 久久蜜桃香蕉精品一区二区三区| 久久精品噜噜噜成人88aⅴ| 欧美精品一二三区| 三级亚洲高清视频| 91精品国产91久久久久久最新毛片| 亚洲图片欧美色图| 欧美亚洲一区二区在线| 亚洲一区二区3| 欧美三级电影网| 亚洲成人免费电影| 欧美高清激情brazzers| 手机精品视频在线观看| 欧美视频一区在线观看| 亚洲国产精品人人做人人爽| 欧美在线不卡视频| 亚洲成人动漫一区| 91麻豆精品久久久久蜜臀| 石原莉奈在线亚洲二区| 日韩欧美一区二区久久婷婷| 日本aⅴ免费视频一区二区三区| 日韩一区二区视频在线观看| 久久电影网站中文字幕| 精品国产青草久久久久福利| 国产精品一线二线三线精华| 国产欧美精品一区aⅴ影院| 成人高清视频在线| 亚洲免费观看视频| 欧美日高清视频| 久久99国产精品尤物| 国产日韩欧美精品在线| 成人国产电影网| 亚洲一区二区三区四区不卡| 在线电影欧美成精品| 狠狠色丁香久久婷婷综| 中文av一区二区| 欧美日韩精品免费观看视频 | 国产无人区一区二区三区| 成人综合婷婷国产精品久久免费| 中文字幕字幕中文在线中不卡视频| 欧美视频中文字幕| 狠狠色丁香久久婷婷综合_中 | 成人的网站免费观看| 亚洲一区二区三区四区不卡|