Search in sources :

Example 1 with BgpMessage

use of org.onosproject.bgpio.protocol.BgpMessage in project onos by opennetworkinglab.

the class MpUnReachNlriTest method mpUnReachNlriTest.

/**
 * This testcase checks BGP update message.
 */
@Test
public void mpUnReachNlriTest() throws BgpParseException {
    // BGP flow spec  Message
    byte[] flowSpecMsg = new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, 0x00, 0x2b, 0x02, 0x00, 0x00, 0x00, 0x14, (byte) 0x90, 0x0f, 0x00, 0x10, 0x00, 0x01, (byte) 0x85, 0x0c, 0x02, 0x20, (byte) 0xc0, (byte) 0xa8, 0x07, 0x36, 0x03, (byte) 0x81, 0x67, 0x04, (byte) 0x81, 0x01 };
    byte[] testFsMsg;
    ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
    buffer.writeBytes(flowSpecMsg);
    BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
    BgpMessage message;
    BgpHeader bgpHeader = new BgpHeader();
    message = reader.readFrom(buffer, bgpHeader);
    assertThat(message, instanceOf(BgpUpdateMsgVer4.class));
    ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
    message.writeTo(buf);
    int readLen = buf.writerIndex();
    testFsMsg = new byte[readLen];
    buf.readBytes(testFsMsg, 0, readLen);
    assertThat(testFsMsg, is(flowSpecMsg));
}
Also used : BgpMessage(org.onosproject.bgpio.protocol.BgpMessage) BgpUpdateMsgVer4(org.onosproject.bgpio.protocol.ver4.BgpUpdateMsgVer4) ChannelBuffer(org.jboss.netty.buffer.ChannelBuffer) Test(org.junit.Test)

Example 2 with BgpMessage

use of org.onosproject.bgpio.protocol.BgpMessage in project onos by opennetworkinglab.

the class MpReachNlriTest method mpReachNlriTest2.

/**
 * This testcase checks BGP update message.
 */
@Test
public void mpReachNlriTest2() throws BgpParseException {
    // BGP flow spec Message
    byte[] flowSpecMsg = new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, 0x00, 0x52, 0x02, 0x00, 0x00, 0x00, 0x3b, 0x40, 0x01, 0x01, 0x01, 0x40, 0x02, 0x04, 0x02, 0x01, 0x00, (byte) 0xc8, (byte) 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, (byte) 0xc0, 0x10, 0x10, (byte) 0x80, 0x06, 0x00, 0x7b, 0x40, 0x60, 0x00, 0x00, (byte) 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, (byte) 0x90, 0x0e, 0x00, 0x12, 0x00, 0x01, (byte) 0x85, 0x00, 0x00, 0x0c, 0x01, 0x1e, (byte) 0xc0, (byte) 0xa8, 0x02, 0x00, 0x02, 0x1e, (byte) 0xc0, (byte) 0xa8, 0x01, 0x00 };
    byte[] testFsMsg;
    ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
    buffer.writeBytes(flowSpecMsg);
    BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
    BgpMessage message;
    BgpHeader bgpHeader = new BgpHeader();
    message = reader.readFrom(buffer, bgpHeader);
    assertThat(message, instanceOf(BgpUpdateMsgVer4.class));
    ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
    message.writeTo(buf);
    int readLen = buf.writerIndex();
    testFsMsg = new byte[readLen];
    buf.readBytes(testFsMsg, 0, readLen);
    assertThat(testFsMsg, is(flowSpecMsg));
}
Also used : BgpMessage(org.onosproject.bgpio.protocol.BgpMessage) BgpUpdateMsgVer4(org.onosproject.bgpio.protocol.ver4.BgpUpdateMsgVer4) ChannelBuffer(org.jboss.netty.buffer.ChannelBuffer) Test(org.junit.Test)

Example 3 with BgpMessage

use of org.onosproject.bgpio.protocol.BgpMessage in project onos by opennetworkinglab.

the class BgpChannelHandler method sendKeepAliveMessage.

