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

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

?? l7-conntrack.cpp

?? linux下的l7源代碼
?? CPP
字號:
/*  Functions and classes which track the conntracks for l7-filter.    By Ethan Sommer <sommere@users.sf.net> and Matthew Strait   <quadong@users.sf.net>, (C) 2006-2007  http://l7-filter.sf.net   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.  http://www.gnu.org/licenses/gpl.txt*/using namespace std;#include <iostream>#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <signal.h>#include <map>extern "C" {#include <linux/netfilter.h>#include <libnetfilter_conntrack/libnetfilter_conntrack.h>}#include "l7-conntrack.h"#include "l7-classify.h"#include "l7-queue.h"#include "util.h"l7_classify* l7_classifier;unsigned int buflen; // Shouldn't really be global, but it's SO much easierl7_connection::l7_connection() {  pthread_mutex_init(&num_packets_mutex, NULL);  pthread_mutex_init(&buffer_mutex, NULL);  buffer = (char *)malloc(buflen+1);  lengthsofar = 0;  num_packets = 0;  mark = 0;}l7_connection::~l7_connection() {  //clean up stuff  if(buffer){    print_give_up(key, (unsigned char *)buffer, lengthsofar);    free(buffer);  }  pthread_mutex_destroy(&num_packets_mutex);  pthread_mutex_destroy(&buffer_mutex);}void l7_connection::increment_num_packets() {  pthread_mutex_lock (&num_packets_mutex);  num_packets++;  pthread_mutex_unlock (&num_packets_mutex);}int l7_connection::get_num_packets() {  /* num_packets _might_ be modified in a different thread,      but it isn't critical if we are off by a few, and num_packets      might be modified between when this returns and is used anyway     so if it were critical we should put the locks around the whole      critical section */  return num_packets;}// Returns old mark if the connection is classified already.  // Otherwise, attempts to classify it.u_int32_t l7_connection::classify() {  pthread_mutex_lock (&buffer_mutex);  if(mark == NO_MATCH_YET || mark == UNTOUCHED)    mark = l7_classifier->classify(buffer);  else    cerr << "NOT REACHED. should have taken care of this case already.\n";  pthread_mutex_unlock (&buffer_mutex);  return mark;}u_int32_t l7_connection::get_mark() {  return mark;}void l7_connection::append_to_buffer(char *app_data, int appdatalen) {  pthread_mutex_lock(&buffer_mutex);  int length = 0;  int oldlength = lengthsofar;  /* Strip nulls.  Add it to the end of the current data. */  for(int i = 0; i < buflen-lengthsofar && i < appdatalen; i++) {    if(app_data[i] != '\0') {      buffer[length+oldlength] = app_data[i];      length++;    }  }  buffer[length+oldlength] = '\0';  lengthsofar += length;  l7printf(3, "Appended data. Length so far = %d\n", lengthsofar);  pthread_mutex_unlock (&buffer_mutex);}char *l7_connection::get_buffer() {  return (char *)buffer;}static int sprintf_conntrack_key(char *buf, struct nfct_conntrack *ct,                           unsigned int flags) {  int size = 0;  size += nfct_sprintf_protocol(buf, ct);  size += nfct_sprintf_address(buf+size, &ct->tuple[NFCT_DIR_ORIGINAL]);  size += nfct_sprintf_proto(buf+size, &ct->tuple[NFCT_DIR_ORIGINAL]);  /* Delete the last blank space */  buf[size-1] = '\0';  return size;}static string make_key(nfct_conntrack* ct, int flags){  char key[512];  int keysize = sprintf_conntrack_key(key, ct, flags);  if(keysize >= 512){    cerr << "Yike! Overflowed key!\n";    exit(1);  }  l7printf(2, "Made key from ct:\t%s\n", key);  return key;}static int l7_handle_conntrack_event(void *arg, unsigned int flags, int type, 					void *data){  l7_conntrack * l7_conntrack_handler = (l7_conntrack *) data;  nfct_conntrack* ct = (nfct_conntrack*)arg;  // I don't think there is any demand for ICMP. These are enough work for now.  if(ct->tuple[0].protonum != IPPROTO_TCP &&      ct->tuple[0].protonum != IPPROTO_UDP) return 0;  if(type == NFCT_MSG_DESTROY) l7printf(3, "Got event: NFCT_MSG_DESTROY\n");  if(type == NFCT_MSG_NEW)     l7printf(3, "Got event: NFCT_MSG_NEW\n");  if(type == NFCT_MSG_UPDATE)  l7printf(3, "Got event: NFCT_MSG_UPDATE\n");  if(type == NFCT_MSG_UNKNOWN) l7printf(3, "Got event: NFCT_MSG_UNKNOWN\n");  // On the first packet, create the connection buffer, etc.  if(type == NFCT_MSG_NEW){    string key = make_key(ct, flags);    if (l7_conntrack_handler->get_l7_connection(key)){      // this happens sometimes      cerr << "Received NFCT_MSG_NEW but already have a connection. Packets = "            << l7_conntrack_handler->get_l7_connection(key)->get_num_packets()            << endl;      l7_conntrack_handler->remove_l7_connection(key);    }        l7_connection *thisconnection = new l7_connection();    l7_conntrack_handler->add_l7_connection(thisconnection, key);    thisconnection->key = key;  }  else if(type == NFCT_MSG_DESTROY){    // clean up the connection buffer, etc.    string key = make_key(ct, flags);    if(l7_conntrack_handler->get_l7_connection(key)){      l7_conntrack_handler->remove_l7_connection(key);    }  }	  return 0;}l7_conntrack::~l7_conntrack() {  nfct_conntrack_free(ct);  nfct_close(cth);}l7_conntrack::l7_conntrack(void* l7_classifier_in) {  l7_classifier = (l7_classify *)l7_classifier_in;  // Conntrack stuff  int ret = 0, errors = 0;    // Now open a handler that is subscribed to all possible events  cth = nfct_open(CONNTRACK, NFCT_ALL_CT_GROUPS);  if (!cth) {    cerr << "Can't open handler\n";    errors++;    ret = -ENOENT;    nfct_conntrack_free(ct);    exit(1);  } }l7_connection *l7_conntrack::get_l7_connection(const string key) {  return l7_connections[key];}void l7_conntrack::add_l7_connection(l7_connection* connection, 					const string key) {  l7_connections[key] = connection;}void l7_conntrack::remove_l7_connection(const string key) {  delete l7_connections[key];  l7_connections.erase(l7_connections.find(key));}void l7_conntrack::start() {  int ret;  nfct_register_callback(cth, l7_handle_conntrack_event, (void *)this);  ret = nfct_event_conntrack(cth); // this is the main loop    nfct_close(cth);  nfct_conntrack_free(ct);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品欧美日韩精品一| 懂色中文一区二区在线播放| 欧美欧美欧美欧美| 日韩国产一二三区| 久久嫩草精品久久久精品| 成人av网站免费| 亚洲午夜激情av| 日韩女优av电影在线观看| 国产麻豆视频一区| 中文字幕一区二区三区四区| 欧美伊人久久久久久午夜久久久久| 亚洲综合男人的天堂| 91精品国产乱码久久蜜臀| 国产一区二区调教| 亚洲欧美偷拍三级| 欧美一二三区在线观看| 粉嫩aⅴ一区二区三区四区| 亚洲第一av色| 国产清纯在线一区二区www| 91久久精品一区二区| 韩国欧美一区二区| 亚洲另类色综合网站| 日韩女优毛片在线| 色综合色综合色综合色综合色综合| 日韩精品免费视频人成| 中文字幕电影一区| 69久久夜色精品国产69蝌蚪网| 国产91对白在线观看九色| 一区二区三区影院| 国产日韩欧美不卡在线| 欧美精品一二三| 东方aⅴ免费观看久久av| 日韩在线观看一区二区| 日韩伦理电影网| 日韩精品一区二区三区三区免费 | 久久综合九色综合欧美就去吻| 国产91丝袜在线18| 秋霞影院一区二区| 亚洲欧美激情小说另类| 久久这里只有精品首页| 91成人免费电影| 欧美精品一级二级| va亚洲va日韩不卡在线观看| 精一区二区三区| 亚洲国产精品一区二区久久 | 亚洲欧美在线观看| 久久久久久久久久久电影| 欧美绝品在线观看成人午夜影视| 不卡欧美aaaaa| 韩国v欧美v亚洲v日本v| 日本aⅴ亚洲精品中文乱码| 亚洲免费观看在线观看| 国产精品情趣视频| 久久久蜜桃精品| 欧美一区二区美女| 欧美日韩久久不卡| 在线看日本不卡| 91色porny在线视频| 国产激情精品久久久第一区二区 | 精品视频在线视频| 91在线视频18| 波多野结衣在线aⅴ中文字幕不卡| 激情六月婷婷久久| 另类小说欧美激情| 久久国产麻豆精品| 激情综合色播五月| 蜜臀久久久久久久| 欧美a级理论片| 日本中文在线一区| 日本视频免费一区| 捆绑调教一区二区三区| 裸体歌舞表演一区二区| 久久国产人妖系列| 久久99久久99| 国产成人精品一区二| 国产a区久久久| 国产99久久久国产精品潘金| 国产一区二区在线看| 国产精品自产自拍| 粉嫩久久99精品久久久久久夜| 成人一区二区在线观看| 成人av午夜电影| 在线视频国内一区二区| 欧美三级欧美一级| 日韩一区二区不卡| 久久久久九九视频| 国产精品视频一区二区三区不卡| 国产精品久久久久久久久免费樱桃| 亚洲欧洲日韩女同| 亚洲国产乱码最新视频 | 国产肉丝袜一区二区| 国产精品美女www爽爽爽| 亚洲免费在线电影| 亚洲国产视频一区| 精久久久久久久久久久| 成人午夜免费视频| 欧美午夜精品久久久久久超碰| 欧美精品精品一区| 久久久99久久| 一区二区三区成人| 久久99国产精品尤物| 成人av在线一区二区| 欧美日韩高清一区二区| 欧美精品一区二区三区在线| 中文字幕av一区二区三区免费看| 樱花影视一区二区| 麻豆精品新av中文字幕| av成人免费在线| 91精品国产色综合久久| 香蕉成人伊视频在线观看| 国产在线播精品第三| 色婷婷av一区二区三区之一色屋| 91精品国产色综合久久不卡电影 | 亚洲啪啪综合av一区二区三区| 午夜精品久久久| 国产成人精品免费看| 欧美丝袜丝nylons| 欧美国产激情二区三区| 亚洲丰满少妇videoshd| 成人一区二区三区中文字幕| 欧美日韩一区二区三区在线看| 久久久久高清精品| 午夜精品福利一区二区三区av | 樱花草国产18久久久久| 激情综合一区二区三区| 日本二三区不卡| xvideos.蜜桃一区二区| 亚洲国产一区二区在线播放| 国产成人午夜99999| 欧美一级生活片| 亚洲国产成人av好男人在线观看| 国产盗摄一区二区| 91精品国产乱| 亚洲成人免费观看| 91蝌蚪porny| 国产亚洲一区二区在线观看| 日韩电影在线一区二区三区| 色综合色综合色综合色综合色综合| 久久久亚洲精品一区二区三区| 首页国产欧美日韩丝袜| 在线观看国产91| 日韩伦理av电影| 国产福利视频一区二区三区| 欧美成人三级在线| 日韩国产在线观看一区| 欧美日韩小视频| 一区二区三区精品在线观看| 92精品国产成人观看免费| 欧美激情一区三区| 国产成人av影院| 精品va天堂亚洲国产| 免费成人在线观看视频| 欧美一区中文字幕| 天天综合网天天综合色| 欧美日韩高清在线| 亚洲成人免费视频| 欧美日本一区二区三区四区 | 精品国产麻豆免费人成网站| 日本中文字幕不卡| 欧美一级精品在线| 久久超级碰视频| 精品卡一卡二卡三卡四在线| 裸体在线国模精品偷拍| 日韩美女在线视频| 精品在线一区二区三区| 精品少妇一区二区三区| 激情综合色综合久久综合| 精品国产91九色蝌蚪| 国产在线播放一区二区三区| 国产午夜精品一区二区| 成人性视频免费网站| 国产精品色婷婷久久58| 色菇凉天天综合网| 亚洲成a人片在线观看中文| 欧美精品高清视频| 老司机免费视频一区二区| 精品国产一区二区三区四区四| 国产美女精品人人做人人爽| 欧美经典三级视频一区二区三区| 成人爱爱电影网址| 亚洲男同性视频| 精品婷婷伊人一区三区三| 免费成人在线影院| 日本一区二区电影| 在线欧美日韩国产| 免费在线看一区| 久久久久99精品国产片| 国产日韩欧美一区二区三区乱码| kk眼镜猥琐国模调教系列一区二区| 亚洲色图清纯唯美| 91精品蜜臀在线一区尤物| 国产在线视频一区二区| 亚洲人成影院在线观看| 欧美日韩精品久久久| 国产一区二区在线影院| 亚洲欧美视频在线观看视频| 日韩亚洲欧美在线观看| 粉嫩13p一区二区三区| 午夜精品久久久久影视| 久久久国产午夜精品|