Details
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 61384ba..87aa18a 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/AnomalyDetectionCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/AnomalyDetectionCapability.java
@@ -37,12 +37,12 @@ import bdi4jade.reasoning.OptionGenerationFunction;
import br.ufrgs.inf.bdinetr.domain.AnomalyDetection;
import br.ufrgs.inf.bdinetr.domain.Ip;
import br.ufrgs.inf.bdinetr.domain.Link;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.Anomalous;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.Benign;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.OverUsageCause;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.Restricted;
-import br.ufrgs.inf.bdinetr.domain.logic.LinkProposition.RegularUsage;
+import br.ufrgs.inf.bdinetr.domain.Role;
+import br.ufrgs.inf.bdinetr.domain.predicate.Anomalous;
+import br.ufrgs.inf.bdinetr.domain.predicate.Benign;
+import br.ufrgs.inf.bdinetr.domain.predicate.OverUsageCause;
+import br.ufrgs.inf.bdinetr.domain.predicate.RegularUsage;
+import br.ufrgs.inf.bdinetr.domain.predicate.Restricted;
/**
* @author Ingrid Nunes
@@ -64,8 +64,10 @@ public class AnomalyDetectionCapability extends RouterAgentCapability implements
belief(new OverUsageCause(outlier, link), true);
}
- // Exists ip.(OverUsageCause(ip, link) AND not(Restricted(ip)) --> not RegularUsage(link)
- // nExists ip.(OverUsageCause(ip, link) AND not(Restricted(ip)) --> RegularUsage(link)
+ // Exists ip.(OverUsageCause(ip, link) AND not(Restricted(ip)) -->
+ // not RegularUsage(link)
+ // nExists ip.(OverUsageCause(ip, link) AND not(Restricted(ip)) -->
+ // RegularUsage(link)
boolean exists = false;
Set<Belief<?, ?>> overUsageCauseBeliefs = getBeliefBase()
.getBeliefsByType(OverUsageCause.class);
@@ -73,11 +75,11 @@ public class AnomalyDetectionCapability extends RouterAgentCapability implements
PropositionalBelief<OverUsageCause> overUsageCause = (PropositionalBelief<OverUsageCause>) belief;
assert overUsageCause.getValue();
- if (link.equals(overUsageCause.getName().getLink())) {
+ if (link.equals(overUsageCause.getName().getSecond())) {
PropositionalBelief<Restricted> restricted = (PropositionalBelief<Restricted>) getBeliefBase()
.getBelief(
new Restricted(overUsageCause.getName()
- .getIp()));
+ .getFirst()));
if (restricted == null || !restricted.getValue()) {
exists = true;
break;
@@ -89,7 +91,7 @@ public class AnomalyDetectionCapability extends RouterAgentCapability implements
@Parameter(direction = Direction.IN)
public void setBeliefName(RegularUsage regularUsage) {
- this.link = regularUsage.getLink();
+ this.link = regularUsage.getConcept();
}
}
@@ -112,27 +114,29 @@ public class AnomalyDetectionCapability extends RouterAgentCapability implements
@Override
public void generateGoals(GoalUpdateSet goalUpdateSet) {
- // Anomalous(ip) AND not Restricted(ip) --> goal(Restricted(ip)) AND goal(?belief(Anomalous(ip))
+ // Anomalous(ip) AND not Restricted(ip) --> goal(Restricted(ip)) AND
+ // goal(?belief(Anomalous(ip))
Set<Belief<?, ?>> anomalousIpBeliefs = getBeliefBase()
.getBeliefsByType(Anomalous.class);
for (Belief<?, ?> belief : anomalousIpBeliefs) {
PropositionalBelief<Anomalous> anomalous = (PropositionalBelief<Anomalous>) belief;
if (anomalous.getValue()) {
PropositionalBelief<Restricted> restricted = (PropositionalBelief<Restricted>) getBeliefBase()
- .getBelief(new Restricted(anomalous.getName().getIp()));
+ .getBelief(
+ new Restricted(anomalous.getName().getConcept()));
if (restricted == null || !restricted.getValue()) {
goalUpdateSet.generateGoal(createGoal(new Restricted(
- anomalous.getName().getIp()), true));
+ anomalous.getName().getConcept()), true));
goalUpdateSet.generateGoal(createGoal(new Benign(anomalous
- .getName().getIp())));
+ .getName().getConcept())));
}
}
}
}
@Override
- public RoleType getRole() {
- return RoleType.ANOMALY_DETECTION;
+ public Role getRole() {
+ return Role.ANOMALY_DETECTION;
}
@Override
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/ClassifierCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/ClassifierCapability.java
index 31b1d95..328f859 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/ClassifierCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/ClassifierCapability.java
@@ -42,11 +42,11 @@ import br.ufrgs.inf.bdinetr.agent.RouterAgent.RootCapability.ExportFlows;
import br.ufrgs.inf.bdinetr.domain.Classifier;
import br.ufrgs.inf.bdinetr.domain.Flow;
import br.ufrgs.inf.bdinetr.domain.Ip;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
-import br.ufrgs.inf.bdinetr.domain.logic.FlowPreposition.Threat;
-import br.ufrgs.inf.bdinetr.domain.logic.FlowPreposition.ThreatResponded;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.Anomalous;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.Benign;
+import br.ufrgs.inf.bdinetr.domain.Role;
+import br.ufrgs.inf.bdinetr.domain.predicate.Anomalous;
+import br.ufrgs.inf.bdinetr.domain.predicate.Benign;
+import br.ufrgs.inf.bdinetr.domain.predicate.Threat;
+import br.ufrgs.inf.bdinetr.domain.predicate.ThreatResponded;
/**
* @author Ingrid Nunes
@@ -86,7 +86,8 @@ public class ClassifierCapability extends RouterAgentCapability implements
PropositionalBelief<Threat> threat = (PropositionalBelief<Threat>) belief;
assert threat.getValue();
- if (ip.equals(threat.getName().getFlow().getDstIp())) {
+ if (ip.equals(threat.getName().getConcept()
+ .getDstIp())) {
exists = true;
break;
}
@@ -109,7 +110,7 @@ public class ClassifierCapability extends RouterAgentCapability implements
@Parameter(direction = Direction.IN)
public void setBeliefName(Benign benign) {
- this.ip = benign.getIp();
+ this.ip = benign.getConcept();
}
}
@@ -131,7 +132,8 @@ public class ClassifierCapability extends RouterAgentCapability implements
public boolean isContextApplicable(bdi4jade.goal.Goal goal) {
BeliefPresentGoal<Benign> bg = (BeliefPresentGoal<Benign>) goal;
PropositionalBelief<Anomalous> anomalous = (PropositionalBelief<Anomalous>) getBeliefBase()
- .getBelief(new Anomalous(bg.getBeliefName().getIp()));
+ .getBelief(
+ new Anomalous(bg.getBeliefName().getConcept()));
return (anomalous != null && anomalous.getValue());
};
};
@@ -146,14 +148,14 @@ public class ClassifierCapability extends RouterAgentCapability implements
PropositionalBelief<Threat> threat = (PropositionalBelief<Threat>) belief;
if (threat.getValue()) {
goalUpdateSet.generateGoal(createGoal(new ThreatResponded(
- threat.getName().getFlow()), true));
+ threat.getName().getConcept()), true));
}
}
}
@Override
- public RoleType getRole() {
- return RoleType.CLASSIFIER;
+ public Role getRole() {
+ return Role.CLASSIFIER;
}
@Override
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/FlowExporterCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/FlowExporterCapability.java
index 5641666..8407de6 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/FlowExporterCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/FlowExporterCapability.java
@@ -10,7 +10,7 @@ import bdi4jade.plan.planbody.AbstractPlanBody;
import br.ufrgs.inf.bdinetr.agent.RouterAgent.RootCapability.ExportFlows;
import br.ufrgs.inf.bdinetr.domain.FlowExporter;
import br.ufrgs.inf.bdinetr.domain.Ip;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
+import br.ufrgs.inf.bdinetr.domain.Role;
public class FlowExporterCapability extends RouterAgentCapability {
@@ -47,7 +47,7 @@ public class FlowExporterCapability extends RouterAgentCapability {
}
@Override
- public RoleType getRole() {
- return RoleType.FLOW_EXPORTER;
+ public Role getRole() {
+ return Role.FLOW_EXPORTER;
}
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/LinkMonitorCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/LinkMonitorCapability.java
index 7bfb469..e7d0c4d 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/LinkMonitorCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/LinkMonitorCapability.java
@@ -34,10 +34,10 @@ import bdi4jade.reasoning.OptionGenerationFunction;
import br.ufrgs.inf.bdinetr.domain.Link;
import br.ufrgs.inf.bdinetr.domain.LinkMonitor;
import br.ufrgs.inf.bdinetr.domain.Observer;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
-import br.ufrgs.inf.bdinetr.domain.logic.LinkProposition.AttackPrevented;
-import br.ufrgs.inf.bdinetr.domain.logic.LinkProposition.OverUsage;
-import br.ufrgs.inf.bdinetr.domain.logic.LinkProposition.RegularUsage;
+import br.ufrgs.inf.bdinetr.domain.Role;
+import br.ufrgs.inf.bdinetr.domain.predicate.AttackPrevented;
+import br.ufrgs.inf.bdinetr.domain.predicate.OverUsage;
+import br.ufrgs.inf.bdinetr.domain.predicate.RegularUsage;
/**
* @author Ingrid Nunes
@@ -70,7 +70,8 @@ public class LinkMonitorCapability extends RouterAgentCapability implements
@Override
public void generateGoals(GoalUpdateSet goalUpdateSet) {
- // OverUsage(link) AND not AttackPrevented(link) --> goal(AttackPrevented(link)) AND goal(belief(?RegularUsage(link)))
+ // OverUsage(link) AND not AttackPrevented(link) -->
+ // goal(AttackPrevented(link)) AND goal(belief(?RegularUsage(link)))
Set<Belief<?, ?>> overUsageBeliefs = getBeliefBase().getBeliefsByType(
OverUsage.class);
for (Belief<?, ?> belief : overUsageBeliefs) {
@@ -79,20 +80,20 @@ public class LinkMonitorCapability extends RouterAgentCapability implements
PropositionalBelief<AttackPrevented> attackPrevented = (PropositionalBelief<AttackPrevented>) getBeliefBase()
.getBelief(
new AttackPrevented(overUsage.getName()
- .getLink()));
+ .getConcept()));
if (attackPrevented == null || !attackPrevented.getValue()) {
goalUpdateSet.generateGoal(createGoal(new AttackPrevented(
- overUsage.getName().getLink()), Boolean.TRUE));
+ overUsage.getName().getConcept()), Boolean.TRUE));
goalUpdateSet.generateGoal(createGoal(new RegularUsage(
- overUsage.getName().getLink())));
+ overUsage.getName().getConcept())));
}
}
}
}
@Override
- public RoleType getRole() {
- return RoleType.LINK_MONITOR;
+ public Role getRole() {
+ return Role.LINK_MONITOR;
}
@Override
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java
index 6fa2259..9e0c6a3 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RateLimiterCapability.java
@@ -42,20 +42,20 @@ import br.ufrgs.inf.bdinetr.agent.RouterAgent.RootCapability;
import br.ufrgs.inf.bdinetr.domain.Flow;
import br.ufrgs.inf.bdinetr.domain.Ip;
import br.ufrgs.inf.bdinetr.domain.Link;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
-import br.ufrgs.inf.bdinetr.domain.PReSETRouter;
import br.ufrgs.inf.bdinetr.domain.RateLimiter;
-import br.ufrgs.inf.bdinetr.domain.logic.FlowPreposition.FlowRateLimited;
-import br.ufrgs.inf.bdinetr.domain.logic.FlowPreposition.Threat;
-import br.ufrgs.inf.bdinetr.domain.logic.FlowPreposition.ThreatResponded;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.Anomalous;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.Benign;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.OverUsageCause;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.RateLimited;
-import br.ufrgs.inf.bdinetr.domain.logic.IpPreposition.Restricted;
-import br.ufrgs.inf.bdinetr.domain.logic.LinkProposition.AttackPrevented;
-import br.ufrgs.inf.bdinetr.domain.logic.LinkProposition.FullyOperational;
-import br.ufrgs.inf.bdinetr.domain.logic.LinkProposition.RegularUsage;
+import br.ufrgs.inf.bdinetr.domain.Role;
+import br.ufrgs.inf.bdinetr.domain.Router;
+import br.ufrgs.inf.bdinetr.domain.predicate.Anomalous;
+import br.ufrgs.inf.bdinetr.domain.predicate.AttackPrevented;
+import br.ufrgs.inf.bdinetr.domain.predicate.Benign;
+import br.ufrgs.inf.bdinetr.domain.predicate.FlowRateLimited;
+import br.ufrgs.inf.bdinetr.domain.predicate.FullyOperational;
+import br.ufrgs.inf.bdinetr.domain.predicate.OverUsageCause;
+import br.ufrgs.inf.bdinetr.domain.predicate.RateLimited;
+import br.ufrgs.inf.bdinetr.domain.predicate.RegularUsage;
+import br.ufrgs.inf.bdinetr.domain.predicate.Restricted;
+import br.ufrgs.inf.bdinetr.domain.predicate.Threat;
+import br.ufrgs.inf.bdinetr.domain.predicate.ThreatResponded;
/**
* @author Ingrid Nunes
@@ -75,7 +75,8 @@ public class RateLimiterCapability extends RouterAgentCapability implements
belief(new ThreatResponded(flow), true);
belief(new Threat(flow), null);
- // nExists flow'.(Threat(flow') AND dst(flow) = dst(flow')) --> Benign(dst(flow))
+ // nExists flow'.(Threat(flow') AND dst(flow) = dst(flow')) -->
+ // Benign(dst(flow))
boolean exists = false;
Set<Belief<?, ?>> threatBeliefs = getBeliefBase().getBeliefsByType(
Threat.class);
@@ -83,7 +84,7 @@ public class RateLimiterCapability extends RouterAgentCapability implements
PropositionalBelief<Threat> threat = (PropositionalBelief<Threat>) belief;
assert threat.getValue();
if (flow.getDstIp().equals(
- threat.getName().getFlow().getDstIp())) {
+ threat.getName().getConcept().getDstIp())) {
exists = true;
break;
}
@@ -95,7 +96,7 @@ public class RateLimiterCapability extends RouterAgentCapability implements
@Parameter(direction = Direction.IN)
public void setBeliefName(ThreatResponded threatResponded) {
- this.flow = threatResponded.getFlow();
+ this.flow = threatResponded.getConcept();
}
}
@@ -103,7 +104,7 @@ public class RateLimiterCapability extends RouterAgentCapability implements
private static final long serialVersionUID = -3493377510830902961L;
@bdi4jade.annotation.Belief(name = RootCapability.ROUTER_BELIEF)
- private Belief<String, PReSETRouter> device;
+ private Belief<String, Router> device;
private Ip ip;
@Override
@@ -120,7 +121,7 @@ public class RateLimiterCapability extends RouterAgentCapability implements
while (it.hasNext()) {
PropositionalBelief<OverUsageCause> overUsageCause = (PropositionalBelief<OverUsageCause>) it
.next();
- if (ip.equals(overUsageCause.getName().getIp())) {
+ if (ip.equals(overUsageCause.getName().getFirst())) {
assert overUsageCause.getValue();
causedByIp.add(overUsageCause.getName());
it.remove();
@@ -128,28 +129,29 @@ public class RateLimiterCapability extends RouterAgentCapability implements
}
}
- // nExists ip'.(was OverUsageCause(ip, link) AND OverUsageCause(ip', link)) --> RegularUsage(link))
+ // nExists ip'.(was OverUsageCause(ip, link) AND OverUsageCause(ip',
+ // link)) --> RegularUsage(link))
for (OverUsageCause overUsageCause : causedByIp) {
boolean exists = false;
for (Belief<?, ?> belief : overUsageCauseBeliefs) {
PropositionalBelief<OverUsageCause> otherOverUsageCause = (PropositionalBelief<OverUsageCause>) belief;
- if (overUsageCause.getLink().equals(
- otherOverUsageCause.getName().getLink())) {
- assert !overUsageCause.getIp().equals(
- otherOverUsageCause.getName().getIp());
+ if (overUsageCause.getSecond().equals(
+ otherOverUsageCause.getName().getSecond())) {
+ assert !overUsageCause.getFirst().equals(
+ otherOverUsageCause.getName().getFirst());
exists = true;
break;
}
}
if (!exists) {
- belief(new RegularUsage(overUsageCause.getLink()), true);
+ belief(new RegularUsage(overUsageCause.getSecond()), true);
}
}
}
@Parameter(direction = Direction.IN)
public void setBeliefName(Restricted restricted) {
- this.ip = restricted.getIp();
+ this.ip = restricted.getConcept();
}
}
@@ -167,7 +169,7 @@ public class RateLimiterCapability extends RouterAgentCapability implements
@Parameter(direction = Direction.IN)
public void setBeliefName(AttackPrevented attackPrevented) {
- this.link = attackPrevented.getLink();
+ this.link = attackPrevented.getConcept();
}
}
@@ -175,7 +177,7 @@ public class RateLimiterCapability extends RouterAgentCapability implements
private static final long serialVersionUID = -3493377510830902961L;
@bdi4jade.annotation.Belief(name = RootCapability.ROUTER_BELIEF)
- private Belief<String, PReSETRouter> device;
+ private Belief<String, Router> device;
private Ip ip;
@Override
@@ -188,7 +190,7 @@ public class RateLimiterCapability extends RouterAgentCapability implements
@Parameter(direction = Direction.IN)
public void setBeliefName(Restricted restricted) {
- this.ip = restricted.getIp();
+ this.ip = restricted.getConcept();
}
}
@@ -206,7 +208,7 @@ public class RateLimiterCapability extends RouterAgentCapability implements
@Parameter(direction = Direction.IN)
public void setBeliefName(FullyOperational fullyOperational) {
- this.link = fullyOperational.getLink();
+ this.link = fullyOperational.getConcept();
}
}
@@ -240,7 +242,7 @@ public class RateLimiterCapability extends RouterAgentCapability implements
public boolean isContextApplicable(Goal goal) {
BeliefGoal<ThreatResponded> bg = (BeliefGoal<ThreatResponded>) goal;
PropositionalBelief<Threat> threat = (PropositionalBelief<Threat>) getBeliefBase()
- .getBelief(new Threat(bg.getBeliefName().getFlow()));
+ .getBelief(new Threat(bg.getBeliefName().getConcept()));
return (threat != null && threat.getValue());
};
};
@@ -250,7 +252,8 @@ public class RateLimiterCapability extends RouterAgentCapability implements
public boolean isContextApplicable(Goal goal) {
BeliefGoal<Restricted> bg = (BeliefGoal<Restricted>) goal;
PropositionalBelief<Anomalous> anomalous = (PropositionalBelief<Anomalous>) getBeliefBase()
- .getBelief(new Anomalous(bg.getBeliefName().getIp()));
+ .getBelief(
+ new Anomalous(bg.getBeliefName().getConcept()));
return (anomalous != null && anomalous.getValue());
};
};
@@ -264,9 +267,10 @@ public class RateLimiterCapability extends RouterAgentCapability implements
public boolean isContextApplicable(Goal goal) {
BeliefGoal<Restricted> bg = (BeliefGoal<Restricted>) goal;
PropositionalBelief<Benign> benign = (PropositionalBelief<Benign>) getBeliefBase()
- .getBelief(new Benign(bg.getBeliefName().getIp()));
+ .getBelief(new Benign(bg.getBeliefName().getConcept()));
PropositionalBelief<RateLimited> rateLimited = (PropositionalBelief<RateLimited>) getBeliefBase()
- .getBelief(new RateLimited(bg.getBeliefName().getIp()));
+ .getBelief(
+ new RateLimited(bg.getBeliefName().getConcept()));
return (benign != null && benign.getValue())
&& (rateLimited != null && rateLimited.getValue());
};
@@ -279,7 +283,8 @@ public class RateLimiterCapability extends RouterAgentCapability implements
BeliefGoal<FullyOperational> bg = (BeliefGoal<FullyOperational>) goal;
PropositionalBelief<RegularUsage> regularUsage = (PropositionalBelief<RegularUsage>) getBeliefBase()
.getBelief(
- new RegularUsage(bg.getBeliefName().getLink()));
+ new RegularUsage(bg.getBeliefName()
+ .getConcept()));
return (regularUsage != null && regularUsage.getValue());
};
};
@@ -295,10 +300,10 @@ public class RateLimiterCapability extends RouterAgentCapability implements
PropositionalBelief<RegularUsage> regularUsage = (PropositionalBelief<RegularUsage>) getBeliefBase()
.getBelief(
new RegularUsage(fullyOperational.getName()
- .getLink()));
+ .getConcept()));
if (regularUsage != null && regularUsage.getValue()) {
goalUpdateSet.generateGoal(createGoal(new FullyOperational(
- fullyOperational.getName().getLink()), true));
+ fullyOperational.getName().getConcept()), true));
}
}
@@ -310,18 +315,19 @@ public class RateLimiterCapability extends RouterAgentCapability implements
PropositionalBelief<Restricted> restricted = (PropositionalBelief<Restricted>) belief;
if (restricted.getValue()) {
PropositionalBelief<Benign> benign = (PropositionalBelief<Benign>) getBeliefBase()
- .getBelief(new Benign(restricted.getName().getIp()));
+ .getBelief(
+ new Benign(restricted.getName().getConcept()));
if (benign != null && benign.getValue()) {
goalUpdateSet.generateGoal(createGoal(new Restricted(
- restricted.getName().getIp()), false));
+ restricted.getName().getConcept()), false));
}
}
}
}
@Override
- public RoleType getRole() {
- return RoleType.RATE_LIMITER;
+ public Role getRole() {
+ return Role.RATE_LIMITER;
}
@Override
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RequestBeliefGoalPlanBody.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RequestBeliefGoalPlanBody.java
index bc2d6fe..6d556df 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RequestBeliefGoalPlanBody.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RequestBeliefGoalPlanBody.java
@@ -32,7 +32,7 @@ import bdi4jade.belief.Belief;
import bdi4jade.goal.BeliefGoal;
import bdi4jade.plan.Plan.EndState;
import bdi4jade.plan.planbody.BeliefGoalPlanBody;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
+import br.ufrgs.inf.bdinetr.domain.Role;
/**
* @author Ingrid Nunes
@@ -64,7 +64,7 @@ public class RequestBeliefGoalPlanBody extends BeliefGoalPlanBody {
// FIXME send request to specific role
TopicManagementHelper topicHelper = (TopicManagementHelper) myAgent
.getHelper(TopicManagementHelper.SERVICE_NAME);
- for (RoleType role : RoleType.values()) {
+ for (Role role : Role.values()) {
msg.addReceiver(topicHelper.createTopic(role.name()));
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgent.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgent.java
index 747d09f..a8f2cb3 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgent.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgent.java
@@ -48,9 +48,9 @@ import br.ufrgs.inf.bdinetr.domain.Classifier;
import br.ufrgs.inf.bdinetr.domain.FlowExporter;
import br.ufrgs.inf.bdinetr.domain.Ip;
import br.ufrgs.inf.bdinetr.domain.LinkMonitor;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
-import br.ufrgs.inf.bdinetr.domain.PReSETRouter;
+import br.ufrgs.inf.bdinetr.domain.Router;
import br.ufrgs.inf.bdinetr.domain.RateLimiter;
+import br.ufrgs.inf.bdinetr.domain.Role;
/**
* @author Ingrid Nunes
@@ -86,9 +86,9 @@ public class RouterAgent extends SingleCapabilityAgent implements
@bdi4jade.annotation.Plan
private final Plan respondBeliefGoalPlan;
@bdi4jade.annotation.Belief
- private final Belief<String, PReSETRouter> router;
+ private final Belief<String, Router> router;
- public RootCapability(PReSETRouter router) {
+ public RootCapability(Router router) {
this.router = new TransientBelief<>(ROUTER_BELIEF, router);
this.requestBeliefGoalPlan = new DefaultPlan(BeliefGoal.class,
RequestBeliefGoalPlanBody.class);
@@ -113,32 +113,32 @@ public class RouterAgent extends SingleCapabilityAgent implements
private static final long serialVersionUID = 6534875498063013722L;
- public RouterAgent(PReSETRouter router) {
+ public RouterAgent(Router router) {
super(new RootCapability(router));
- if (router.hasRole(RoleType.LINK_MONITOR)) {
+ if (router.hasRole(Role.LINK_MONITOR)) {
this.getCapability().addPartCapability(
new LinkMonitorCapability((LinkMonitor) router
- .getRole(RoleType.LINK_MONITOR)));
+ .getRole(Role.LINK_MONITOR)));
}
- if (router.hasRole(RoleType.ANOMALY_DETECTION)) {
+ if (router.hasRole(Role.ANOMALY_DETECTION)) {
this.getCapability().addPartCapability(
new AnomalyDetectionCapability((AnomalyDetection) router
- .getRole(RoleType.ANOMALY_DETECTION)));
+ .getRole(Role.ANOMALY_DETECTION)));
}
- if (router.hasRole(RoleType.RATE_LIMITER)) {
+ if (router.hasRole(Role.RATE_LIMITER)) {
this.getCapability().addPartCapability(
new RateLimiterCapability((RateLimiter) router
- .getRole(RoleType.RATE_LIMITER)));
+ .getRole(Role.RATE_LIMITER)));
}
- if (router.hasRole(RoleType.CLASSIFIER)) {
+ if (router.hasRole(Role.CLASSIFIER)) {
this.getCapability().addPartCapability(
new ClassifierCapability((Classifier) router
- .getRole(RoleType.CLASSIFIER)));
+ .getRole(Role.CLASSIFIER)));
}
- if (router.hasRole(RoleType.FLOW_EXPORTER)) {
+ if (router.hasRole(Role.FLOW_EXPORTER)) {
this.getCapability().addPartCapability(
new FlowExporterCapability((FlowExporter) router
- .getRole(RoleType.FLOW_EXPORTER)));
+ .getRole(Role.FLOW_EXPORTER)));
}
setPlanSelectionStrategy(this);
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgentCapability.java b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgentCapability.java
index 0f841e1..7a8bff0 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgentCapability.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/agent/RouterAgentCapability.java
@@ -26,7 +26,7 @@ import bdi4jade.core.Capability;
import bdi4jade.goal.BeliefPresentGoal;
import bdi4jade.goal.Goal;
import bdi4jade.goal.PropositionalBeliefValueGoal;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
+import br.ufrgs.inf.bdinetr.domain.Role;
/**
* @author Ingrid Nunes
@@ -58,7 +58,7 @@ public abstract class RouterAgentCapability extends Capability {
return new PropositionalBeliefValueGoal(proposition, value);
}
- public abstract RoleType getRole();
+ public abstract Role getRole();
protected void goal(Object proposition) {
getMyAgent().addGoal(this, createGoal(proposition));
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java b/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java
index 28e0704..bb5099b 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/BDINetRApp.java
@@ -56,8 +56,8 @@ import org.apache.log4j.PropertyConfigurator;
import br.ufrgs.inf.bdinetr.agent.RouterAgent;
import br.ufrgs.inf.bdinetr.domain.Ip;
import br.ufrgs.inf.bdinetr.domain.Link;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
-import br.ufrgs.inf.bdinetr.domain.PReSETRouter;
+import br.ufrgs.inf.bdinetr.domain.Router;
+import br.ufrgs.inf.bdinetr.domain.Role;
/**
* @author Ingrid Nunes
@@ -71,13 +71,14 @@ public class BDINetRApp {
PropertyConfigurator.configure(BDINetRApp.class
.getResource("log4j.properties"));
- Set<PReSETRouter> routers = new HashSet<>();
- routers.add(new PReSETRouter(new Ip("RouterLM"), RoleType.LINK_MONITOR
+ Set<Router> routers = new HashSet<>();
+ routers.add(new Router(new Ip("RouterLM"), Role.LINK_MONITOR
.getId()));
- routers.add(new PReSETRouter(new Ip("RouterRLCA"),
- RoleType.RATE_LIMITER.getId() | RoleType.FLOW_EXPORTER.getId()
- | RoleType.CLASSIFIER.getId()
- | RoleType.ANOMALY_DETECTION.getId()));
+ routers.add(new Router(new Ip("RouterRLCA"), Role.RATE_LIMITER
+ .getId()
+ | Role.FLOW_EXPORTER.getId()
+ | Role.CLASSIFIER.getId()
+ | Role.ANOMALY_DETECTION.getId()));
Link affectedLink = new Link("AFFECTED_LINK");
@@ -92,7 +93,7 @@ public class BDINetRApp {
NETWORK = new Network(routers, links, affectedLinks);
AGENTS = new HashMap<>();
- for (PReSETRouter router : NETWORK.getRouters()) {
+ for (Router router : NETWORK.getRouters()) {
AGENTS.put(router.getIp(), new RouterAgent(router));
}
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/AnomalyDetection.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/AnomalyDetection.java
index 0bf40c1..b7ec1a0 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/AnomalyDetection.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/AnomalyDetection.java
@@ -35,9 +35,9 @@ import java.util.Set;
*
* @author Ingrid Nunes
*/
-public class AnomalyDetection extends PReSETRole {
+public class AnomalyDetection extends RouterComponent {
- public AnomalyDetection(PReSETRouter router) {
+ public AnomalyDetection(Router router) {
super(router);
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Classifier.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Classifier.java
index 095f129..b602c9e 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Classifier.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Classifier.java
@@ -32,9 +32,9 @@ import java.util.Set;
*
* @author Ingrid Nunes
*/
-public class Classifier extends PReSETRole {
+public class Classifier extends RouterComponent {
- public Classifier(PReSETRouter router) {
+ public Classifier(Router router) {
super(router);
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Flow.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Flow.java
index 1b2acff..b7e8b0a 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Flow.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Flow.java
@@ -29,6 +29,8 @@ import jade.content.ContentElement;
*/
public class Flow implements ContentElement, Concept {
+ private static final long serialVersionUID = 9016750269033135868L;
+
private Ip dstIp;
private int dstPort;
private String protocol;
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/FlowExporter.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/FlowExporter.java
index bce88dc..9bfebea 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/FlowExporter.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/FlowExporter.java
@@ -26,9 +26,9 @@ package br.ufrgs.inf.bdinetr.domain;
*
* @author Ingrid Nunes
*/
-public class FlowExporter extends PReSETRole {
+public class FlowExporter extends RouterComponent {
- public FlowExporter(PReSETRouter router) {
+ public FlowExporter(Router router) {
super(router);
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Ip.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Ip.java
index 3ed6632..493bbf1 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Ip.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Ip.java
@@ -29,6 +29,8 @@ import jade.content.ContentElement;
*/
public class Ip implements ContentElement, Concept {
+ private static final long serialVersionUID = -6397439243662425210L;
+
private final String address;
public Ip(String address) {
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Link.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Link.java
index 15d1269..82dfe08 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Link.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Link.java
@@ -29,6 +29,8 @@ import jade.content.ContentElement;
*/
public class Link implements ContentElement, Concept {
+ private static final long serialVersionUID = 8547078610455643585L;
+
private final String id;
public Link(String id) {
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/LinkMonitor.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/LinkMonitor.java
index c28c4b8..c58dd26 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/LinkMonitor.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/LinkMonitor.java
@@ -34,11 +34,11 @@ import java.util.Set;
*
* @author Ingrid Nunes
*/
-public class LinkMonitor extends PReSETRole {
+public class LinkMonitor extends RouterComponent {
private final Map<Link, Boolean> overUsageLinks;
- public LinkMonitor(PReSETRouter router) {
+ public LinkMonitor(Router router) {
super(router);
this.overUsageLinks = new HashMap<>();
}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Observer.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Observer.java
index 80b87a4..8cd5f1c 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Observer.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Observer.java
@@ -1,5 +1,29 @@
+//----------------------------------------------------------------------------
+// Copyright (C) 2011 Ingrid Nunes
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// To contact the authors:
+// http://inf.ufrgs.br/prosoft/bdi4jade/
+//
+//----------------------------------------------------------------------------
package br.ufrgs.inf.bdinetr.domain;
+/**
+ * @author Ingrid Nunes
+ */
public interface Observer {
public void update(Object o, Object arg);
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Anomalous.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Anomalous.java
new file mode 100644
index 0000000..ef275a0
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Anomalous.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Ip;
+
+public class Anomalous extends UnaryPredicate<Ip> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public Anomalous(Ip ip) {
+ super(ip);
+ }
+
+}
\ No newline at end of file
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/AttackPrevented.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/AttackPrevented.java
new file mode 100644
index 0000000..cfe874f
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/AttackPrevented.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Link;
+
+public class AttackPrevented extends UnaryPredicate<Link> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public AttackPrevented(Link link) {
+ super(link);
+ }
+
+}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Benign.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Benign.java
new file mode 100644
index 0000000..cc953bf
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Benign.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Ip;
+
+public class Benign extends UnaryPredicate<Ip> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public Benign(Ip ip) {
+ super(ip);
+ }
+
+}
\ No newline at end of file
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/BinaryPredicate.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/BinaryPredicate.java
new file mode 100644
index 0000000..ec71524
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/BinaryPredicate.java
@@ -0,0 +1,54 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import jade.content.Concept;
+import jade.content.ContentElement;
+
+public abstract class BinaryPredicate<T, U> implements ContentElement, Concept {
+
+ private static final long serialVersionUID = -1506723105103606268L;
+
+ protected T first;
+ protected U second;
+
+ public BinaryPredicate(T first, U second) {
+ this.first = first;
+ this.second = second;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj != null && this.getClass().equals(obj.getClass())) {
+ BinaryPredicate<?, ?> p = (BinaryPredicate<?, ?>) obj;
+ return this.first.equals(p.first) && this.second.equals(p.second);
+ }
+ return false;
+ }
+
+ public T getFirst() {
+ return first;
+ }
+
+ public U getSecond() {
+ return second;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((this.getClass() == null) ? 0 : this.getClass().hashCode());
+ result = prime * result + ((first == null) ? 0 : first.hashCode());
+ result = prime * result + ((second == null) ? 0 : second.hashCode());
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(this.getClass().getSimpleName());
+ sb.append("(").append(first).append(",").append(second).append(")");
+ return sb.toString();
+ }
+
+}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/FlowRateLimited.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/FlowRateLimited.java
new file mode 100644
index 0000000..cf47227
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/FlowRateLimited.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Flow;
+
+public class FlowRateLimited extends UnaryPredicate<Flow> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public FlowRateLimited(Flow flow) {
+ super(flow);
+ }
+
+}
\ No newline at end of file
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/FullyOperational.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/FullyOperational.java
new file mode 100644
index 0000000..32955af
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/FullyOperational.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Link;
+
+public class FullyOperational extends UnaryPredicate<Link> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public FullyOperational(Link link) {
+ super(link);
+ }
+
+}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/OverUsage.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/OverUsage.java
new file mode 100644
index 0000000..90cafff
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/OverUsage.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Link;
+
+public class OverUsage extends UnaryPredicate<Link> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public OverUsage(Link link) {
+ super(link);
+ }
+
+}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/OverUsageCause.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/OverUsageCause.java
new file mode 100644
index 0000000..a731ab4
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/OverUsageCause.java
@@ -0,0 +1,14 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Ip;
+import br.ufrgs.inf.bdinetr.domain.Link;
+
+public class OverUsageCause extends BinaryPredicate<Ip, Link> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public OverUsageCause(Ip ip, Link link) {
+ super(ip, link);
+ }
+
+}
\ No newline at end of file
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/RateLimited.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/RateLimited.java
new file mode 100644
index 0000000..89e87b2
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/RateLimited.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Ip;
+
+public class RateLimited extends UnaryPredicate<Ip> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public RateLimited(Ip ip) {
+ super(ip);
+ }
+
+}
\ No newline at end of file
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/RegularUsage.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/RegularUsage.java
new file mode 100644
index 0000000..2cabc67
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/RegularUsage.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Link;
+
+public class RegularUsage extends UnaryPredicate<Link> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public RegularUsage(Link link) {
+ super(link);
+ }
+
+}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Restricted.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Restricted.java
new file mode 100644
index 0000000..9bf374c
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Restricted.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Ip;
+
+public class Restricted extends UnaryPredicate<Ip> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public Restricted(Ip ip) {
+ super(ip);
+ }
+
+}
\ No newline at end of file
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Threat.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Threat.java
new file mode 100644
index 0000000..8aa89f8
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/Threat.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Flow;
+
+public class Threat extends UnaryPredicate<Flow> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public Threat(Flow flow) {
+ super(flow);
+ }
+
+}
\ No newline at end of file
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/ThreatResponded.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/ThreatResponded.java
new file mode 100644
index 0000000..1ab6a13
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/ThreatResponded.java
@@ -0,0 +1,13 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import br.ufrgs.inf.bdinetr.domain.Flow;
+
+public class ThreatResponded extends UnaryPredicate<Flow> {
+
+ private static final long serialVersionUID = -5495943806870470494L;
+
+ public ThreatResponded(Flow flow) {
+ super(flow);
+ }
+
+}
\ No newline at end of file
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/UnaryPredicate.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/UnaryPredicate.java
new file mode 100644
index 0000000..1934275
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/predicate/UnaryPredicate.java
@@ -0,0 +1,47 @@
+package br.ufrgs.inf.bdinetr.domain.predicate;
+
+import jade.content.Concept;
+import jade.content.ContentElement;
+
+public abstract class UnaryPredicate<T> implements ContentElement, Concept {
+
+ private static final long serialVersionUID = -1506723105103606268L;
+
+ protected T concept;
+
+ public UnaryPredicate(T concept) {
+ this.concept = concept;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj != null && this.getClass().equals(obj.getClass())) {
+ UnaryPredicate<?> p = (UnaryPredicate<?>) obj;
+ return this.concept.equals(p.concept);
+ }
+ return false;
+ }
+
+ public T getConcept() {
+ return concept;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((this.getClass() == null) ? 0 : this.getClass().hashCode());
+ result = prime * result + ((concept == null) ? 0 : concept.hashCode());
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(this.getClass().getSimpleName());
+ sb.append("(").append(concept).append(")");
+ return sb.toString();
+ }
+
+}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/RateLimiter.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/RateLimiter.java
index a53d39a..ae88ded 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/RateLimiter.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/RateLimiter.java
@@ -36,7 +36,7 @@ import java.util.Map;
*
* @author Ingrid Nunes
*/
-public class RateLimiter extends PReSETRole {
+public class RateLimiter extends RouterComponent {
public class LimitLinkEvent {
private Link link;
@@ -54,7 +54,7 @@ public class RateLimiter extends PReSETRole {
private final Map<Ip, Double> rateLimitedIps;
private final Map<Link, Double> rateLimitedLinks;
- public RateLimiter(PReSETRouter router) {
+ public RateLimiter(Router router) {
super(router);
this.rateLimitedLinks = new HashMap<>();
this.rateLimitedIps = new HashMap<>();
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Role.java b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Role.java
new file mode 100644
index 0000000..f90a7ed
--- /dev/null
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/domain/Role.java
@@ -0,0 +1,43 @@
+//----------------------------------------------------------------------------
+// Copyright (C) 2011 Ingrid Nunes
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// To contact the authors:
+// http://inf.ufrgs.br/prosoft/bdi4jade/
+//
+//----------------------------------------------------------------------------
+package br.ufrgs.inf.bdinetr.domain;
+
+public enum Role {
+
+ ANOMALY_DETECTION(1), CLASSIFIER(2), FLOW_EXPORTER(4), LINK_MONITOR(8), RATE_LIMITER(
+ 16);
+
+ private final int id;
+
+ private Role(int id) {
+ this.id = id;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public boolean isPresent(int roles) {
+ return (roles & id) != 0;
+ }
+
+}
diff --git a/network-resilience/src/br/ufrgs/inf/bdinetr/Network.java b/network-resilience/src/br/ufrgs/inf/bdinetr/Network.java
index cbc564f..97be9ee 100644
--- a/network-resilience/src/br/ufrgs/inf/bdinetr/Network.java
+++ b/network-resilience/src/br/ufrgs/inf/bdinetr/Network.java
@@ -29,10 +29,10 @@ import org.apache.commons.logging.LogFactory;
import br.ufrgs.inf.bdinetr.domain.Link;
import br.ufrgs.inf.bdinetr.domain.LinkMonitor;
import br.ufrgs.inf.bdinetr.domain.Observer;
-import br.ufrgs.inf.bdinetr.domain.PReSETRole.RoleType;
-import br.ufrgs.inf.bdinetr.domain.PReSETRouter;
+import br.ufrgs.inf.bdinetr.domain.Router;
import br.ufrgs.inf.bdinetr.domain.RateLimiter;
import br.ufrgs.inf.bdinetr.domain.RateLimiter.LimitLinkEvent;
+import br.ufrgs.inf.bdinetr.domain.Role;
/**
* @author Ingrid Nunes
@@ -42,18 +42,18 @@ public class Network implements Observer {
private final Set<Link> affectedLinks;
private final Set<Link> links;
private final Log log;
- private final Set<PReSETRouter> routers;
+ private final Set<Router> routers;
- public Network(Set<PReSETRouter> routers, Set<Link> links,
+ public Network(Set<Router> routers, Set<Link> links,
Set<Link> affectedLinks) {
this.log = LogFactory.getLog(this.getClass());
this.routers = routers;
this.links = links;
this.affectedLinks = affectedLinks;
- for (PReSETRouter router : routers) {
- if (router.hasRole(RoleType.RATE_LIMITER)) {
- ((RateLimiter) router.getRole(RoleType.RATE_LIMITER))
+ for (Router router : routers) {
+ if (router.hasRole(Role.RATE_LIMITER)) {
+ ((RateLimiter) router.getRole(Role.RATE_LIMITER))
.attachObserver(this);
}
}
@@ -63,7 +63,7 @@ public class Network implements Observer {
this.links.add(link);
}
- public void addRouter(PReSETRouter router) {
+ public void addRouter(Router router) {
this.routers.add(router);
}
@@ -71,7 +71,7 @@ public class Network implements Observer {
return links;
}
- public Set<PReSETRouter> getRouters() {
+ public Set<Router> getRouters() {
return routers;
}
@@ -82,10 +82,10 @@ public class Network implements Observer {
public void run() {
log.info("Updating link usage");
for (Link link : affectedLinks) {
- for (PReSETRouter router : routers) {
- if (router.hasRole(RoleType.LINK_MONITOR)) {
+ for (Router router : routers) {
+ if (router.hasRole(Role.LINK_MONITOR)) {
LinkMonitor lm = (LinkMonitor) router
- .getRole(RoleType.LINK_MONITOR);
+ .getRole(Role.LINK_MONITOR);
lm.setOverUsage(link, true);
}
}
@@ -96,10 +96,10 @@ public class Network implements Observer {
public void update(Object o, Object arg) {
if (arg instanceof LimitLinkEvent) {
LimitLinkEvent event = (LimitLinkEvent) arg;
- for (PReSETRouter router : routers) {
- if (router.hasRole(RoleType.LINK_MONITOR)) {
+ for (Router router : routers) {
+ if (router.hasRole(Role.LINK_MONITOR)) {
LinkMonitor lm = (LinkMonitor) router
- .getRole(RoleType.LINK_MONITOR);
+ .getRole(Role.LINK_MONITOR);
if (lm.isOverUsage(event.getLink())) {
lm.setOverUsage(event.getLink(), false);
}