Revision: 497
http://vde.svn.sourceforge.net/vde/?rev=497&view=rev
Author: danielel
Date: 2011-05-31 17:20:29 +0000 (Tue, 31 May 2011)
Log Message:
-----------
Moved delay calculation to when the packets enter outgoing queue.
Removed some fprintf.
Modified Paths:
--------------
branches/danielinux-wirefilter2/src/wirefilter.c
Modified: branches/danielinux-wirefilter2/src/wirefilter.c
===================================================================
--- branches/danielinux-wirefilter2/src/wirefilter.c 2011-05-30 05:39:05 UTC
(rev 496)
+++ branches/danielinux-wirefilter2/src/wirefilter.c 2011-05-31 17:20:29 UTC
(rev 497)
@@ -288,10 +288,40 @@
}
+static inline double max_wirevalue(int node,int tag, int dir)
+{
+ return (WFVAL(node,tag,dir).value + WFVAL(node,tag,dir).plus);
+}
+
+static inline double min_wirevalue(int node,int tag, int dir)
+{
+ return (WFVAL(node,tag,dir).value - WFVAL(node,tag,dir).plus);
+}
+
+static void initrand()
+{
+ struct timeval v;
+ gettimeofday(&v,NULL);
+ srand48(v.tv_sec ^ v.tv_usec ^ getpid());
+}
+
+void set_egres_delay(struct wf_packet *pkt)
+{
+ pkt->dequeue_time = 0U;
+ if (max_wirevalue(markov_current,DELAY,pkt->dir) > 0) {
+ double delval=compute_wirevalue(DELAY,pkt->dir);
+ if (delval > 0) {
+ unsigned long long now = gettimeofdayms();
+ pkt->dequeue_time = now + delval;
+ }
+ }
+}
+
static void pkt_enqueue_out(struct wf_packet *pkt)
{
struct wf_packet *q = wf_queue_out[pkt->dir];
queue_size_out[pkt->dir] += pkt->size;
+ set_egres_delay(pkt);
pkt->next = NULL;
if (!q) {
wf_queue_out[pkt->dir] = pkt;
@@ -520,24 +550,8 @@
}
-static inline double max_wirevalue(int node,int tag, int dir)
-{
- return (WFVAL(node,tag,dir).value + WFVAL(node,tag,dir).plus);
-}
-static inline double min_wirevalue(int node,int tag, int dir)
-{
- return (WFVAL(node,tag,dir).value - WFVAL(node,tag,dir).plus);
-}
-static void initrand()
-{
- struct timeval v;
- gettimeofday(&v,NULL);
- srand48(v.tv_sec ^ v.tv_usec ^ getpid());
-}
-
-
void printlog(int priority, const char *format, ...)
{
va_list arg;
@@ -677,7 +691,7 @@
}
static int max_q = 0;
if (!pkt->dir && queue_size_out[0] > max_q) {
- fprintf(stderr, "%llu, %lu\n", gettimeofdayms(),
queue_size_out[0]);
+ //fprintf(stderr, "%llu, %lu\n", gettimeofdayms(),
queue_size_out[0]);
max_q = queue_size_out[0];
}
/* NOISE */
@@ -726,17 +740,6 @@
return timetogo;
}
-void set_ingres_delay(struct wf_packet *pkt)
-{
- pkt->dequeue_time = 0U;
- if (max_wirevalue(markov_current,DELAY,pkt->dir) > 0) {
- double delval=compute_wirevalue(DELAY,pkt->dir);
- if (delval > 0) {
- unsigned long long now = gettimeofdayms();
- pkt->dequeue_time = now + delval;
- }
- }
-}
#define IS_TCP(x) ( x->size > 34 && x->payload[16] == 0x45 && x->payload[17]
== 0x00 && x->payload[25]==0x06 )
@@ -811,7 +814,6 @@
memcpy(pkt_in, pkt, sizeof(struct wf_packet));
} else
pkt_in = pkt;
- set_ingres_delay(pkt_in);
/* Mangle ACK with available window */
if ((adv_flow > 0) && IS_TCP(pkt_in)) {
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Data protection magic?
Nope - It's vRanger. Get your free trial download today.
http://p.sf.net/sfu/quest-sfdev2dev
_______________________________________________
vde-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vde-users