/**
* Caret for combination of Error-type and Error-value
*/
- private static class BGPErrorIdentifier {
+ static class BGPErrorIdentifier {
private final short code;
private final short subcode;
as = new ShortAsNumber((long) buffer.readUnsignedShort());
value = ByteArray.readBytes(buffer, AS_LOCAL_ADMIN_LENGTH);
if (comm.getCommSubType() == ROUTE_TARGET_SUBTYPE) {
- c = new RouteTargetExtendedCommunityCaseBuilder().setRouteTargetExtendedCommunity(
- new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(as).setLocalAdministrator(value).build()).build();
+ c = new RouteTargetExtendedCommunityCaseBuilder().setRouteTargetExtendedCommunity(new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(as).setLocalAdministrator(value).build()).build();
} else if (comm.getCommSubType() == ROUTE_ORIGIN_SUBTYPE) {
- c = new RouteOriginExtendedCommunityCaseBuilder().setRouteOriginExtendedCommunity(
- new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(as).setLocalAdministrator(value).build()).build();
+ c = new RouteOriginExtendedCommunityCaseBuilder().setRouteOriginExtendedCommunity(new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(as).setLocalAdministrator(value).build()).build();
} else {
throw new BGPDocumentedException("Could not parse Extended Community subtype: " + comm.getCommSubType(), BGPError.OPT_ATTR_ERROR);
}
ByteArray.readBytes(buffer, INET_LOCAL_ADMIN_LENGTH)).build()).build();
break;
case OPAQUE_TYPE_TRANS:
- c = new OpaqueExtendedCommunityCaseBuilder().setOpaqueExtendedCommunity(
- new OpaqueExtendedCommunityBuilder().setTransitive(false).setValue(ByteArray.readAllBytes(buffer)).build()).build();
+ c = new OpaqueExtendedCommunityCaseBuilder().setOpaqueExtendedCommunity(new OpaqueExtendedCommunityBuilder().setTransitive(false).setValue(ByteArray.readAllBytes(buffer)).build()).build();
break;
case OPAQUE_TYPE_NON_TRANS:
- c = new OpaqueExtendedCommunityCaseBuilder().setOpaqueExtendedCommunity(
- new OpaqueExtendedCommunityBuilder().setTransitive(true).setValue(ByteArray.readAllBytes(buffer)).build()).build();
+ c = new OpaqueExtendedCommunityCaseBuilder().setOpaqueExtendedCommunity(new OpaqueExtendedCommunityBuilder().setTransitive(true).setValue(ByteArray.readAllBytes(buffer)).build()).build();
break;
default:
throw new BGPDocumentedException("Could not parse Extended Community type: " + comm.getCommType(), BGPError.OPT_ATTR_ERROR);
package org.opendaylight.protocol.bgp.parser.spi.pojo;
import com.google.common.base.Preconditions;
-
import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
import org.opendaylight.protocol.util.Values;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
}
RouteEncoder getRibOut() {
- return ribOut;
+ return this.ribOut;
}
static boolean isNone(final Object o) {
- return o == NLRIENTRY_NONE_VALUE;
+ return NLRIENTRY_NONE_VALUE.equals(o);
}
}
\ No newline at end of file
private final RIBTables tables;
private final BlockingQueue<Peer> peers;
private final DataBroker dataBroker;
- private final Thread scheduler = new Thread(new Runnable() {
+
+ private final Runnable scheduler = new Runnable() {
@Override
public void run() {
try {
LOG.info("Scheduler thread was interrupted.", e);
}
}
- });
+ };
public RIBImpl(final RibId ribId, final AsNumber localAs, final Ipv4Address localBgpId, final RIBExtensionConsumerContext extensions,
final BGPDispatcher dispatcher, final ReconnectStrategyFactory tcpStrategyFactory,
LOG.debug("Registering this peer {} to RIB-Out {}", peer, this.ribOuts);
try {
this.peers.put(peer);
- this.scheduler.run();
+ new Thread(this.scheduler).start();
} catch (final InterruptedException e) {
//
}
}
}
}
- } catch (ReadFailedException e) {
+ } catch (final ReadFailedException e) {
//no-op
}
return 0;
Mockito.doNothing().when(this.future).addListener(Mockito.any(Runnable.class), Mockito.any(Executor.class));
Mockito.doReturn(this.transWrite).when(this.chain).newWriteOnlyTransaction();
Mockito.doReturn(this.eventLoop).when(this.channel).eventLoop();
+ Mockito.doReturn("channel").when(this.channel).toString();
Mockito.doAnswer(new Answer<Object>() {
@Override
//create new peer so that it gets advertized routes from RIB
try (final BGPPeer testingPeer = new BGPPeer("testingPeer", this.r)) {
testingPeer.onSessionUp(this.session);
- assertEquals(4, this.routes.size());
+ assertEquals(2, this.routes.size());
assertEquals(1, testingPeer.getBgpPeerState().getSessionEstablishedCount().intValue());
assertEquals(1, testingPeer.getBgpPeerState().getRouteTable().size());
assertNotNull(testingPeer.getBgpSessionState());
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.net.InetAddresses;
+import java.io.Serializable;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
*
* @param <T> Actual object state reference
*/
-public final class BGPObjectComparator implements Comparator<RIBEntryData<?, ?, ?>> {
+public final class BGPObjectComparator implements Comparator<RIBEntryData<?, ?, ?>>, Serializable {
+
+ private static final long serialVersionUID = 3299599519482155374L;
+
private final AsNumber ourAS;
public BGPObjectComparator(final AsNumber ourAs) {
public static List<byte[]> parseMessages(final InputStream is) throws IOException {
Preconditions.checkNotNull(is);
- try (InputStreamReader isr = new InputStreamReader(is)) {
+ try (InputStreamReader isr = new InputStreamReader(is, "UTF-8")) {
return parseMessages(CharStreams.toString(isr));
} finally {
is.close();
return new DataChangeCounterCloseable(counter, registration);
}
- private final class DataChangeCounterCloseable implements AutoCloseable {
+ private static final class DataChangeCounterCloseable implements AutoCloseable {
private final TopologyDataChangeCounter inner;
private final ListenerRegistration<DataChangeListener> registration;
regs.add(context.registerObjectParser(PCEPCloseObjectParser.CLASS, PCEPCloseObjectParser.TYPE, closeParser));
regs.add(context.registerObjectSerializer(CClose.class, closeParser));
+ registerExtensionsObjectParsers(regs, context, tlvReg, viTlvReg, eroSubReg);
+ }
+
+ private void registerExtensionsObjectParsers(final List<AutoCloseable> regs, final PCEPExtensionProviderContext context,
+ final TlvRegistry tlvReg, final VendorInformationTlvRegistry viTlvReg, final EROSubobjectRegistry eroSubReg) {
final PCEPPathKeyObjectParser pathKeyParser = new PCEPPathKeyObjectParser(eroSubReg);
regs.add(context.registerObjectParser(PCEPPathKeyObjectParser.CLASS, PCEPPathKeyObjectParser.TYPE, pathKeyParser));
regs.add(context.registerObjectSerializer(
if (objects == null) {
throw new IllegalArgumentException("Passed list can't be null.");
}
-
if (objects.isEmpty()) {
throw new PCEPDeserializerException("Error message is empty.");
}
final List<Errors> errorObjects = new ArrayList<>();
final PcerrMessageBuilder b = new PcerrMessageBuilder();
- Object obj;
+ Object obj = objects.get(0);
State state = State.Init;
- obj = objects.get(0);
if (obj instanceof ErrorObject) {
final ErrorObject o = (ErrorObject) obj;
errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
state = State.ErrorIn;
- objects.remove(0);
} else if (obj instanceof Rp) {
final Rp o = (Rp) obj;
if (o.isProcessingRule()) {
}
requestParameters.add(new RpsBuilder().setRp(o).build());
state = State.RpIn;
- objects.remove(0);
}
+ if (state.equals(State.Init)) {
+ throw new PCEPDeserializerException("At least one PCEPErrorObject is mandatory.");
+ }
+ objects.remove(0);
while (!objects.isEmpty()) {
obj = objects.get(0);
-
if (obj instanceof UnknownObject) {
return new PcerrBuilder().setPcerrMessage(b.setErrors(((UnknownObject) obj).getErrors()).build()).build();
}
-
switch (state) {
case ErrorIn:
state = State.Open;
objects.remove(0);
}
}
-
if (errorObjects.isEmpty()) {
throw new PCEPDeserializerException("At least one PCEPErrorObject is mandatory.");
}
-
if (!objects.isEmpty()) {
throw new PCEPDeserializerException("Unprocessed Objects: " + objects);
}
if (!requestParameters.isEmpty()) {
b.setErrorType(new RequestCaseBuilder().setRequest(new RequestBuilder().setRps(requestParameters).build()).build());
}
-
return new PcerrBuilder().setPcerrMessage(b.setErrors(errorObjects).build()).build();
}
}
} else {
final SuccessCase s = (SuccessCase) reply.getResult();
- if (s != null) {
+ if (s != null && s.getSuccess() != null) {
for (final Paths p : s.getSuccess().getPaths()) {
serializeObject(p.getEro(), buffer);
serializeObject(p.getLspa(), buffer);
}
serializeObject(p.getIro(), buffer);
}
+ serializeVendorInformationObjects(s.getSuccess().getVendorInformationObject(), buffer);
}
- serializeVendorInformationObjects(s.getSuccess().getVendorInformationObject(), buffer);
}
}
}
import org.opendaylight.protocol.pcep.spi.AbstractObjectWithTlvsParser;
import org.opendaylight.protocol.pcep.spi.ObjectUtil;
import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
+import org.opendaylight.protocol.pcep.spi.PCEPErrors;
import org.opendaylight.protocol.pcep.spi.TlvRegistry;
import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
@Override
public void addTlv(final ErrorObjectBuilder builder, final Tlv tlv) {
- if (tlv instanceof ReqMissing && builder.getType() == 7) {
+ if (tlv instanceof ReqMissing && builder.getType() == PCEPErrors.SYNC_PATH_COMP_REQ_MISSING.getErrorType()) {
builder.setTlvs(new TlvsBuilder().setReqMissing((ReqMissing) tlv).build());
}
}
/**
* Caret for combination of Error-type and Error-value
*/
- private static class PCEPErrorIdentifier {
+ static class PCEPErrorIdentifier {
private final short type;
private final short value;
private static final int KA_TO_DEADTIMER_RATIO = 4;
+ private static final int KA_DEFAULT = 30;
+
public static void main(final String[] args) throws UnknownHostException, InterruptedException, ExecutionException {
if (args.length == 0 || (args.length == 1 && args[0].equalsIgnoreCase("--help"))) {
LOG.info(Main.USAGE);
}
InetSocketAddress address = null;
- int keepAliveValue = 30;
+ int keepAliveValue = KA_DEFAULT;
int deadTimerValue = 0;
boolean stateful = false;
boolean active = false;
}
@Override
- public SessionState getSessionState() {
+ public synchronized SessionState getSessionState() {
return this.listenerState.getSessionState(this.session);
}
public static List<byte[]> parseMessages(final InputStream is) throws IOException {
Preconditions.checkNotNull(is);
- try (InputStreamReader isr = new InputStreamReader(is)) {
+ try (InputStreamReader isr = new InputStreamReader(is, "UTF-8")) {
return parseMessages(CharStreams.toString(isr));
}
}