Fix batfish upgrade bugs

Issue #14 resolved
Ruchit Shrestha created an issue

[In isAdvertisementFiltered() function in DirectedEdge.java]For source process of type BGP, no peer exists. (_neighbor map has no matching key)

Exception in thread "main" java.lang.NullPointerException
    at edu.wisc.cs.arc.graphs.DirectedEdge.isAdvertisementFiltered(DirectedEdge.java:201)
    at edu.wisc.cs.arc.graphs.ProcessGraph.applyRouteFilters(ProcessGraph.java:822)
    at edu.wisc.cs.arc.graphs.ProcessGraph.filterEdgesAndVertices(ProcessGraph.java:1016)
    at edu.wisc.cs.arc.graphs.ExtendedTopologyGraph.customize(ExtendedTopologyGraph.java:165)
    at edu.wisc.cs.arc.graphs.ProcessGraph.customize(ProcessGraph.java:851)
    at edu.wisc.cs.arc.Driver.generateFlowETGs(Driver.java:552)
    at edu.wisc.cs.arc.Driver.main(Driver.java:208)

This causes failure of bgpospfchains, routemap and bgp_length test cases.

Dealing with unused ACLs:

globalrib fails because of unused ACLS in B.cfg (works if ACLs are removed from config file). Error occurs in batfish.vendor.VendorConfiguration.unused.

Exception in thread "main" java.lang.NullPointerException
    at org.batfish.vendor.VendorConfiguration.unused(VendorConfiguration.java:161)
    at org.batfish.representation.cisco.CiscoConfiguration.warnUnusedIpAccessLists(CiscoConfiguration.java:3290)
    at org.batfish.representation.cisco.CiscoConfiguration.toVendorIndependentConfiguration(CiscoConfiguration.java:3112)
    at edu.wisc.cs.arc.configs.ConfigurationParser.convertConfigurations(ConfigurationParser.java:311)
    at edu.wisc.cs.arc.configs.ConfigurationParser.parse(ConfigurationParser.java:131)
    at edu.wisc.cs.arc.Driver.main(Driver.java:101)

external fails because there is no outgoing edge from a BGP.IN node in any of the flowETGs. (So there is a mismatch in the edge list of BGP.IN vertex)

fat-trees, single_ospf and repair_local-vs-global tests pass successfully.

I also tried fixing another bug in advertisesBgp() function in Process.java to emulate the changes you made in advertisesOspf() function. I doubt that this is a complete or valid fix

Comments (8)

  1. Aaron Gember-Jacobson
    • changed status to open

    bgpospfchains is still buggy due to improper construction of the instance graph. Need to try switching back to BGP processes being identified by AS number and reverting the replacements on the corresponding test graphs.

  2. Aaron Gember-Jacobson

    Passing examples:

    • bgpospfchains
    • fat-tree-ospf-2
    • fat-tree-ospf-4
    • repair_local-vs-global
    • single_ospf
    • vlan

    Failing examples:

    • bgp_length: extra vertices
    • external
    • fat-tree-ospf-2-broken: extra vertices
    • fat-tree-ospf-4-broken: extra vertices
    • routemap: extra vertices

    Unfixable (due to Batfish not supporting multiple OSPF processes per VRF):

    • globalrib
    • ospf1_ospf2_redist-bypass
    • ospf1_ospf2_redist-take
    • ospf1_ospf2_selectlgi-bypass
    • ospf1_ospf2_select-override
    • twoospf
  3. Log in to comment