Search in sources :

Example 81 with Bgp

use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp in project netvirt by opendaylight.

the class ConfigureBgpCli method getAsNumber.

public long getAsNumber(String nbrIp) {
    Bgp conf = bgpManager.getConfig();
    if (conf == null) {
        return -1;
    }
    List<Neighbors> nbrs = conf.getNeighbors();
    if (nbrs == null) {
        return -1;
    }
    for (Neighbors nbr : nbrs) {
        if (nbrIp.equals(nbr.getAddress().getValue())) {
            return nbr.getRemoteAs();
        }
    }
    return -1;
}
Also used : Neighbors(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.Neighbors) Bgp(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp)

Example 82 with Bgp

use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp in project netvirt by opendaylight.

the class Cache method doExecute.

@SuppressWarnings("resource")
@Override
protected Object doExecute() {
    boolean listVrfs = false;
    boolean listNets = false;
    PrintStream ps = session.getConsole();
    if (action != null) {
        return usage();
    }
    PrintStream fileStream = null;
    if (ofile != null) {
        try {
            fileStream = new PrintStream(ofile);
            ps = fileStream;
        } catch (FileNotFoundException e) {
            session.getConsole().println("error: cannot create file " + ofile + "; exception: " + e);
            return null;
        }
    }
    if (list != null) {
        for (String item : list) {
            switch(item) {
                case "vrfs":
                    listVrfs = true;
                    break;
                case "networks":
                    listNets = true;
                    break;
                default:
                    session.getConsole().println("error: unknown value for " + LST + ": " + item);
                    if (fileStream != null) {
                        fileStream.close();
                    }
                    return null;
            }
        }
    }
    // we'd normally read this directly from 'config' but
    // legacy behaviour forces to check for a connection
    // that's initiated by default at startup without
    // writing to config.
    String configHost = bgpManager.getConfigHost();
    int configPort = bgpManager.getConfigPort();
    ps.printf("%nConfiguration Server%n\t%s  %s%n\t%s  %d%n", HTSTR, configHost, PTSTR, configPort);
    Bgp config = bgpManager.getConfig();
    if (config == null) {
        if (fileStream != null) {
            fileStream.close();
        }
        return null;
    }
    AsId asId = config.getAsId();
    if (asId != null) {
        int asNum = asId.getLocalAs().intValue();
        IpAddress routerId = asId.getRouterId();
        Long spt = asId.getStalepathTime();
        Boolean afb = asId.isAnnounceFbit();
        String rid = routerId == null ? "<n/a>" : new String(routerId.getValue());
        // F-bit is always set to ON (hardcoded), in SDN even though the controller is down
        // forwarding state shall be retained.
        String bit = "ON";
        GracefulRestart gracefulRestart = config.getGracefulRestart();
        if (gracefulRestart != null) {
            spt = gracefulRestart.getStalepathTime();
        }
        ps.printf("%nBGP Router%n");
        ps.printf("\t%-15s  %d%n\t%-15s  %s%n\t%-15s  %s%n\t%-15s  %s%n", ASSTR, asNum, RISTR, rid, SPSTR, spt == null || spt == 0 ? "default" : spt.toString(), FBSTR, bit);
    }
    Logging logging = config.getLogging();
    if (logging != null) {
        ps.printf("\t%-15s  %s%n\t%-15s  %s%n", LFSTR, logging.getFile(), LLSTR, logging.getLevel());
    }
    List<Neighbors> neighbors = config.getNeighbors();
    if (neighbors != null) {
        ps.printf("%nNeighbors%n");
        for (Neighbors nbr : neighbors) {
            ps.printf("\t%s%n\t\t%-16s  %d%n", nbr.getAddress().getValue(), ASSTR, nbr.getRemoteAs().intValue());
            EbgpMultihop en = nbr.getEbgpMultihop();
            if (en != null) {
                ps.printf("\t\t%-16s  %d%n", EBSTR, en.getNhops().intValue());
            }
            UpdateSource us = nbr.getUpdateSource();
            if (us != null) {
                ps.printf("\t\t%-16s  %s%n", USSTR, us.getSourceIp().getValue());
            }
            ps.printf("\t\t%-16s  IPv4-Labeled-VPN", AFSTR);
            List<AddressFamilies> afs = nbr.getAddressFamilies();
            if (afs != null) {
                for (AddressFamilies af : afs) {
                    // Should not print "unknown" in vpnv4 case
                    if (!(af.getSafi().intValue() == 5 && af.getAfi().intValue() == 1)) {
                        if (af.getSafi().intValue() == 4 && af.getAfi().intValue() == 1) {
                            ps.printf(" %s", "IPv4-Labeled-Unicast");
                        } else if (af.getSafi().intValue() == 5 && af.getAfi().intValue() == 2) {
                            ps.printf(" %s", "IPv6-Labeled-VPN");
                        } else if (af.getSafi().intValue() == 6) {
                            ps.printf(" %s", "Ethernet-VPN");
                        } else {
                            ps.printf(" %s", "Unknown");
                        }
                    }
                }
            }
            ps.printf("%n");
        }
    }
    if (listVrfs) {
        List<Vrfs> vrfs = config.getVrfs();
        if (vrfs != null) {
            ps.printf("%nVRFs%n");
            for (Vrfs vrf : vrfs) {
                ps.printf("\t%s%n", vrf.getRd());
                ps.printf("\t\t%s  ", IRSTR);
                for (String rt : vrf.getImportRts()) {
                    ps.printf("%s ", rt);
                }
                ps.printf("%n\t\t%s  ", ERSTR);
                for (String rt : vrf.getExportRts()) {
                    ps.printf("%s ", rt);
                }
                for (AddressFamiliesVrf adf : vrf.getAddressFamiliesVrf()) {
                    ps.printf("%n\t\tafi %d safi %d", adf.getAfi(), adf.getSafi());
                }
                ps.printf("%n");
            }
        }
    }
    if (listNets) {
        List<Networks> ln = config.getNetworks();
        if (ln != null) {
            ps.printf("%nNetworks%n");
            for (Networks net : ln) {
                String rd = net.getRd();
                String pfxlen = net.getPrefixLen();
                String nh = net.getNexthop().getValue();
                int label = net.getLabel().intValue();
                ps.printf("\t%s%n\t\t%-7s  %s%n\t\t%-7s  %s%n\t\t%-7s  %d%n", pfxlen, RDSTR, rd, NHSTR, nh, LBSTR, label);
            }
        }
    }
    List<Multipath> mp = config.getMultipath();
    List<VrfMaxpath> vrfm = config.getVrfMaxpath();
    if (mp != null) {
        ps.printf("%nMultipath%n");
        for (Multipath multipath : mp) {
            int afi = multipath.getAfi().intValue();
            int safi = multipath.getSafi().intValue();
            Boolean enabled = multipath.isMultipathEnabled();
            if (enabled) {
                if (afi == 1 && safi == 5) {
                    ps.printf("\t%-16s  %s%n%n", AFSTR, "vpnv4");
                } else if (afi == 2 && safi == 5) {
                    ps.printf("\t%-16s  %s%n%n", AFSTR, "vpnv6");
                } else if (afi == 3 && safi == 6) {
                    ps.printf("\t%-16s  %s%n%n", AFSTR, "evpn");
                } else {
                    ps.printf("\t%-16s  %s%n%n", AFSTR, "Unknown");
                }
                if (vrfm != null) {
                    ps.printf("\t%-16s  %s%n", RDSTR, MPSTR);
                    for (VrfMaxpath vrfMaxpath : vrfm) {
                        String rd = vrfMaxpath.getRd();
                        int maxpath = vrfMaxpath.getMaxpaths();
                        ps.printf("\t%-16s  %d%n", rd, maxpath);
                    }
                }
            }
        }
    }
    if (fileStream != null) {
        fileStream.close();
    }
    return null;
}
Also used : Vrfs(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.Vrfs) Networks(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.Networks) FileNotFoundException(java.io.FileNotFoundException) EbgpMultihop(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.neighbors.EbgpMultihop) AsId(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.AsId) AddressFamilies(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.neighbors.AddressFamilies) UpdateSource(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.neighbors.UpdateSource) Logging(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.Logging) PrintStream(java.io.PrintStream) Neighbors(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.Neighbors) Bgp(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp) VrfMaxpath(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.VrfMaxpath) Multipath(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.Multipath) GracefulRestart(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.GracefulRestart) AddressFamiliesVrf(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.vrfs.AddressFamiliesVrf) IpAddress(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress)

