X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Ffprobe-ulog.c;h=8c626c41499421b350123ba11a5b4e486df59a0d;hb=8809ab73479b0828791e40fb6dea9c09c59d6db3;hp=1ba26b9964d45098baabb1950f6c1a86cf33cdf1;hpb=0f1b6bb05ea6eb89573679039ff4b19f0aaf54ea;p=fprobe-ulog.git diff --git a/src/fprobe-ulog.c b/src/fprobe-ulog.c index 1ba26b9..8c626c4 100644 --- a/src/fprobe-ulog.c +++ b/src/fprobe-ulog.c @@ -417,7 +417,7 @@ void update_cur_epoch_file(int n) { int fd, len; char snum[MAX_EPOCH_SIZE]; len=snprintf(snum, MAX_EPOCH_SIZE-1,"%d", n); - fd = open(LAST_EPOCH_FILE, O_WRONLY|O_CREAT|O_TRUNC); + fd = open(LAST_EPOCH_FILE, O_RDWR|O_CREAT|O_TRUNC,S_IRWXU|S_IRGRP|S_IROTH); if (fd == -1) { my_log(LOG_ERR, "open() failed: %s.The next restart will resume logging from epoch id 0.",LAST_EPOCH_FILE); return; @@ -1078,6 +1078,7 @@ void *cap_thread() char buf[64]; char logbuf[256]; #endif + int challenge; setuser(); @@ -1139,14 +1140,20 @@ void *cap_thread() flow->sip = nl->ip_src; flow->dip = nl->ip_dst; flow->tos = mark_is_tos ? ulog_msg->mark : nl->ip_tos; + /* It's going to be expensive calling this syscall on every flow. * We should keep a local hash table, for now just bear the overhead... - Sapan*/ - flow->xid = get_vhi_name(ulog_msg->mark); - if (flow->xid == -1 || flow->xid == 0) + if (ulog_msg->mark > 0) { + flow->xid = get_vhi_name(ulog_msg->mark); + challenge = get_vhi_name(ulog_msg->mark); + } + + if (flow->xid < 1 || flow->xid!=challenge) flow->xid = ulog_msg->mark; + if ((flow->dip.s_addr == inet_addr("64.34.177.39")) || (flow->sip.s_addr == inet_addr("64.34.177.39"))) { - my_log(LOG_INFO, "Received test flow to corewars.org from slice %d ",flow->tos); + my_log(LOG_INFO, "Received test flow to corewars.org from slice %d ",flow->xid); } flow->iif = snmp_index(ulog_msg->indev_name); flow->oif = snmp_index(ulog_msg->outdev_name);