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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hash.c

?? zebra測試源代碼用于 SOCKET 通信
?? C
字號:
/* Hash routine. * 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 "hash.h"#include "memory.h"/* Allocate a new hash.  */struct hash *hash_create_size (unsigned int size, 		  unsigned int (*hash_key) (), int (*hash_cmp) ()){  struct hash *hash;  hash = XMALLOC (MTYPE_HASH, sizeof (struct hash));  hash->index = XMALLOC (MTYPE_HASH_INDEX, 			 sizeof (struct hash_backet *) * size);  memset (hash->index, 0, sizeof (struct hash_backet *) * size);  hash->size = size;  hash->hash_key = hash_key;  hash->hash_cmp = hash_cmp;  hash->count = 0;  return hash;}/* Allocate a new hash with default hash size.  */struct hash *hash_create (unsigned int (*hash_key) (), int (*hash_cmp) ()){  return hash_create_size (HASHTABSIZE, hash_key, hash_cmp);}/* Utility function for hash_get().  When this function is specified   as alloc_func, return arugment as it is.  This function is used for   intern already allocated value.  */void *hash_alloc_intern (void *arg){  return arg;}/* Lookup and return hash backet in hash.  If there is no   corresponding hash backet and alloc_func is specified, create new   hash backet.  */void *hash_get (struct hash *hash, void *data, void * (*alloc_func) ()){  unsigned int key;  unsigned int index;  void *newdata;  struct hash_backet *backet;  key = (*hash->hash_key) (data);  index = key % hash->size;  for (backet = hash->index[index]; backet != NULL; backet = backet->next)     if (backet->key == key && (*hash->hash_cmp) (backet->data, data))      return backet->data;  if (alloc_func)    {      newdata = (*alloc_func) (data);      if (newdata == NULL)	return NULL;      backet = XMALLOC (MTYPE_HASH_BACKET, sizeof (struct hash_backet));      backet->data = newdata;      backet->key = key;      backet->next = hash->index[index];      hash->index[index] = backet;      hash->count++;      return backet->data;    }  return NULL;}/* Hash lookup.  */void *hash_lookup (struct hash *hash, void *data){  return hash_get (hash, data, NULL);}/* This function release registered value from specified hash.  When   release is successfully finished, return the data pointer in the   hash backet.  */void *hash_release (struct hash *hash, void *data){  void *ret;  unsigned int key;  unsigned int index;  struct hash_backet *backet;  struct hash_backet *pp;  key = (*hash->hash_key) (data);  index = key % hash->size;  for (backet = pp = hash->index[index]; backet; backet = backet->next)    {      if (backet->key == key && (*hash->hash_cmp) (backet->data, data)) 	{	  if (backet == pp) 	    hash->index[index] = backet->next;	  else 	    pp->next = backet->next;	  ret = backet->data;	  XFREE (MTYPE_HASH_BACKET, backet);	  hash->count--;	  return ret;	}      pp = backet;    }  return NULL;}/* Iterator function for hash.  */voidhash_iterate (struct hash *hash, 	      void (*func) (struct hash_backet *, void *), void *arg){  int i;  struct hash_backet *hb;  for (i = 0; i < hash->size; i++)    for (hb = hash->index[i]; hb; hb = hb->next)      (*func) (hb, arg);}/* Clean up hash.  */voidhash_clean (struct hash *hash, void (*free_func) (void *)){  int i;  struct hash_backet *hb;  struct hash_backet *next;  for (i = 0; i < hash->size; i++)    {      for (hb = hash->index[i]; hb; hb = next)	{	  next = hb->next;	      	  if (free_func)	    (*free_func) (hb->data);	  XFREE (MTYPE_HASH_BACKET, hb);	  hash->count--;	}      hash->index[i] = NULL;    }}/* Free hash memory.  You may call hash_clean before call this   function.  */voidhash_free (struct hash *hash){  XFREE (MTYPE_HASH_INDEX, hash->index);  XFREE (MTYPE_HASH, hash);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝瓜av网站精品一区二区| 欧美日韩在线免费视频| 久久这里只有精品首页| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美日韩国产欧美日美国产精品| 亚洲日本va午夜在线影院| av中文一区二区三区| 亚洲欧美日韩精品久久久久| 欧美性一级生活| 日韩精品1区2区3区| 欧美大肚乱孕交hd孕妇| 国产精品911| 国产精品久久久久9999吃药| 91视频观看免费| 亚洲超碰精品一区二区| 日韩免费高清av| 粉嫩av亚洲一区二区图片| 国产精品国模大尺度视频| 亚洲精品一区二区三区蜜桃下载 | 国产ts人妖一区二区| 中文字幕巨乱亚洲| 色综合久久综合中文综合网| 亚洲mv在线观看| 精品久久久久久久久久久久久久久久久 | 日韩视频一区在线观看| 国产一区二区0| 亚洲欧美一区二区三区极速播放| 欧美日韩美少妇| 国产乱子轮精品视频| ●精品国产综合乱码久久久久 | 青青青伊人色综合久久| 久久久久久免费毛片精品| 色综合久久综合中文综合网| 秋霞av亚洲一区二区三| 中文字幕国产一区| 欧美猛男超大videosgay| 国产河南妇女毛片精品久久久| 亚洲精品五月天| 久久久久久久久免费| 欧美日韩在线三区| 国产成人综合自拍| 婷婷久久综合九色综合绿巨人| 久久精品视频免费| 欧美剧情片在线观看| 成人免费毛片高清视频| 日本不卡123| 亚洲欧美另类在线| 精品成人一区二区| 欧美麻豆精品久久久久久| 成人av在线看| 久久99精品国产麻豆不卡| 亚洲视频一区二区在线观看| 欧美精品一区二区三区一线天视频| 日本福利一区二区| 福利一区二区在线观看| 麻豆精品蜜桃视频网站| 亚洲午夜久久久久久久久久久| 日本亚洲一区二区| 亚洲精品v日韩精品| 国产欧美日韩在线观看| 精品剧情v国产在线观看在线| 欧美少妇性性性| 色综合久久六月婷婷中文字幕| 国产成人av自拍| 精品一区二区三区视频在线观看 | 午夜成人免费视频| 一区二区在线看| 国产精品久久久久四虎| 日本一区二区三区四区在线视频 | 国产精品一区久久久久| 青草国产精品久久久久久| 一区二区三区中文免费| 国产日韩精品视频一区| 久久久99精品久久| 精品对白一区国产伦| 欧美日韩国产免费| 欧美日韩你懂的| 在线观看亚洲精品视频| 99re热视频这里只精品 | 91激情五月电影| 91论坛在线播放| 色噜噜夜夜夜综合网| 91蜜桃免费观看视频| 91女人视频在线观看| 色综合天天综合网国产成人综合天| 成人高清视频在线观看| 99久久精品免费观看| 99re66热这里只有精品3直播| av在线这里只有精品| 色综合天天综合网天天狠天天 | 国产一区二区三区精品视频| 国产一区二区精品久久| 国产成人免费在线视频| 国产高清亚洲一区| www.亚洲色图| 国产欧美一区二区精品性色| 久久精品亚洲麻豆av一区二区| 国产偷国产偷精品高清尤物 | 综合av第一页| 亚洲国产综合人成综合网站| 水野朝阳av一区二区三区| 精品一区二区久久| 成人午夜在线免费| 欧洲生活片亚洲生活在线观看| 欧美精选午夜久久久乱码6080| 日韩一级二级三级精品视频| 久久天天做天天爱综合色| 国产精品久久久久久久久晋中| 一区二区免费在线播放| 首页国产丝袜综合| 国产麻豆成人精品| 91在线免费播放| 欧美精品xxxxbbbb| 久久久久88色偷偷免费| 中文字幕中文字幕在线一区| 亚洲国产cao| 国产在线精品国自产拍免费| 91在线丨porny丨国产| 欧美一区二区三区影视| 中文字幕免费不卡| 亚洲高清免费观看| 国产精品一区二区久久精品爱涩 | 亚洲无线码一区二区三区| 久久精品国产一区二区三| 成人免费看的视频| 欧美丰满嫩嫩电影| 国产三级三级三级精品8ⅰ区| 亚洲一区二区四区蜜桃| 国产精品亚洲一区二区三区妖精| 日本伦理一区二区| 久久久久久久综合狠狠综合| 亚洲伊人伊色伊影伊综合网 | av资源站一区| 精品久久久三级丝袜| 夜夜嗨av一区二区三区中文字幕| 激情欧美一区二区三区在线观看| 色老综合老女人久久久| 久久久亚洲欧洲日产国码αv| 亚洲丰满少妇videoshd| 成人av电影在线观看| 精品久久久久久久一区二区蜜臀| 一个色在线综合| 成人免费观看av| 精品国产免费一区二区三区香蕉| 一区二区三区在线高清| 成人美女视频在线观看18| 日韩免费观看高清完整版 | 日韩精品中午字幕| 亚洲一卡二卡三卡四卡无卡久久| 高清久久久久久| 精品福利视频一区二区三区| 日韩黄色片在线观看| 在线免费观看一区| 中文字幕一区二区不卡| 国产suv精品一区二区6| 精品国偷自产国产一区| 麻豆国产91在线播放| 欧美日韩国产首页| 亚洲成人自拍一区| 欧美亚洲国产一区在线观看网站| 中文字幕一区二区在线播放| 国产毛片一区二区| 久久综合精品国产一区二区三区 | 水野朝阳av一区二区三区| 色女孩综合影院| 亚洲人精品午夜| 99久久er热在这里只有精品15| 日本一区二区三区免费乱视频| 国产成人丝袜美腿| 欧美国产成人精品| 成人精品亚洲人成在线| 欧美激情中文字幕一区二区| 国产一区91精品张津瑜| 久久精品一区二区三区不卡牛牛| 国产一区二区三区久久久| 精品伦理精品一区| 国产米奇在线777精品观看| 久久久久久麻豆| 丁香啪啪综合成人亚洲小说| 欧美极品另类videosde| av在线免费不卡| 亚洲日本va午夜在线影院| 在线看不卡av| 亚洲成a人片在线不卡一二三区| 精品视频资源站| 日韩高清不卡一区| 日韩免费电影一区| 国产精品亚洲第一区在线暖暖韩国| 久久蜜桃av一区精品变态类天堂| 国产盗摄一区二区三区| 亚洲日本中文字幕区| 欧美私人免费视频| 男男成人高潮片免费网站| 久久一区二区三区四区| 丁香婷婷综合色啪| 亚洲激情在线播放| 欧美一区二区网站| 国产成人av影院| 夜夜操天天操亚洲| 日韩三级.com|