Example 83 with Bgp

use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp in project netvirt by opendaylight.

the class Neighbor method doExecute.

@Override
protected Object doExecute() {
    switch(action) {
        case "add":
            if (nbrIp == null) {
                session.getConsole().println("error: " + IP + " needed");
                return null;
            }
            if (bgpManager.getConfig() == null) {
                session.getConsole().println("error: Bgp config is not present");
                return null;
            }
            long asn = 0;
            int hops = 0;
            if (!Commands.isValid(session.getConsole(), nbrIp, Commands.Validators.IPADDR, IP)) {
                return null;
            }
            if (asNum != null) {
                if (!Commands.isValid(session.getConsole(), asNum, Commands.Validators.INT, AS)) {
                    return null;
                } else {
                    asn = Long.parseLong(asNum);
                }
            }
            TcpMd5SignaturePasswordType md5Secret = null;
            if (md5PasswordOption != null) {
                try {
                    md5Secret = new TcpMd5SignaturePasswordType(md5PasswordOption);
                } catch (IllegalArgumentException e) {
                    session.getConsole().println(new StringBuilder("error: invalid MD5 password ").append(e.getMessage()).toString());
                    return null;
                }
            }
            bgpManager.addNeighbor(nbrIp, asn, md5Secret);
            if (multiHops != null) {
                if (!Commands.isValid(session.getConsole(), multiHops, Commands.Validators.INT, MH)) {
                    return null;
                } else {
                    hops = Integer.parseInt(multiHops);
                }
                bgpManager.addEbgpMultihop(nbrIp, hops);
            }
            if (srcIp != null) {
                if (!Commands.isValid(session.getConsole(), srcIp, Commands.Validators.IPADDR, US)) {
                    return null;
                }
                bgpManager.addUpdateSource(nbrIp, srcIp);
            }
            if (addrFamily != null) {
                if (!addrFamily.equals("lu") && !addrFamily.equals("vpnv4") && !addrFamily.equals("vpnv6") && !addrFamily.equals("evpn")) {
                    session.getConsole().println("error: " + AF + " must be lu/evpn/vpnv4/vpnv6 ");
                    return null;
                }
                af_afi afi;
                af_safi safi;
                if (addrFamily.equals("vpnv6")) {
                    afi = af_afi.findByValue(2);
                    safi = af_safi.findByValue(5);
                } else if (addrFamily.equals("evpn")) {
                    afi = af_afi.findByValue(3);
                    safi = af_safi.findByValue(6);
                } else if (addrFamily.equals("lu")) {
                    afi = af_afi.findByValue(1);
                    safi = af_safi.findByValue(4);
                } else {
                    // vpnv4
                    afi = af_afi.findByValue(1);
                    safi = af_safi.findByValue(5);
                }
                bgpManager.addAddressFamily(nbrIp, afi, safi);
            }
            break;
        case "del":
            if (nbrIp == null) {
                session.getConsole().println("error: " + IP + " needed");
                return null;
            }
            if (!Commands.isValid(session.getConsole(), nbrIp, Commands.Validators.IPADDR, IP)) {
                return null;
            }
            if (asNum != null || multiHops != null || srcIp != null || addrFamily != null) {
                session.getConsole().println("note: some option(s) not needed; ignored");
            }
            bgpManager.deleteNeighbor(nbrIp);
            break;
        default:
            return usage();
    }
    return null;
}
Also used : org.opendaylight.netvirt.bgpmanager.thrift.gen.af_safi(org.opendaylight.netvirt.bgpmanager.thrift.gen.af_safi) org.opendaylight.netvirt.bgpmanager.thrift.gen.af_afi(org.opendaylight.netvirt.bgpmanager.thrift.gen.af_afi) TcpMd5SignaturePasswordType(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.TcpMd5SignaturePasswordType)

