Search in sources :

Example 1 with InfoReplyBuilder

use of org.onosproject.lisp.msg.protocols.LispInfoReply.InfoReplyBuilder in project onos by opennetworkinglab.

the class LispMapServer method processInfoRequest.

/**
 * Handles info-request message and replies with info-reply message.
 *
 * @param message info-request message
 * @return info-reply message
 */
LispInfoReply processInfoRequest(LispMessage message) {
    LispInfoRequest request = (LispInfoRequest) message;
    if (!checkInfoRequestAuthData(request)) {
        log.warn(INVALID_AUTHENTICATION_DATA_MSG, "Info-Request");
        return null;
    }
    NatAddressBuilder natBuilder = new NatAddressBuilder();
    try {
        LispAfiAddress msAddress = new LispIpv4Address(valueOf(InetAddress.getLocalHost()));
        natBuilder.withMsRlocAddress(msAddress);
        natBuilder.withMsUdpPortNumber((short) INFO_REPLY_PORT);
        // try to extract global ETR RLOC address from info-request
        IpAddress globalRlocIp = valueOf(request.getSender().getAddress());
        LispAfiAddress globalRlocAddress;
        if (globalRlocIp.isIp4()) {
            globalRlocAddress = new LispIpv4Address(globalRlocIp);
        } else {
            globalRlocAddress = new LispIpv6Address(globalRlocIp);
        }
        natBuilder.withGlobalEtrRlocAddress(globalRlocAddress);
        natBuilder.withEtrUdpPortNumber((short) request.getSender().getPort());
        natBuilder.withPrivateEtrRlocAddress(new LispNoAddress());
    // TODO: need to specify RTR addresses
    } catch (UnknownHostException e) {
        log.warn(FAILED_TO_FORMULATE_NAT_MSG, e);
    }
    InfoReplyBuilder replyBuilder = new DefaultInfoReplyBuilder();
    replyBuilder.withKeyId(request.getKeyId());
    replyBuilder.withAuthDataLength(valueOf(authConfig.lispAuthKeyId()).getHashLength());
    replyBuilder.withAuthKey(authConfig.lispAuthKey());
    replyBuilder.withNonce(request.getNonce());
    replyBuilder.withEidPrefix(request.getPrefix());
    replyBuilder.withMaskLength(request.getMaskLength());
    replyBuilder.withTtl(request.getTtl());
    replyBuilder.withNatLcafAddress(natBuilder.build());
    replyBuilder.withIsInfoReply(true);
    LispInfoReply reply = replyBuilder.build();
    reply.configSender(request.getSender());
    return reply;
}
Also used : NatAddressBuilder(org.onosproject.lisp.msg.types.lcaf.LispNatLcafAddress.NatAddressBuilder) DefaultInfoReplyBuilder(org.onosproject.lisp.msg.protocols.DefaultLispInfoReply.DefaultInfoReplyBuilder) LispIpv6Address(org.onosproject.lisp.msg.types.LispIpv6Address) LispInfoRequest(org.onosproject.lisp.msg.protocols.LispInfoRequest) LispNoAddress(org.onosproject.lisp.msg.types.LispNoAddress) UnknownHostException(java.net.UnknownHostException) LispIpv4Address(org.onosproject.lisp.msg.types.LispIpv4Address) InfoReplyBuilder(org.onosproject.lisp.msg.protocols.LispInfoReply.InfoReplyBuilder) DefaultInfoReplyBuilder(org.onosproject.lisp.msg.protocols.DefaultLispInfoReply.DefaultInfoReplyBuilder) IpAddress(org.onlab.packet.IpAddress) LispAfiAddress(org.onosproject.lisp.msg.types.LispAfiAddress) LispInfoReply(org.onosproject.lisp.msg.protocols.LispInfoReply)

Example 2 with InfoReplyBuilder

use of org.onosproject.lisp.msg.protocols.LispInfoReply.InfoReplyBuilder in project onos by opennetworkinglab.

the class DefaultLispInfoReplyTest method setup.

