bdi-network-resilience

Details

diff --git a/network-resilience/.classpath b/network-resilience/.classpath
index 0f45fde..0d9993f 100644
--- a/network-resilience/.classpath
+++ b/network-resilience/.classpath
@@ -11,5 +11,6 @@
 	<classpathentry kind="lib" path="lib/xmlrpc-client-3.1.3.jar"/>
 	<classpathentry kind="lib" path="lib/xmlrpc-common-3.1.3.jar"/>
 	<classpathentry kind="lib" path="lib/xmlrpc-server-3.1.3.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/bdi-jade-extensions"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/AnomalyDetectionCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/AnomalyDetectionCapability.java
index b5bc5ef..8612756 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/AnomalyDetectionCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/AnomalyDetectionCapability.java
@@ -249,8 +249,8 @@ public class AnomalyDetectionCapability extends RouterAgentCapability implements
 						.getBelief(new Restricted(ip));
 				if ((benign == null || !benign.getValue())
 						&& (restricted == null || !restricted.getValue())) {
-					// Anomalous(l) AND !(not Benign(l)) AND
-					// !(Restricted(l)) --> AttackPrevented(l)
+					// Anomalous(ip) AND !(not Benign(l)) AND
+					// !(Restricted(l)) --> Restricted(ip)
 					goal(goalUpdateSet, new Restricted(ip), true);
 				}
 			}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSAgent.java b/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSAgent.java
new file mode 100644
index 0000000..277fa0e
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSAgent.java
@@ -0,0 +1,27 @@
+package br.ufrgs.inf.bdinetr.palliative;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import bdi4jade.core.SingleCapabilityAgent;
+import br.ufrgs.inf.bdinetr.agent.RouterAgent;
+import br.ufrgs.inf.bdinetr.domain.Router;
+import br.ufrgs.inf.bdinetr.domain.ontology.BDINetROntology;
+import jade.content.lang.sl.SLCodec;
+
+public class BDI2DoSAgent extends SingleCapabilityAgent {
+
+	private static final Log log = LogFactory.getLog(RouterAgent.class);
+	private static final long serialVersionUID = 6534875498063013722L;
+
+	public BDI2DoSAgent(Router router) {
+		super(new BDI2DoSCapability(router));
+	}
+
+	@Override
+	protected void init() {
+		getContentManager().registerLanguage(new SLCodec());
+		getContentManager().registerOntology(BDINetROntology.getInstance());
+	}
+
+}
\ No newline at end of file
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSCapability.java
new file mode 100644
index 0000000..adcd1bf
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/palliative/BDI2DoSCapability.java
@@ -0,0 +1,51 @@
+package br.ufrgs.inf.bdinetr.palliative;
+
+import bdi4jade.belief.Belief;
+import bdi4jade.belief.TransientBelief;
+import bdi4jade.extension.palliative.PalliativeCapability;
+import br.ufrgs.inf.bdinetr.agent.FlowExporterCapability;
+import br.ufrgs.inf.bdinetr.agent.RateLimiterCapability;
+import br.ufrgs.inf.bdinetr.domain.AnomalyDetection;
+import br.ufrgs.inf.bdinetr.domain.Classifier;
+import br.ufrgs.inf.bdinetr.domain.FlowExporter;
+import br.ufrgs.inf.bdinetr.domain.LinkMonitor;
+import br.ufrgs.inf.bdinetr.domain.RateLimiter;
+import br.ufrgs.inf.bdinetr.domain.Role;
+import br.ufrgs.inf.bdinetr.domain.Router;
+
+public class BDI2DoSCapability extends PalliativeCapability {
+
+	public static final String ROUTER_BELIEF = "router";
+	private static final long serialVersionUID = 4633237702870865396L;
+
+	@bdi4jade.annotation.Belief
+	private final Belief<String, Router> router;
+
+	public BDI2DoSCapability(Router router) {
+		this.router = new TransientBelief<>(ROUTER_BELIEF, router);
+
+		addPartCapability(new RateLimiterCapability(getRateLimiter()));
+		addPartCapability(new FlowExporterCapability(getFlowExporter()));
+	}
+
+	private LinkMonitor getLinkMonitor() {
+		return (LinkMonitor) router.getValue().getRole(Role.LINK_MONITOR);
+	}
+
+	private RateLimiter getRateLimiter() {
+		return (RateLimiter) router.getValue().getRole(Role.RATE_LIMITER);
+	}
+
+	private FlowExporter getFlowExporter() {
+		return (FlowExporter) router.getValue().getRole(Role.FLOW_EXPORTER);
+	}
+
+	private Classifier getClassifier() {
+		return (Classifier) router.getValue().getRole(Role.CLASSIFIER);
+	}
+
+	private AnomalyDetection getAnomalyDetection() {
+		return (AnomalyDetection) router.getValue().getRole(Role.ANOMALY_DETECTION);
+	}
+
+}