Example 84 with Bgp

use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp in project netvirt by opendaylight.

the class Router method doExecute.

@Override
protected Object doExecute() {
    switch(action) {
        case "add":
            // check: rtr already running?
            long asn = 0;
            int stalePath = 0;
            boolean fb = false;
            if (asNum == null) {
                session.getConsole().println("error: " + AS + " is needed");
                return null;
            }
            if (!Commands.isValid(session.getConsole(), asNum, Commands.Validators.INT, AS)) {
                return null;
            }
            asn = Long.parseLong(asNum);
            if (rid != null && !Commands.isValid(session.getConsole(), rid, Commands.Validators.IPADDR, RID)) {
                return null;
            }
            if (spt != null) {
                if (!Commands.isValid(session.getConsole(), spt, Commands.Validators.INT, SP)) {
                    return null;
                } else {
                    stalePath = Integer.parseInt(spt);
                }
            }
            if (fbit != null) {
                switch(fbit) {
                    case "on":
                        fb = true;
                        break;
                    case "off":
                        fb = false;
                        break;
                    default:
                        session.getConsole().println("error: " + FB + " must be on or off");
                        return null;
                }
            }
            bgpManager.startBgp(asn, rid, stalePath, fb);
            break;
        case "del":
            // check: nothing to stop?
            if (asNum != null || rid != null || spt != null || fbit != null) {
                session.getConsole().println("note: option(s) not needed; ignored");
            }
            Bgp conf = bgpManager.getConfig();
            if (conf == null) {
                session.getConsole().println("error : no BGP configs present");
                break;
            }
            List<Neighbors> nbrs = conf.getNeighbors();
            if (nbrs != null && nbrs.size() > 0) {
                session.getConsole().println("error: all BGP congiguration must be deleted " + "before stopping the router instance");
                break;
            }
            bgpManager.stopBgp();
            break;
        default:
            return usage();
    }
    return null;
}
Also used : Neighbors(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.Neighbors) Bgp(org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp)