/**
 * Send keep alive message.
 *
 * @throws IOException when channel is disconnected
 * @throws BgpParseException while building keep alive message
 */
synchronized void sendKeepAliveMessage() throws IOException, BgpParseException {
    BgpMessage msg = factory4.keepaliveMessageBuilder().build();
    log.debug("Sending keepalive message to {}", channel.getRemoteAddress());
    channel.write(Collections.singletonList(msg));
}
Also used : BgpMessage(org.onosproject.bgpio.protocol.BgpMessage)

Example 4 with BgpMessage

use of org.onosproject.bgpio.protocol.BgpMessage in project onos by opennetworkinglab.

the class BgpChannelHandler method sendNotification.

/**
 * Send notification message to peer.
 *
 * @param errorCode error code send in notification
 * @param errorSubCode sub error code send in notification
 * @param data data to send in notification
 * @throws IOException, BgpParseException while building message
 */
private void sendNotification(byte errorCode, byte errorSubCode, byte[] data) throws IOException, BgpParseException {
    BgpMessage msg = factory4.notificationMessageBuilder().setErrorCode(errorCode).setErrorSubCode(errorSubCode).setData(data).build();
    log.debug("Sending notification message to {}", channel.getRemoteAddress());
    channel.write(Collections.singletonList(msg));
}
Also used : BgpMessage(org.onosproject.bgpio.protocol.BgpMessage)

Example 5 with BgpMessage

use of org.onosproject.bgpio.protocol.BgpMessage in project onos by opennetworkinglab.

the class BgpMessageDecoder method decode.

@Override
protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception {
    log.debug("MESSAGE IS RECEIVED.");
    if (!channel.isConnected()) {
        log.info("Channel is not connected.");
        return null;
    }
    HexDump.dump(buffer);
    BgpMessageReader<BgpMessage> reader = BgpFactories.getGenericReader();
    List<BgpMessage> msgList = (List<BgpMessage>) ctx.getAttachment();
    if (msgList == null) {
        msgList = new LinkedList<>();
    }
    try {
        while (buffer.readableBytes() > 0) {
            buffer.markReaderIndex();
            BgpHeader bgpHeader = new BgpHeader();
            BgpMessage message = reader.readFrom(buffer, bgpHeader);
            msgList.add(message);
        }
        ctx.setAttachment(null);
        return msgList;
    } catch (Exception e) {
        log.debug("Bgp protocol message decode error");
        buffer.resetReaderIndex();
        buffer.discardReadBytes();
        ctx.setAttachment(msgList);
    }
    return null;
}
Also used : BgpMessage(org.onosproject.bgpio.protocol.BgpMessage) BgpHeader(org.onosproject.bgpio.types.BgpHeader) List(java.util.List) LinkedList(java.util.LinkedList)

Aggregations

BgpMessage (org.onosproject.bgpio.protocol.BgpMessage)12 ChannelBuffer (org.jboss.netty.buffer.ChannelBuffer)5 Test (org.junit.Test)4 BgpUpdateMsgVer4 (org.onosproject.bgpio.protocol.ver4.BgpUpdateMsgVer4)4 LinkedList (java.util.LinkedList)3 ArrayList (java.util.ArrayList)2 List (java.util.List)2 As4Path (org.onosproject.bgpio.types.As4Path)2 AsPath (org.onosproject.bgpio.types.AsPath)2 BgpExtendedCommunity (org.onosproject.bgpio.types.BgpExtendedCommunity)2 BgpValueType (org.onosproject.bgpio.types.BgpValueType)2 MpReachNlri (org.onosproject.bgpio.types.MpReachNlri)2 MpUnReachNlri (org.onosproject.bgpio.types.MpUnReachNlri)2 Origin (org.onosproject.bgpio.types.Origin)2 BgpCfg (org.onosproject.bgp.controller.BgpCfg)1 BgpHeader (org.onosproject.bgpio.types.BgpHeader)1 LocalPref (org.onosproject.bgpio.types.LocalPref)1 Med (org.onosproject.bgpio.types.Med)1