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

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

?? ipv6_utils.c

?? 支持IPv6的adov路由協議(本人修改后)
?? C
字號:
/***************************************************************************** * * Copyright (C) 2003 Simon Fraser University and NewMIC * * This program 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 of the License, or * (at your option) any later version. * * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * * Author: Peter Lee       <peter.lee@shaw.ca> * *****************************************************************************/#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/ip6.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include "ipv6_utils.h"#include "defs.h"#include "address_conf.h"#define _PATH_PROCNET_IFINET6   "/proc/net/if_inet6"#define IPV6_ADDR_ANY		0x0000U#define IPV6_ADDR_UNICAST      	0x0001U#define IPV6_ADDR_MULTICAST    	0x0002U#define IPV6_ADDR_ANYCAST	0x0004U#define IPV6_ADDR_GLOBAL		0x0000U#define IPV6_ADDR_LOOPBACK	0x0010U#define IPV6_ADDR_LINKLOCAL	0x0020U#define IPV6_ADDR_SITELOCAL	0x0040U#define IPV6_ADDR_COMPATv4	0x0080U#define IPV6_ADDR_SCOPE_MASK	0x00f0U#define IPV6_ADDR_MAPPED	0x1000U#define IPV6_ADDR_RESERVED	0x2000Ustruct in6_addr if_link_addr;/** * ntoh_in6_addr - convert IPv6 address from network to host byte order * @src: address to convert * @tgt: buffer where to store converted address * * Converts an IPv6 address from network byte order to host byte * order.   **/struct in6_addr *ntoh_in6_addr(struct in6_addr *tgt, struct in6_addr *src){  //int i;  memset(tgt, 0, sizeof(struct in6_addr));  if (src == NULL) {    fprintf(stderr, /*__FUNCTION__ZJH*/ " src == NULL\n");    return NULL;  }  if (tgt == NULL) {    perror(__FUNCTION__);    return NULL;  }  //PL: IPv6 are always in network byte order  /* This code is unneccesary      for (i = 0; i < 4; i++)     tgt->s6_addr32[i] = ntohl(src->s6_addr32[i]);  */  memcpy(tgt,src, sizeof(struct in6_addr));  return tgt;}/** * hton_in6_addr - convert IPv6 address from host to network byte order * @src: address to convert * @tgt: buffer where to store converted address * * Converts an IPv6 address from host byte order to network byte * order.  Returns newly allocated network byte order address.  User * should free() the memory after use. **/struct in6_addr *hton_in6_addr(struct in6_addr *tgt, struct in6_addr *src){  //int i;    if (src == NULL) {    fprintf(stderr, /*__FUNCTION__ZJH*/ " addr == NULL\n");    return NULL;  }  if (tgt == NULL) {    perror(__FUNCTION__);    return NULL;  }  //PL: IPv6 are always in network byte order  /* This code is unnecessary      for (i = 0; i < 4; i++)       tgt->s6_addr32[i] = htonl(src->s6_addr32[i]);  */  memcpy(tgt,src, sizeof(struct in6_addr));    return tgt;}/* * Pass in the interface name and value will be return in interface_info * Input:  ifname * Output: interface_info *///struct if6_info *get_if6_info(char *ifname, struct if6_info *interface_info)struct if6_info *get_if6_info(char *ifname){    FILE *f;    char addr6[40], devname[20];    char addr6p[8][5];	struct if6_info *if_info_head=NULL,*if_info_tail=NULL,*if_info_tmp=NULL;    struct ip6_addr *ip6_addr_tail=NULL;    if ((f = fopen(_PATH_PROCNET_IFINET6, "r")) != NULL)       {		if((if_info_tmp=(struct if6_info *)malloc(sizeof(struct if6_info)))==NULL){			printf("(struct if6_info) malloc failed!\n");			exit(-1);		}		memset(if_info_tmp,0,sizeof(struct if6_info));/*	while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n",		      addr6p[0], addr6p[1], addr6p[2], addr6p[3],		      addr6p[4], addr6p[5], addr6p[6], addr6p[7],		      &(interface_info->if_idx), &(interface_info->plen), 		      &(interface_info->scope), &(interface_info->dad_status), 		      devname) != EOF)	  {	    if ((interface_info->scope == IPV6_ADDR_SITELOCAL) &&	    //if ((interface_info->scope == IPV6_ADDR_LINKLOCAL) &&		(!strcmp(devname, ifname)) )	      {		sprintf(addr6, "%s:%s:%s:%s:%s:%s:%s:%s",			addr6p[0], addr6p[1], addr6p[2], addr6p[3],			addr6p[4], addr6p[5], addr6p[6], addr6p[7]);		memcpy(interface_info->devname, devname, sizeof(devname));		inet_pton(AF_INET6, addr6, &(interface_info->ipv6_addr));		//PL: info for the request device found, return		fclose(f);		return 0;	      }	  }*/	while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n",		      addr6p[0], addr6p[1], addr6p[2], addr6p[3],		      addr6p[4], addr6p[5], addr6p[6], addr6p[7],		      &(if_info_tmp->if_idx), &(if_info_tmp->plen), 		      &(if_info_tmp->scope), &(if_info_tmp->dad_status), 		      devname) != EOF){		if (((if_info_tmp->scope == IPV6_ADDR_SITELOCAL) ||			(if_info_tmp->scope == IPV6_ADDR_GLOBAL)||			(if_info_tmp->scope==IPV6_ADDR_LINKLOCAL)) &&			(!strcmp(devname, ifname)) ){			sprintf(addr6, "%s:%s:%s:%s:%s:%s:%s:%s",				addr6p[0], addr6p[1], addr6p[2], addr6p[3],				addr6p[4], addr6p[5], addr6p[6], addr6p[7]);			memcpy(if_info_tmp->devname, devname, sizeof(devname));			if(if_info_tmp->scope==IPV6_ADDR_LINKLOCAL){				inet_pton(AF_INET6,addr6,&if_link_addr);				continue;			}			inet_pton(AF_INET6, addr6, &(if_info_tmp->ipv6_addr));			if(if_info_head==NULL){				//printf("if_info_head==NULL!\n");				if(((if_info_tail=(struct if6_info *)malloc(sizeof(struct if6_info)))==NULL)||				((ip6_addr_tail=(struct ip6_addr *)malloc(sizeof(struct ip6_addr)))==NULL)){					printf("(struct if6_info) malloc failed!\n");					exit(-1);				}				if_info_head=if_info_tail;				old_ip6addr_head=ip6_addr_tail;			}else{				//printf("create list...\n");				if(((if_info_tail->next=(struct if6_info *)malloc(sizeof(struct if6_info)))==NULL)||				((ip6_addr_tail->next=(struct ip6_addr *)malloc(sizeof(struct ip6_addr)))==NULL)){					printf("(struct if6_info) malloc failed!\n");					exit(-1);				}				if_info_tail=if_info_tail->next;				ip6_addr_tail=ip6_addr_tail->next;			}			memcpy(if_info_tail,if_info_tmp,sizeof(struct if6_info));			memcpy(&(ip6_addr_tail->ip6_in6addr),&(if_info_tail->ipv6_addr),				sizeof(struct in6_addr));			ip6_addr_tail->plen=if_info_tail->plen;			ip6_addr_tail->next=NULL;		}		memset(if_info_tmp,0,sizeof(struct if6_info));	}    }    fclose(f);	//if((old_ip6addr_head==NULL)&&(if_info_head==NULL)) 	//	printf("no ipv6 address!\n");    return if_info_head;}/** * hton_in6_addr - convert IPv6 address from host to network byte order * @src: address to convert * @tgt: buffer where to store converted address * * Converts an IPv6 address from host byte order to network byte * order.  Returns newly allocated network byte order address.  User * should free() the memory after use. **/void copy_in6_addr(struct in6_addr *tgt, struct in6_addr *src){  memcpy(tgt,src, sizeof(struct in6_addr));}//PL: This is for IPv6, maximum can handle 4 IPv6 address in 1 printf() call.char *NS_CLASS ip6_to_str(struct in6_addr addr){    char *str;    static char ip6_buf[4][40];    static int count = 0;    int which;    which = (count%4);    bzero(ip6_buf[which], 40);    sprintf(ip6_buf[which], "%x:%x:%x:%x:%x:%x:%x:%x",	       (int)ntohs(addr.s6_addr16[0]), (int)ntohs(addr.s6_addr16[1]),	       (int)ntohs(addr.s6_addr16[2]), (int)ntohs(addr.s6_addr16[3]),	       (int)ntohs(addr.s6_addr16[4]), (int)ntohs(addr.s6_addr16[5]),	       (int)ntohs(addr.s6_addr16[6]), (int)ntohs(addr.s6_addr16[7]));    //printf("count = %d, which = %d\n", count, which);    str = ip6_buf[which];    count++;    return str;}void print_ipv6_addr(struct in6_addr ipv6_addr){  int i;  for(i=0; i<16; i++)    {      printf("%x", ipv6_addr.s6_addr[i]);    }  printf("\n");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产免费久久| 亚洲曰韩产成在线| 亚洲午夜影视影院在线观看| 久久成人免费日本黄色| 色噜噜狠狠色综合中国| 久久久不卡网国产精品二区| 蜜臀av一区二区在线免费观看| 99久久免费精品高清特色大片| 日韩欧美一区二区不卡| 亚洲国产成人tv| 91啪九色porn原创视频在线观看| 精品成人免费观看| 美国十次了思思久久精品导航| 91久久精品一区二区| 国产精品久久久久毛片软件| 国产成人三级在线观看| 久久综合狠狠综合久久综合88| 亚洲国产欧美在线人成| 色88888久久久久久影院按摩| 国产精品亲子乱子伦xxxx裸| 国产精品自拍三区| 精品国产一区二区国模嫣然| 日本成人在线不卡视频| 欧美日韩二区三区| 亚洲bdsm女犯bdsm网站| 欧美日韩一区不卡| 亚洲一区二区三区四区在线观看| 99re这里只有精品首页| 亚洲欧洲日韩综合一区二区| 成人午夜激情片| 亚洲国产精品成人综合 | 亚洲午夜精品17c| 色国产综合视频| 亚洲精品视频免费看| av电影在线观看一区| 国产精品对白交换视频| 色综合色狠狠综合色| 一区二区三区在线免费| 欧美吞精做爰啪啪高潮| 五月激情综合婷婷| 欧美一区二区播放| 国产一区二区三区四区在线观看| 久久久av毛片精品| 9i看片成人免费高清| 一区二区三区91| 7777精品伊人久久久大香线蕉的| 全国精品久久少妇| 国产亚洲欧洲997久久综合| 成人app网站| 亚洲精品视频免费看| 在线不卡中文字幕播放| 国产乱子伦视频一区二区三区| 国产午夜精品美女毛片视频| 99精品国产91久久久久久| 亚洲自拍偷拍麻豆| 精品国产一二三| 99精品国产热久久91蜜凸| 亚洲午夜视频在线观看| 日韩三级视频在线看| 粉嫩绯色av一区二区在线观看| 国产精品国产三级国产| 欧美午夜精品一区二区三区| 精品在线观看免费| 综合久久给合久久狠狠狠97色 | 成人高清免费在线播放| 亚洲欧美国产高清| 日韩欧美色综合网站| thepron国产精品| 午夜精品久久一牛影视| 中文字幕精品一区二区精品绿巨人 | 成人成人成人在线视频| 亚洲成人精品一区二区| 欧美国产精品一区二区三区| 欧美美女网站色| 99视频一区二区| 精品一区二区国语对白| 日韩av不卡在线观看| 国产精品成人一区二区三区夜夜夜 | 精品处破学生在线二十三| 94色蜜桃网一区二区三区| 久久精品国产一区二区| 亚洲综合在线电影| 国产日韩欧美一区二区三区乱码| 欧美精品久久99| 欧美亚洲自拍偷拍| 97久久超碰精品国产| 国产伦精品一区二区三区视频青涩 | 欧美大片顶级少妇| 欧美日韩国产123区| 色妞www精品视频| 日韩激情在线观看| 经典三级在线一区| 视频一区视频二区在线观看| 亚洲欧美在线高清| 国产精品色一区二区三区| 日韩视频免费直播| 欧美精品久久久久久久久老牛影院| 成人av片在线观看| 岛国精品在线观看| 国产成人精品1024| 国产精品996| 国产寡妇亲子伦一区二区| 精品一区二区国语对白| 日韩电影在线看| 日本视频中文字幕一区二区三区| 亚洲在线成人精品| 亚洲国产成人精品视频| 亚洲综合在线视频| 亚洲在线一区二区三区| 亚洲一区二区三区四区在线观看| 亚洲免费观看高清在线观看| 一区二区中文视频| 中文字幕日韩一区| 亚洲免费色视频| 亚洲在线视频免费观看| 亚洲高清久久久| 日本不卡的三区四区五区| 日本一不卡视频| 黄色精品一二区| 国产很黄免费观看久久| 成人avav在线| 在线观看一区二区精品视频| 欧美日韩国产免费一区二区| 欧美一区二区三区四区视频| 精品国产乱码久久久久久免费| 精品国产一区二区三区av性色| www亚洲一区| 17c精品麻豆一区二区免费| 亚洲欧美日韩久久精品| 亚洲成人自拍偷拍| 久久99精品一区二区三区三区| 韩国欧美一区二区| 99re成人精品视频| 欧美人妖巨大在线| 久久无码av三级| 国产精品初高中害羞小美女文| 亚洲青青青在线视频| 亚洲成人资源网| 国产精品原创巨作av| 色噜噜狠狠成人中文综合 | 波多野结衣在线aⅴ中文字幕不卡| 91视频xxxx| 日韩三级免费观看| 国产精品日韩成人| 午夜精品福利在线| 国产成人免费av在线| 欧美视频一二三区| 国产欧美一区视频| 亚洲成人精品一区二区| 国产精品99久久久| 欧美日韩一区二区三区视频| 久久久久久久久久久久久夜| 一区二区三区日本| 国产一区美女在线| 欧美午夜电影在线播放| 国产亚洲欧美色| 亚洲高清视频中文字幕| 成人自拍视频在线| 制服丝袜av成人在线看| 中文字幕av一区二区三区免费看| 三级久久三级久久久| aa级大片欧美| 久久亚洲春色中文字幕久久久| 一区二区三区电影在线播| 国产不卡视频在线观看| 91精品婷婷国产综合久久性色| 国产精品国产三级国产aⅴ中文| 美美哒免费高清在线观看视频一区二区| 波多野结衣91| 国产日产欧美精品一区二区三区| 亚洲国产欧美日韩另类综合| 岛国精品一区二区| 精品国产自在久精品国产| 亚洲国产成人av网| 91麻豆6部合集magnet| 中文字幕乱码日本亚洲一区二区| 日韩av中文字幕一区二区| 精品视频免费看| 亚洲欧美欧美一区二区三区| 国产精品亚洲午夜一区二区三区| 欧美一区二区视频在线观看2022 | 久久久亚洲精品一区二区三区| 亚洲午夜激情av| 欧洲av在线精品| 自拍偷拍国产精品| 成人午夜电影小说| 亚洲国产精品精华液2区45| 国产在线精品一区二区不卡了| 777久久久精品| 天天综合网 天天综合色| 欧美日韩美女一区二区| 亚洲伊人伊色伊影伊综合网| 色狠狠色噜噜噜综合网| 亚洲青青青在线视频| 一本色道久久加勒比精品| 亚洲欧美另类综合偷拍| 色哟哟日韩精品| 亚洲一区二区三区四区中文字幕| 91豆麻精品91久久久久久| 亚洲免费观看视频|