@Before
public void setup() {
    InfoReplyBuilder builder1 = new DefaultInfoReplyBuilder();
    short msUdpPortNumber1 = 80;
    short etrUdpPortNumber1 = 100;
    LispIpv4Address globalEtrRlocAddress1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.1"));
    LispIpv4Address msRlocAddress1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.2"));
    LispIpv4Address privateEtrRlocAddress1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.3"));
    LispIpv4Address address1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.4"));
    LispNatLcafAddress natLcafAddress1 = new NatAddressBuilder().withLength((short) 0).withMsUdpPortNumber(msUdpPortNumber1).withEtrUdpPortNumber(etrUdpPortNumber1).withGlobalEtrRlocAddress(globalEtrRlocAddress1).withMsRlocAddress(msRlocAddress1).withPrivateEtrRlocAddress(privateEtrRlocAddress1).build();
    reply1 = builder1.withNonce(1L).withKeyId((short) 1).withAuthKey(AUTH_KEY).withIsInfoReply(true).withMaskLength((byte) 1).withEidPrefix(address1).withNatLcafAddress(natLcafAddress1).build();
    InfoReplyBuilder builder2 = new DefaultInfoReplyBuilder();
    sameAsReply1 = builder2.withNonce(1L).withKeyId((short) 1).withAuthKey(AUTH_KEY).withIsInfoReply(true).withMaskLength((byte) 1).withEidPrefix(address1).withNatLcafAddress(natLcafAddress1).build();
    InfoReplyBuilder builder3 = new DefaultInfoReplyBuilder();
    short msUdpPortNumber2 = 81;
    short etrUdpPortNumber2 = 101;
    LispIpv4Address globalEtrRlocAddress2 = new LispIpv4Address(IpAddress.valueOf("192.168.2.1"));
    LispIpv4Address msRlocAddress2 = new LispIpv4Address(IpAddress.valueOf("192.168.2.2"));
    LispIpv4Address privateEtrRlocAddress2 = new LispIpv4Address(IpAddress.valueOf("192.168.2.3"));
    LispIpv4Address address2 = new LispIpv4Address(IpAddress.valueOf("192.168.2.4"));
    LispNatLcafAddress natLcafAddress2 = new NatAddressBuilder().withLength((short) 0).withMsUdpPortNumber(msUdpPortNumber2).withEtrUdpPortNumber(etrUdpPortNumber2).withGlobalEtrRlocAddress(globalEtrRlocAddress2).withMsRlocAddress(msRlocAddress2).withPrivateEtrRlocAddress(privateEtrRlocAddress2).build();
    reply2 = builder3.withNonce(2L).withKeyId((short) 2).withAuthKey(AUTH_KEY).withIsInfoReply(true).withMaskLength((byte) 1).withEidPrefix(address2).withNatLcafAddress(natLcafAddress2).build();
}
Also used : DefaultInfoReplyBuilder(org.onosproject.lisp.msg.protocols.DefaultLispInfoReply.DefaultInfoReplyBuilder) NatAddressBuilder(org.onosproject.lisp.msg.types.lcaf.LispNatLcafAddress.NatAddressBuilder) DefaultInfoReplyBuilder(org.onosproject.lisp.msg.protocols.DefaultLispInfoReply.DefaultInfoReplyBuilder) InfoReplyBuilder(org.onosproject.lisp.msg.protocols.LispInfoReply.InfoReplyBuilder) LispIpv4Address(org.onosproject.lisp.msg.types.LispIpv4Address) LispNatLcafAddress(org.onosproject.lisp.msg.types.lcaf.LispNatLcafAddress) Before(org.junit.Before)

Aggregations

DefaultInfoReplyBuilder (org.onosproject.lisp.msg.protocols.DefaultLispInfoReply.DefaultInfoReplyBuilder)2 InfoReplyBuilder (org.onosproject.lisp.msg.protocols.LispInfoReply.InfoReplyBuilder)2 LispIpv4Address (org.onosproject.lisp.msg.types.LispIpv4Address)2 NatAddressBuilder (org.onosproject.lisp.msg.types.lcaf.LispNatLcafAddress.NatAddressBuilder)2 UnknownHostException (java.net.UnknownHostException)1 Before (org.junit.Before)1 IpAddress (org.onlab.packet.IpAddress)1 LispInfoReply (org.onosproject.lisp.msg.protocols.LispInfoReply)1 LispInfoRequest (org.onosproject.lisp.msg.protocols.LispInfoRequest)1 LispAfiAddress (org.onosproject.lisp.msg.types.LispAfiAddress)1 LispIpv6Address (org.onosproject.lisp.msg.types.LispIpv6Address)1 LispNoAddress (org.onosproject.lisp.msg.types.LispNoAddress)1 LispNatLcafAddress (org.onosproject.lisp.msg.types.lcaf.LispNatLcafAddress)1