Example 85 with Bgp

use of org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp in project netvirt by opendaylight.

the class VpnToDpnListener method programVpnScfFlowsOnDpn.

private void programVpnScfFlowsOnDpn(BigInteger dpnId, String vpnName, String rd, int addOrRemove) {
    String addedOrRemovedTxt = addOrRemove == NwConstants.ADD_FLOW ? " added " : " removed";
    LOG.debug("DpnToVpn {} event received: dpn={}  vpn={}  rd={}", addedOrRemovedTxt, dpnId, vpnName, rd);
    if (dpnId == null) {
        LOG.warn("Dpn to Vpn {} event received, but no DPN specified in event", addedOrRemovedTxt);
        return;
    }
    if (vpnName == null) {
        LOG.warn("Dpn to Vpn {} event received, but no VPN specified in event", addedOrRemovedTxt);
        return;
    }
    if (rd == null) {
        LOG.warn("Dpn to Vpn {} event received, but no RD specified in event", addedOrRemovedTxt);
        return;
    }
    try {
        Optional<VpnToPseudoPortData> optVpnToPseudoPortInfo = VpnServiceChainUtils.getVpnPseudoPortData(broker, rd);
        if (!optVpnToPseudoPortInfo.isPresent()) {
            LOG.debug("Dpn to Vpn {} event received: Could not find VpnPseudoLportTag for VPN name={}  rd={}", addedOrRemovedTxt, vpnName, rd);
            return;
        }
        VpnToPseudoPortData vpnToPseudoPortInfo = optVpnToPseudoPortInfo.get();
        // Vpn2Scf flows (LFIB + LportDispatcher)
        // TODO: Should we filter out by bgp origin
        List<VrfEntry> allVpnVrfEntries = VpnServiceChainUtils.getAllVrfEntries(broker, rd);
        vpnScHandler.programVpnToScfPipelineOnDpn(dpnId, allVpnVrfEntries, vpnToPseudoPortInfo.getScfTableId(), vpnToPseudoPortInfo.getScfTag(), vpnToPseudoPortInfo.getVpnLportTag().intValue(), addOrRemove);
        // Scf2Vpn flow (LportDispatcher)
        long vpnId = addOrRemove == NwConstants.ADD_FLOW ? VpnServiceChainUtils.getVpnId(broker, vpnName) : CloudServiceChainConstants.INVALID_VPN_TAG;
        VpnServiceChainUtils.programLPortDispatcherFlowForScfToVpn(mdsalMgr, vpnId, dpnId, vpnToPseudoPortInfo.getVpnLportTag().intValue(), addOrRemove);
    } catch (ReadFailedException e) {
        LOG.error("Error retrieving the VPN to pseudo-port data for {}", rd, e);
    }
}
Also used : VrfEntry(org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry) ReadFailedException(org.opendaylight.controller.md.sal.common.api.data.ReadFailedException) VpnToPseudoPortData(org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.cloud.servicechain.state.rev160711.vpn.to.pseudo.port.list.VpnToPseudoPortData)

Aggregations

BigInteger (java.math.BigInteger)18 Test (org.junit.Test)17 ByteBuf (io.netty.buffer.ByteBuf)16 ArrayList (java.util.ArrayList)16 Uuid (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid)16 IpAddress (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress)11 VrfEntry (org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry)10 ExecutionException (java.util.concurrent.ExecutionException)9 WriteTransaction (org.opendaylight.controller.md.sal.binding.api.WriteTransaction)9 BGPDocumentedException (org.opendaylight.protocol.bgp.parser.BGPDocumentedException)9 Bgp (org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp)7 BgpParameters (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev171207.open.message.BgpParameters)7 RpcResult (org.opendaylight.yangtools.yang.common.RpcResult)7 List (java.util.List)6 Ipv4Address (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address)6 AttributesBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev171207.path.attributes.AttributesBuilder)6 ListenableFuture (com.google.common.util.concurrent.ListenableFuture)5 InstructionGotoTable (org.opendaylight.genius.mdsalutil.instructions.InstructionGotoTable)5 Neighbors (org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.Neighbors)5 Collections (java.util.Collections)4