anchor.diff:                    routerToEsb <- cbgpExport pi routerToEsb peer acts
                     routerToEsb <- addRuleToPeer peer routerToEsb exitStr
   
  -let getCBGPConfig (config : T) (vertex: CGraph.CgState) (routerNameToIp : Map<String, String>) =
  +let getCBGPConfig (config : T) (vertex: CGraph.CgState) (routerNameToIp : Map<string, string>) =
     let routerConfig = Map.find vertex.Node.Loc config.RConfigs
     let ti = config.PolInfo.Ast.TopoInfo
     let routerName = Topology.router vertex.Node.Loc ti
  
positive.code:       for f in fs do
           i <- i + 1
           match f with
           | Deny -> let denystr = "\n        add-rule" +
            "\n            match \"prefix in " + predStr + "\"" +
            "\n            action deny" + exitStr
            Map.map (fun k v -> bprintf v denystr) routerToEsb
           | Allow((m, lp), es) -> 
              let comm = 23768 - i
              routerToIsb <- cbgpImport pi routerToISb (m, lp) comm predStr
              let matchStr = sprintf ("\n        add-rule" +
            "\n            match \"community is %d\"") comm
              match es with
              | [ (peer, acts) ] -> 
                routerToEsb <- addRuleToPeer peer routerToEsb matchStr
  
negative.code:     getCBGPActions sb config.PolInfo pred actions routerNameToIp router
  
    for kv in routerToEsb do
      let peer = kv.Key 
      bprintf sb ("\n bgp router " + routerIp + " peer " + peer)
      bprintf sb "\n    filter out"
      bprintf sb kv.Value
      bprintf sb "\n    filter in"
      bprintf sb (Map.find routerToIsb peer)
    bprintf sb "\n\n"
  