package org.batfish.grammar.topology;
import org.batfish.datamodel.Edge;
import org.batfish.datamodel.Topology;
import org.batfish.datamodel.collections.EdgeSet;
import org.batfish.grammar.topology.GNS3TopologyParser.*;
public class GNS3TopologyExtractor extends GNS3TopologyParserBaseListener
implements TopologyExtractor {
private String _currentRouter;
private EdgeSet _edges;
private Topology _topology;
public GNS3TopologyExtractor() {
_edges = new EdgeSet();
}
private String convertInterfaceName(String shortName) {
return shortName.replace("f", "FastEthernet");
}
@Override
public void enterRouter_line(Router_lineContext ctx) {
_currentRouter = ctx.name.getText();
}
@Override
public void exitEdge_line(Edge_lineContext ctx) {
String int1 = convertInterfaceName(ctx.int1.getText());
String node2 = ctx.host2.getText();
String int2 = convertInterfaceName(ctx.int2.getText());
Edge edge = new Edge(_currentRouter, int1, node2, int2);
_edges.add(edge);
}
@Override
public void exitTopology(TopologyContext ctx) {
_topology = new Topology(_edges);
}
@Override
public Topology getTopology() {
return _topology;
}
}