@Override public List<DataObject> translate(SwitchConnectionDistinguisher cookie, SessionContext sc, OfHeader msg) { if (msg instanceof ErrorMessage) { ErrorMessage message = (ErrorMessage) msg; List<DataObject> list = new CopyOnWriteArrayList<DataObject>(); if (LOG.isDebugEnabled()) { String hexData = "n/a"; if (message.getData() != null) { hexData = ByteUtil.bytesToHexstring(message.getData(), " "); } LOG.debug(" Error Message received: type={}[{}], code={}[{}], data=[{}] ", message.getType(), message.getTypeString(), message.getCode(), message.getCodeString(), hexData); } // TODO -- Augmentation is not handled ErrorType type = decodeErrorType(message.getType()); NodeRef node = new NodeRef( InventoryDataServiceUtil.identifierFromDatapathId( sc.getFeatures().getDatapathId())); list.add(getGranularNodeErrors(message, type, node)); return list; } else { LOG.error("Message is not of Error Message "); return Collections.emptyList(); } }
@Override public void onErrorMessage(ErrorMessage arg0) { if (connectionRegistry.getFeaturesOutput(switchConnection) != null) { BigInteger datapathId = this.connectionRegistry.getDatapathID(this.switchConnection); initSession(connectionRegistry.getFeaturesOutput(switchConnection)); sendNotification(arg0, arg0.getImplementedInterface().getName()); shimRelay.sendOpenFlowMessageToCore(coreConnector, arg0, arg0.getVersion(), arg0.getXid(), datapathId.longValue(), 0); } }
@Override public void serialize(ErrorMessage message, ByteBuf outBuffer) { ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH); outBuffer.writeShort(message.getType()); outBuffer.writeShort(message.getCode()); byte[] data = message.getData(); if (data != null) { outBuffer.writeBytes(data); } ByteBufUtils.updateOFHeaderLength(outBuffer); } }
/** * @param message error message * @param errorType error type * @param node reference to node, that sent the error message * @return translated error message of general type (OF-1.0) */ @Override public org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorMessage getGranularNodeErrors(ErrorMessage message, ErrorType errorType, NodeRef node){ NodeErrorNotificationBuilder nodeErrBuilder = new NodeErrorNotificationBuilder(); nodeErrBuilder.setTransactionId(new TransactionId(BigInteger.valueOf(message.getXid()))); nodeErrBuilder.setType(errorType); nodeErrBuilder.setCode(message.getCode()); nodeErrBuilder.setNode(node); if (message.getData() != null) { nodeErrBuilder.setData(new String(message.getData())); } return nodeErrBuilder.build(); }
@Override public org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorMessage getGranularNodeErrors(ErrorMessage message, ErrorType errorType, NodeRef node){ org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorMessage outErrorMessage = null; TransactionId txnId = new TransactionId(BigInteger.valueOf(message.getXid())); builder.setTransactionId(txnId); builder.setType(errorType); builder.setCode(message.getCode()); builder.setNode(node); if (message.getData() != null) { builder.setData(new String(message.getData())); builder.setTransactionId(txnId); builder.setType(errorType); builder.setCode(message.getCode()); builder.setNode(node); if (message.getData() != null) { builder.setData(new String(message.getData())); builder.setTransactionId(txnId); builder.setType(errorType); builder.setCode(message.getCode()); builder.setNode(node); if (message.getData() != null) { builder.setData(new String(message.getData())); builder.setTransactionId(txnId); builder.setType(errorType); builder.setCode(message.getCode()); builder.setNode(node);