From 8c906a2f229c11beaedfa5968b60133421bd0c6f Mon Sep 17 00:00:00 2001
From: Kevin Webb <kcwebb@ucsd.edu>
Date: Tue, 2 Dec 2008 21:07:43 +0000
Subject: [PATCH] Added a preprocessor option to limit exempt traffic and
 turned in on for now.

---
 drl/ulogd_DRL.c | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/drl/ulogd_DRL.c b/drl/ulogd_DRL.c
index bc82995..14de4fe 100644
--- a/drl/ulogd_DRL.c
+++ b/drl/ulogd_DRL.c
@@ -990,15 +990,6 @@ static int create_htb_hierarchy(drl_instance_t *instance) {
     }
     printlog(LOG_DEBUG, "HTB_cmd: %s\n", cmd);
 
-    /* Add back 1:20. */
-    sprintf(cmd, "/sbin/tc class add dev eth0 parent 1:1 classid 1:20 htb rate 8bit ceil 1000mbit");
-
-    if (execute_cmd(cmd)) {
-        return 1;
-    }
-    printlog(LOG_DEBUG, "HTB_cmd: %s\n", cmd);
-
-
     /* Add machines. */
     for (i = 0; i < instance->machine_count; ++i) {
         sprintf(cmd, "/sbin/tc class add dev eth0 parent 1:%x classid 1:%x htb rate 8bit ceil %lubit",
@@ -1012,6 +1003,25 @@ static int create_htb_hierarchy(drl_instance_t *instance) {
         printlog(LOG_DEBUG, "HTB_cmd: %s\n", cmd);
     }
 
+#define LIMITEXEMPT
+
+    /* Add back 1:20. */
+#ifdef LIMITEXEMPT
+    if (instance->last_machine == NULL) {
+        sprintf(cmd, "/sbin/tc class add dev eth0 parent 1:1 classid 1:20 htb rate 8bit ceil 1000mbit");
+    } else {
+        sprintf(cmd, "/sbin/tc class add dev eth0 parent 1:%x classid 1:20 htb rate 8bit ceil 1000mbit",
+            instance->last_machine->htb_node);
+    }
+#else
+    sprintf(cmd, "/sbin/tc class add dev eth0 parent 1:1 classid 1:20 htb rate 8bit ceil 1000mbit");
+#endif
+
+    if (execute_cmd(cmd)) {
+        return 1;
+    }
+    printlog(LOG_DEBUG, "HTB_cmd: %s\n", cmd);
+
     /* Add sets. */
     for (j = (instance->set_count - 1); j >= 0; --j) {
         sprintf(cmd, "/sbin/tc class add dev eth0 parent 1:%x classid 1:%x htb rate 8bit ceil %lubit",
@@ -1110,16 +1120,6 @@ static int create_htb_hierarchy(drl_instance_t *instance) {
     /* End delay testing */
 #endif
 
-//#define SFQTEST
-
-#ifdef SFQTEST
-    sprintf(cmd, "/sbin/tc qdisc del dev eth0 parent 1:1000 handle 1000 pfifo");
-    execute_cmd(cmd);
-
-    sprintf(cmd, "/sbin/tc qdisc replace dev eth0 parent 1:1000 handle 1000 sfq perturb 20");
-    execute_cmd(cmd);
-#endif
-
     return 0;
 }
 
-- 
2.47.0