Search in sources :

Example 6 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 7 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 8 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 9 with BgpMessage

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

the class BgpMessageEncoder method encode.

@Override
protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception {
    log.debug("BGPMessageEncoder::encode");
    if (!(msg instanceof List)) {
        log.debug("Invalid msg.");
        return msg;
    }
    @SuppressWarnings("unchecked") List<BgpMessage> msglist = (List<BgpMessage>) msg;
    ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
    log.debug("SENDING MESSAGE");
    for (BgpMessage pm : msglist) {
        pm.writeTo(buf);
    }
    HexDump.dump(buf);
    return buf;
}
Also used : BgpMessage(org.onosproject.bgpio.protocol.BgpMessage) List(java.util.List) ChannelBuffer(org.jboss.netty.buffer.ChannelBuffer)

Example 10 with BgpMessage

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

the class BgpChannelHandler method sendHandshakeOpenMessage.

/**
 * Send handshake open message to the peer.
 *
 * @throws IOException, BgpParseException
 */
private void sendHandshakeOpenMessage() throws IOException, BgpParseException {
    int bgpId;
    BgpCfg.FlowSpec flowSpec = bgpconfig.flowSpecCapability();
    BgpCfg.ConnectionType connectionType = bgpconfig.connectionType();
    boolean flowSpecStatus = false;
    boolean vpnFlowSpecStatus = false;
    boolean ipv4ConnectionTypeStatus = true;
    boolean ipv6ConnectionTypeStatus = false;
    bgpId = Ip4Address.valueOf(bgpconfig.getRouterId()).toInt();
    boolean evpnCapability = bgpconfig.getEvpnCapability();
    if (flowSpec == BgpCfg.FlowSpec.IPV4) {
        flowSpecStatus = true;
    } else if (flowSpec == BgpCfg.FlowSpec.VPNV4) {
        vpnFlowSpecStatus = true;
    } else if (flowSpec == BgpCfg.FlowSpec.IPV4_VPNV4) {
        flowSpecStatus = true;
        vpnFlowSpecStatus = true;
    }
    if (connectionType == BgpCfg.ConnectionType.IPV6) {
        ipv4ConnectionTypeStatus = false;
        ipv6ConnectionTypeStatus = true;
    } else if (connectionType == BgpCfg.ConnectionType.IPV4_IPV6) {
        ipv4ConnectionTypeStatus = true;
        ipv6ConnectionTypeStatus = true;
    } else {
        ipv4ConnectionTypeStatus = true;
        ipv6ConnectionTypeStatus = false;
    }
    BgpMessage msg = factory4.openMessageBuilder().setAsNumber((short) bgpconfig.getAsNumber()).setHoldTime(bgpconfig.getHoldTime()).setBgpId(bgpId).setLsCapabilityTlv(bgpconfig.getLsCapability()).setLargeAsCapabilityTlv(bgpconfig.getLargeASCapability()).setFlowSpecCapabilityTlv(flowSpecStatus).setVpnFlowSpecCapabilityTlv(vpnFlowSpecStatus).setEvpnCapabilityTlv(evpnCapability).setFlowSpecRpdCapabilityTlv(bgpconfig.flowSpecRpdCapability()).setIpV4UnicastCapabilityTlvSet(ipv4ConnectionTypeStatus).setIpV6UnicastCapabilityTlvSet(ipv6ConnectionTypeStatus).build();
    log.debug("Sending open message to {}", channel.getRemoteAddress());
    channel.write(Collections.singletonList(msg));
}
Also used : BgpMessage(org.onosproject.bgpio.protocol.BgpMessage) BgpCfg(org.onosproject.bgp.controller.BgpCfg)

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