blob: 44914b2362e50f26dd90e547aba880740f18a8d9 [file] [log] [blame]
/*
* Copyright 2016-present Open Networking Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.incubator.net.neighbour.impl;
import org.onlab.packet.ARP;
import org.onlab.packet.Ethernet;
import org.onlab.packet.Ip4Address;
import org.onlab.packet.IpAddress;
import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
import org.onosproject.incubator.net.intf.Interface;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.host.InterfaceIpAddress;
import java.util.Collections;
import java.util.List;
/**
* Test utilities.
*/
public final class NeighbourTestUtils {
private static final MacAddress MAC1 = MacAddress.valueOf(1);
private static final MacAddress MAC2 = MacAddress.valueOf(2);
private static final IpAddress IP2 = IpAddress.valueOf(2);
private NeighbourTestUtils() {
}
/**
* Creates an ARP request for the given target IP.
*
* @param targetIp IP address
* @return ARP request packet
*/
public static Ethernet createArpRequest(IpAddress targetIp) {
Ethernet eth = new Ethernet();
eth.setDestinationMACAddress(MAC1);
eth.setSourceMACAddress(MAC2);
eth.setEtherType(Ethernet.TYPE_ARP);
ARP arp = new ARP();
arp.setOpCode(ARP.OP_REPLY);
arp.setProtocolType(ARP.PROTO_TYPE_IP);
arp.setHardwareType(ARP.HW_TYPE_ETHERNET);
arp.setProtocolAddressLength((byte) Ip4Address.BYTE_LENGTH);
arp.setHardwareAddressLength((byte) Ethernet.DATALAYER_ADDRESS_LENGTH);
arp.setSenderHardwareAddress(MAC2.toBytes());
arp.setTargetHardwareAddress(MacAddress.ZERO.toBytes());
arp.setTargetProtocolAddress(targetIp.toOctets());
arp.setSenderProtocolAddress(IP2.toOctets());
eth.setPayload(arp);
return eth;
}
/**
* Creates an interface with the given parameters. The IP prefix is assumed
* to be a /24.
*
* @param cp connect point
* @param ip IP address
* @param mac MAC address
* @param vlan VLAN ID
* @return interface
*/
public static Interface intf(ConnectPoint cp, IpAddress ip, MacAddress mac, VlanId vlan) {
List<InterfaceIpAddress> ips =
Collections.singletonList(InterfaceIpAddress.valueOf(ip.toString() + "/24"));
return new Interface("foo", cp, ips, mac, vlan);
}
}